| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 from datetime import timedelta | 5 from datetime import timedelta |
| 6 import logging | 6 import logging |
| 7 import random | 7 import random |
| 8 import textwrap | 8 import textwrap |
| 9 | 9 |
| 10 from common import appengine_util | 10 from common import appengine_util |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 # Get MasterFlakeAnalysis success list corresponding to parameters. | 395 # Get MasterFlakeAnalysis success list corresponding to parameters. |
| 396 master_flake_analysis = MasterFlakeAnalysis.GetVersion( | 396 master_flake_analysis = MasterFlakeAnalysis.GetVersion( |
| 397 master_name, builder_name, master_build_number, step_name, test_name, | 397 master_name, builder_name, master_build_number, step_name, test_name, |
| 398 version=version_number) | 398 version=version_number) |
| 399 | 399 |
| 400 flake_swarming_task = FlakeSwarmingTask.Get( | 400 flake_swarming_task = FlakeSwarmingTask.Get( |
| 401 master_name, builder_name, run_build_number, step_name, test_name) | 401 master_name, builder_name, run_build_number, step_name, test_name) |
| 402 | 402 |
| 403 # Don't call another pipeline if we fail. | 403 # Don't call another pipeline if we fail. |
| 404 if flake_swarming_task.status == analysis_status.ERROR: | 404 if flake_swarming_task.status == analysis_status.ERROR: |
| 405 # TODO(lijeffrey): Implement more detailed error detection and reporting, | 405 # Report the last flake swarming task's error that it encountered. |
| 406 # such as timeouts, dead bots, etc. | |
| 407 # TODO(lijeffrey): Another neighboring swarming task may be needed in this | 406 # TODO(lijeffrey): Another neighboring swarming task may be needed in this |
| 408 # one's place instead of failing altogether. | 407 # one's place instead of failing altogether. |
| 409 error = { | 408 error = flake_swarming_task.error or { |
| 410 'error': 'Swarming task failed', | 409 'error': 'Swarming task failed', |
| 411 'message': 'Swarming task failed' | 410 'message': 'The last swarming task did not complete as expected' |
| 412 } | 411 } |
| 412 |
| 413 _UpdateAnalysisStatusUponCompletion( | 413 _UpdateAnalysisStatusUponCompletion( |
| 414 master_flake_analysis, analysis_status.ERROR, error) | 414 master_flake_analysis, analysis_status.ERROR, error) |
| 415 return | 415 return |
| 416 | 416 |
| 417 # Figure out what build_number to trigger a swarming rerun on next, if any. | 417 # Figure out what build_number to trigger a swarming rerun on next, if any. |
| 418 if (flakiness_algorithm_results_dict['stabled_out'] and | 418 if (flakiness_algorithm_results_dict['stabled_out'] and |
| 419 flakiness_algorithm_results_dict['flaked_out']): | 419 flakiness_algorithm_results_dict['flaked_out']): |
| 420 next_run = sequential_next_run( | 420 next_run = sequential_next_run( |
| 421 master_flake_analysis, flakiness_algorithm_results_dict) | 421 master_flake_analysis, flakiness_algorithm_results_dict) |
| 422 else: | 422 else: |
| (...skipping 13 matching lines...) Expand all Loading... |
| 436 master_name, builder_name, next_run, step_name, test_name, | 436 master_name, builder_name, next_run, step_name, test_name, |
| 437 version_number, master_build_number, | 437 version_number, master_build_number, |
| 438 flakiness_algorithm_results_dict=flakiness_algorithm_results_dict, | 438 flakiness_algorithm_results_dict=flakiness_algorithm_results_dict, |
| 439 manually_triggered=manually_triggered, | 439 manually_triggered=manually_triggered, |
| 440 use_nearby_neighbor=use_nearby_neighbor, | 440 use_nearby_neighbor=use_nearby_neighbor, |
| 441 step_size=(run_build_number - next_run)) | 441 step_size=(run_build_number - next_run)) |
| 442 pipeline_job.target = appengine_util.GetTargetNameForModule( | 442 pipeline_job.target = appengine_util.GetTargetNameForModule( |
| 443 constants.WATERFALL_BACKEND) | 443 constants.WATERFALL_BACKEND) |
| 444 pipeline_job.StartOffPSTPeakHours( | 444 pipeline_job.StartOffPSTPeakHours( |
| 445 queue_name=self.queue_name or constants.DEFAULT_QUEUE) | 445 queue_name=self.queue_name or constants.DEFAULT_QUEUE) |
| OLD | NEW |