| Index: tools/gen_bench_expectations_from_codereview.py
|
| diff --git a/tools/gen_bench_expectations_from_codereview.py b/tools/gen_bench_expectations_from_codereview.py
|
| index cc28996fbe036e832321c3b440a591f39878bec9..f29c6526f57a25ea00bc29a01d728fc85ebd1908 100644
|
| --- a/tools/gen_bench_expectations_from_codereview.py
|
| +++ b/tools/gen_bench_expectations_from_codereview.py
|
| @@ -23,6 +23,10 @@ CHECKOUT_PATH = os.path.realpath(os.path.join(
|
| TMP_BENCH_DATA_DIR = os.path.join(CHECKOUT_PATH, '.bench_data')
|
|
|
|
|
| +TryBuild = collections.namedtuple(
|
| + 'TryBuild', ['builder_name', 'build_number', 'is_finished'])
|
| +
|
| +
|
| def find_all_builds(codereview_url):
|
| """Finds and returns information about trybot runs for a code review.
|
|
|
| @@ -33,17 +37,42 @@ def find_all_builds(codereview_url):
|
| List of NamedTuples: (builder_name, build_number, is_finished)
|
| """
|
| results = compare_codereview.CodeReviewHTMLParser().parse(codereview_url)
|
| - TryBuild = collections.namedtuple(
|
| - 'TryBuild', ['builder_name', 'build_number', 'is_finished'])
|
| try_builds = []
|
| -
|
| for builder, data in results.iteritems():
|
| if builder.startswith('Perf'):
|
| - try_builds.append(TryBuild(builder, data.url.split('/')[-1],
|
| + build_num = data.url.split('/')[-1] if data.url else None
|
| + try_builds.append(TryBuild(builder, build_num,
|
| data.status != 'pending'))
|
| return try_builds
|
|
|
|
|
| +def _all_trybots_finished(try_builds):
|
| + """Return True iff all of the given try jobs have finished.
|
| +
|
| + Args:
|
| + try_builds: list of TryBuild instances.
|
| +
|
| + Returns:
|
| + True if all of the given try jobs have finished, otherwise False.
|
| + """
|
| + for try_build in try_builds:
|
| + if not try_build.is_finished:
|
| + return False
|
| + return True
|
| +
|
| +
|
| +def all_trybots_finished(codereview_url):
|
| + """Return True iff all of the try jobs on the given codereview have finished.
|
| +
|
| + Args:
|
| + codereview_url: string; URL of the codereview.
|
| +
|
| + Returns:
|
| + True if all of the try jobs have finished, otherwise False.
|
| + """
|
| + return _all_trybots_finished(find_all_builds(codereview_url))
|
| +
|
| +
|
| def get_bench_data(builder, build_num, dest_dir):
|
| """Download the bench data for the given builder at the given build_num.
|
|
|
| @@ -94,12 +123,9 @@ def gen_bench_expectations_from_codereview(codereview_url,
|
| try_builds = find_all_builds(codereview_url)
|
|
|
| # Verify that all trybots have finished running.
|
| - if error_on_unfinished:
|
| - for try_build in try_builds:
|
| - if not try_build.is_finished:
|
| - raise TrybotNotFinishedError('%s: #%s is not finished.' % (
|
| - try_build.builder_name,
|
| - try_build.build_number))
|
| + if error_on_unfinished and not _all_trybots_finished(try_builds):
|
| + raise TrybotNotFinishedError('Not all trybots have finished.')
|
| +
|
| failed_data_pull = []
|
| failed_gen_expectations = []
|
|
|
|
|