| Index: appengine/findit/waterfall/test/try_job_util_test.py
|
| diff --git a/appengine/findit/waterfall/test/try_job_util_test.py b/appengine/findit/waterfall/test/try_job_util_test.py
|
| index d7c671fb8b923379ec6a64a173dbbe0d4e8a217d..70041d727c98d22fc7db4bec1c7baea183ee8678 100644
|
| --- a/appengine/findit/waterfall/test/try_job_util_test.py
|
| +++ b/appengine/findit/waterfall/test/try_job_util_test.py
|
| @@ -2,8 +2,12 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +from datetime import datetime
|
| +from datetime import timedelta
|
| +
|
| from common.waterfall import failure_type
|
| from model import analysis_status
|
| +from model.wf_build import WfBuild
|
| from model.wf_try_job import WfTryJob
|
| from waterfall import try_job_util
|
| from waterfall.test import wf_testcase
|
| @@ -66,6 +70,10 @@ class TryJobUtilTest(wf_testcase.WaterfallTestCase):
|
| 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
|
| _MockRootPipeline.STARTED = False
|
|
|
| + build = WfBuild.Create(master_name, builder_name, build_number)
|
| + build.start_time = datetime.utcnow()
|
| + build.put()
|
| +
|
| failure_result_map = try_job_util.ScheduleTryJobIfNeeded(
|
| failure_info, None, None)
|
|
|
| @@ -86,11 +94,48 @@ class TryJobUtilTest(wf_testcase.WaterfallTestCase):
|
| 'failure_type': failure_type.TEST
|
| }
|
|
|
| + build = WfBuild.Create(master_name, builder_name, build_number)
|
| + build.start_time = datetime.utcnow()
|
| + build.put()
|
| +
|
| failure_result_map = try_job_util.ScheduleTryJobIfNeeded(
|
| failure_info, None, None)
|
|
|
| self.assertEqual({}, failure_result_map)
|
|
|
| + def testBailOutForTryJobWithOutdatedTimestamp(self):
|
| + master_name = 'master3'
|
| + builder_name = 'builder3'
|
| + build_number = 223
|
| + failure_info = {
|
| + 'master_name': master_name,
|
| + 'builder_name': builder_name,
|
| + 'build_number': build_number,
|
| + 'failed_steps': {
|
| + 'compile': {
|
| + 'current_failure': 221,
|
| + 'first_failure': 221,
|
| + 'last_pass': 220
|
| + }
|
| + },
|
| + }
|
| +
|
| + self.mock(
|
| + try_job_util.swarming_tasks_to_try_job_pipeline,
|
| + 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
|
| + _MockRootPipeline.STARTED = False
|
| +
|
| + yesterday = datetime.utcnow() - timedelta(days=1)
|
| + build = WfBuild.Create(master_name, builder_name, build_number)
|
| + build.start_time = yesterday
|
| + build.put()
|
| +
|
| + failure_result_map = try_job_util.ScheduleTryJobIfNeeded(
|
| + failure_info, None, None)
|
| +
|
| + self.assertFalse(_MockRootPipeline.STARTED)
|
| + self.assertEqual({}, failure_result_map)
|
| +
|
| def testNotNeedANewTryJobIfNotFirstTimeFailure(self):
|
| master_name = 'm'
|
| builder_name = 'b'
|
| @@ -132,6 +177,10 @@ class TryJobUtilTest(wf_testcase.WaterfallTestCase):
|
| 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
|
| _MockRootPipeline.STARTED = False
|
|
|
| + build = WfBuild.Create(master_name, builder_name, build_number)
|
| + build.start_time = datetime.utcnow()
|
| + build.put()
|
| +
|
| try_job_util.ScheduleTryJobIfNeeded(failure_info, None, None)
|
|
|
| self.assertFalse(_MockRootPipeline.STARTED)
|
| @@ -367,6 +416,10 @@ class TryJobUtilTest(wf_testcase.WaterfallTestCase):
|
| 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
|
| _MockRootPipeline.STARTED = False
|
|
|
| + build = WfBuild.Create(master_name, builder_name, build_number)
|
| + build.start_time = datetime.utcnow()
|
| + build.put()
|
| +
|
| try_job_util.ScheduleTryJobIfNeeded(failure_info, None, None)
|
|
|
| try_job = WfTryJob.Get(master_name, builder_name, build_number)
|
|
|