Chromium Code Reviews| Index: appengine/findit/waterfall/flake/schedule_flake_try_job_pipeline.py |
| diff --git a/appengine/findit/waterfall/flake/schedule_flake_try_job_pipeline.py b/appengine/findit/waterfall/flake/schedule_flake_try_job_pipeline.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..98bba7eb408aec6710010f1974e384d829e8cf2a |
| --- /dev/null |
| +++ b/appengine/findit/waterfall/flake/schedule_flake_try_job_pipeline.py |
| @@ -0,0 +1,63 @@ |
| +# Copyright 2016 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +from model.flake.flake_try_job import FlakeTryJob |
| +from model.flake.flake_try_job_data import FlakeTryJobData |
| +from waterfall import waterfall_config |
| +from waterfall.schedule_try_job_pipeline import ScheduleTryJobPipeline |
| + |
| + |
| +class ScheduleFlakeTryJobPipeline(ScheduleTryJobPipeline): |
| + """A pipeline for scheduling a new flake try job for a flaky test.""" |
| + |
| + # Arguments number differs from overridden method - pylint: disable=W0221 |
| + def _GetBuildProperties( |
| + self, master_name, builder_name, step_name, test_name, git_hash): |
| + iterations = waterfall_config.GetCheckFlakeSettings().get( |
| + 'iterations_to_rerun', 100) |
|
RobertoCN
2016/12/29 00:19:23
This is already defaulted to 100 in the recipe. I
lijeffrey
2016/12/29 00:29:51
Done.
|
| + |
| + return { |
| + 'recipe': 'findit/chromium/flake', |
| + 'target_mastername': master_name, |
| + 'target_testername': builder_name, |
| + 'test_revision': git_hash, |
|
RobertoCN
2016/12/29 00:19:23
The key has been renamed to just 'revision'
lijeffrey
2016/12/29 00:29:51
Done.
|
| + 'flakiness_tests': iterations, |
|
RobertoCN
2016/12/29 00:19:23
Renamed to 'test_repeat_count' with a default valu
lijeffrey
2016/12/29 00:29:51
Done.
|
| + 'tests': { |
| + step_name: [test_name] |
| + } |
| + } |
| + |
| + def _CreateTryJobData(self, build_id, try_job_key): |
| + try_job_data = FlakeTryJobData.Create(build_id) |
| + try_job_data.try_job_key = try_job_key |
| + try_job_data.put() |
| + |
| + # Arguments number differs from overridden method - pylint: disable=W0221 |
| + def run(self, master_name, builder_name, step_name, test_name, git_hash): |
| + """ |
| + Args: |
| + master_name (str): The master name of a flaky test. |
| + builder_name (str): the builder name of a flaky test. |
| + step_name (str): The name of the step the flaky test occurred on. |
| + test_name (str): The name of the flaky test. |
| + git_hash (str): The git hash of the revision to run the try job against. |
| + |
| + Returns: |
| + build_id (str): Id of the triggered try job. |
| + """ |
| + properties = self._GetBuildProperties( |
| + master_name, builder_name, step_name, test_name, git_hash) |
| + build_id = self._TriggerTryJob(master_name, builder_name, properties, {}) |
| + |
| + try_job = FlakeTryJob.Get( |
| + master_name, builder_name, step_name, test_name, git_hash) |
| + try_job.flake_results.append({'try_job_id': build_id}) |
| + try_job.try_job_ids.append(build_id) |
| + try_job.put() |
| + |
| + # Create a corresponding Flake entity to capture as much metadata as early |
| + # as possible. |
| + self._CreateTryJobData(build_id, try_job.key) |
| + |
| + return build_id |