You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Alan Woodward <ro...@gmail.com> on 2019/11/22 10:28:21 UTC
Re: [lucene-solr] branch master updated: LUCENE-9054: Fix
reproduceJenkinsFailures.py to not overwrite junit XML files when retrying
Hey Hoss, this is failing precommit because there’s still a nocommit comment:
> failures[testcase] += 1
> break
> + # have to play nice with 'ant clean' ... nocommit: test this
> + newDirPath = os.path.join('repro-reports', newSubDir, dir)
> + os.makedirs(newDirPath, exist_ok=True)
> On 21 Nov 2019, at 22:28, hossman@apache.org wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> hossman pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
>
>
> The following commit(s) were added to refs/heads/master by this push:
> new 2d1e67c LUCENE-9054: Fix reproduceJenkinsFailures.py to not overwrite junit XML files when retrying
> 2d1e67c is described below
>
> commit 2d1e67c8b4adff3e1cb092fa69552529459d34d3
> Author: Chris Hostetter <ho...@apache.org>
> AuthorDate: Thu Nov 21 15:28:46 2019 -0700
>
> LUCENE-9054: Fix reproduceJenkinsFailures.py to not overwrite junit XML files when retrying
> ---
> dev-tools/scripts/reproduceJenkinsFailures.py | 25 ++++++++++++++++++++-----
> lucene/CHANGES.txt | 2 ++
> 2 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/dev-tools/scripts/reproduceJenkinsFailures.py b/dev-tools/scripts/reproduceJenkinsFailures.py
> index 037c62a..2cb86dd 100644
> --- a/dev-tools/scripts/reproduceJenkinsFailures.py
> +++ b/dev-tools/scripts/reproduceJenkinsFailures.py
> @@ -17,6 +17,7 @@ import argparse
> import http.client
> import os
> import re
> +import shutil
> import subprocess
> import sys
> import time
> @@ -211,7 +212,7 @@ def runTests(testIters, modules, tests):
> finally:
> os.chdir(cwd)
>
> -def printReport(testIters, location):
> +def printAndMoveReports(testIters, newSubDir, location):
> failures = {}
> for start in ('lucene/build', 'solr/build'):
> for (dir, _, files) in os.walk(start):
> @@ -221,12 +222,17 @@ def printReport(testIters, location):
> testcase = testOutputFileMatch.group(1)
> if testcase not in failures:
> failures[testcase] = 0
> - with open(os.path.join(dir, file), encoding='UTF-8') as testOutputFile:
> + filePath = os.path.join(dir, file)
> + with open(filePath, encoding='UTF-8') as testOutputFile:
> for line in testOutputFile:
> errorFailureMatch = reErrorFailure.search(line)
> if errorFailureMatch is not None:
> failures[testcase] += 1
> break
> + # have to play nice with 'ant clean' ... nocommit: test this
> + newDirPath = os.path.join('repro-reports', newSubDir, dir)
> + os.makedirs(newDirPath, exist_ok=True)
> + os.rename(filePath, os.path.join(newDirPath, file))
> print("[repro] Failures%s:" % location)
> for testcase in sorted(failures, key=lambda t: (failures[t],t)): # sort by failure count, then by testcase
> print("[repro] %d/%d failed: %s" % (failures[testcase], testIters, testcase))
> @@ -246,10 +252,17 @@ def main():
> localGitBranch = getLocalGitBranch()
>
> try:
> + # have to play nice with ant clean, so printAndMoveReports will move all the junit XML files here...
> + print('[repro] JUnit rest result XML files will be moved to: ./repro-reports')
> + if os.path.isdir('repro-reports'):
> + print('[repro] Deleting old ./repro-reports');
> + shutil.rmtree('repro-reports')
> prepareWorkspace(config.useGit, revisionFromLog)
> modules = groupTestsByModule(tests)
> runTests(config.testIters, modules, tests)
> - failures = printReport(config.testIters, '')
> + failures = printAndMoveReports(config.testIters, 'orig',
> + ' w/original seeds' + (' at %s' % revisionFromLog if config.useGit else ''))
> +
>
> if config.useGit:
> # Retest 100% failures at the tip of the branch
> @@ -264,7 +277,8 @@ def main():
> prepareWorkspace(True, branchFromLog)
> modules = groupTestsByModule(tests)
> runTests(config.testIters, modules, tests)
> - failures = printReport(config.testIters, ' at the tip of %s' % branchFromLog)
> + failures = printAndMoveReports(config.testIters, 'branch-tip',
> + ' original seeds at the tip of %s' % branchFromLog)
>
> # Retest 100% tip-of-branch failures without a seed
> oldTests = tests
> @@ -278,7 +292,8 @@ def main():
> prepareWorkspace(False, branchFromLog)
> modules = groupTestsByModule(tests)
> runTests(config.testIters, modules, tests)
> - printReport(config.testIters, ' at the tip of %s without a seed' % branchFromLog)
> + printAndMoveReports(config.testIters, 'branch-tip-no-seed',
> + ' at the tip of %s without a seed' % branchFromLog)
> except Exception as e:
> print('[repro] %s' % traceback.format_exc())
> sys.exit(1)
> diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
> index 740d3a1..2879aaa 100644
> --- a/lucene/CHANGES.txt
> +++ b/lucene/CHANGES.txt
> @@ -122,6 +122,8 @@ Bug Fixes
> * LUCENE-9030: Fix WordnetSynonymParser behaviour so it behaves similar to
> SolrSynonymParser. (Christoph Buescher via Alan Woodward)
>
> +* LUCENE-9054: Fix reproduceJenkinsFailures.py to not overwrite junit XML files when retrying (hossman)
> +
> Other
>
> * LUCENE-8979: Code Cleanup: Use entryset for map iteration wherever possible. - Part 2 (Koen De Groote)
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org