Chromium Code Reviews| Index: scripts/slave/recipes/findit/chromium/compile.py |
| diff --git a/scripts/slave/recipes/findit/chromium/compile.py b/scripts/slave/recipes/findit/chromium/compile.py |
| index ef3a929ca8c3fb03ba89949f96645f978e2b3738..5700967230e9ba9b0f2e7833600c35311368553f 100644 |
| --- a/scripts/slave/recipes/findit/chromium/compile.py |
| +++ b/scripts/slave/recipes/findit/chromium/compile.py |
| @@ -10,15 +10,15 @@ from recipe_engine.recipe_api import Property |
| DEPS = [ |
| - 'chromium', |
| - 'chromium_tests', |
| - 'findit', |
| - 'gclient', |
| - 'recipe_engine/json', |
| - 'recipe_engine/path', |
| - 'recipe_engine/properties', |
| - 'recipe_engine/python', |
| - 'recipe_engine/step', |
| + 'chromium', |
| + 'chromium_tests', |
| + 'findit', |
| + 'gclient', |
| + 'recipe_engine/json', |
| + 'recipe_engine/path', |
| + 'recipe_engine/properties', |
| + 'recipe_engine/python', |
| + 'recipe_engine/step', |
| ] |
| @@ -52,10 +52,8 @@ def _run_compile_at_revision(api, target_mastername, target_buildername, |
| # Checkout code at the given revision to recompile. |
| bot_config = api.chromium_tests.create_bot_config_object( |
| target_mastername, target_buildername) |
| - bot_update_step, bot_db = \ |
| - api.chromium_tests.prepare_checkout( |
| - bot_config, |
| - root_solution_revision=revision) |
| + bot_update_step, bot_db = api.chromium_tests.prepare_checkout( |
| + bot_config, root_solution_revision=revision) |
| # TODO(http://crbug.com/560991): if compile targets are provided, check |
| # whether they exist and then use analyze to compile the impacted ones by |
| @@ -114,34 +112,49 @@ def RunSteps(api, target_mastername, target_buildername, |
| root_solution_revision=bad_revision) |
| revisions_to_check = api.findit.revisions_between(good_revision, bad_revision) |
| - results = [] |
| + compile_results = {} |
| + try_job_metadata = { |
| + 'regression_range_size': len(revisions_to_check) |
| + } |
| + report = { |
| + 'result': compile_results, |
| + 'metadata': try_job_metadata, |
| + } |
| + |
| try: |
| for current_revision in revisions_to_check: |
| + last_revision = None |
| + last_result = None |
| compile_result = _run_compile_at_revision( |
| api, target_mastername, target_buildername, |
| current_revision, requested_compile_targets, use_analyze) |
| - results.append([current_revision, compile_result]) |
| + compile_results[current_revision] = compile_result |
| + last_revision = current_revision |
| + last_result = compile_result |
|
stgao
2016/01/29 16:48:25
We don't have to save the ``last_result``, right?
lijeffrey
2016/01/29 20:02:41
Done.
|
| if compile_result == CompileResult.FAILED: |
| # TODO(http://crbug.com/560991): if compile targets are specified, |
| # compile may fail because those targets are added in a later revision. |
| - break # Found the culprit, no need to check later revisions. |
| + break # Found the culprit, no need to check later revisions. |
| finally: |
| # Report the result. |
| # TODO(http://crbug.com/563807): use api.python.succeeding_step instead. |
| step_result = api.python.inline( |
| 'report', 'import sys; sys.exit(0)', add_python_log=False) |
| if (not requested_compile_targets and |
| - results and results[-1][1] == CompileResult.FAILED): |
| - step_result.presentation.step_text = '<br/>Culprit: %s' % results[-1][0] |
| + compile_results and |
| + last_revision and |
| + last_result == CompileResult.FAILED): |
| + step_result.presentation.step_text = ( |
| + '<br/>Culprit: %s' % last_revision) |
| step_result.presentation.logs.setdefault('result', []).append( |
| - json.dumps(results, indent=2)) |
| + json.dumps(report, indent=2)) |
| # Set the result as a build property too, so that it will be reported back |
| # to Buildbucket and Findit will pull from there instead of buildbot master. |
| - step_result.presentation.properties['result'] = results |
| + step_result.presentation.properties['result'] = report |
| - return results |
| + return report |
| def GenTests(api): |
| @@ -171,11 +184,11 @@ def GenTests(api): |
| props() + |
| api.override_step_data('test r1.read test spec', |
| api.json.output({ |
| - 'Linux Builder': { |
| - 'additional_compile_targets': [ |
| - 'base_unittests', |
| - ], |
| - } |
| + 'Linux Builder': { |
| + 'additional_compile_targets': [ |
| + 'base_unittests', |
| + ], |
| + } |
| })) |
| ) |
| @@ -226,12 +239,12 @@ def GenTests(api): |
| props(use_analyze=True) + |
| api.override_step_data('test r1.read test spec', |
| api.json.output({ |
| - 'Linux Builder': { |
| - 'additional_compile_targets': [ |
| - 'a', 'a_run', |
| - 'b', 'b_run', |
| - ], |
| - } |
| + 'Linux Builder': { |
| + 'additional_compile_targets': [ |
| + 'a', 'a_run', |
| + 'b', 'b_run', |
| + ], |
| + } |
| })) + |
| api.override_step_data( |
| 'test r1.analyze', |