Chromium Code Reviews| Index: appengine/findit/waterfall/test/schedule_test_try_job_pipeline_test.py |
| diff --git a/appengine/findit/waterfall/test/schedule_test_try_job_pipeline_test.py b/appengine/findit/waterfall/test/schedule_test_try_job_pipeline_test.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..940a8875369d5374598f9946ec5059a2cfb82bcc |
| --- /dev/null |
| +++ b/appengine/findit/waterfall/test/schedule_test_try_job_pipeline_test.py |
| @@ -0,0 +1,93 @@ |
| +# 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. |
| + |
| +import mock |
| + |
| +from common.waterfall import buildbucket_client |
| +from common.waterfall import failure_type |
| +from model.wf_try_job import WfTryJob |
| +from model.wf_try_job_data import WfTryJobData |
| +from waterfall import schedule_test_try_job_pipeline |
| +from waterfall import schedule_try_job_pipeline |
| +from waterfall.schedule_test_try_job_pipeline import ( |
| + ScheduleTestTryJobPipeline) |
| +from waterfall.test import wf_testcase |
| + |
| + |
| +class ScheduleTestTryjobPipelineTest(wf_testcase.WaterfallTestCase): |
| + |
| + def testGetTargetedTests(self): |
| + reliable_tests = { |
| + 'a on platform': ('a', ['t1', 't2']), |
| + 'b on platform': ('b', []) |
| + } |
| + targeted_tests = schedule_test_try_job_pipeline._GetTargetedTests( |
| + reliable_tests) |
| + expected_targeted_tests = { |
| + 'a': ['t1', 't2'] |
| + } |
| + self.assertEqual(targeted_tests, expected_targeted_tests) |
| + |
| + def testGetBuildPropertiesForTestFailure(self): |
| + master_name = 'm' |
| + builder_name = 'b' |
| + build_number = 1 |
| + |
| + expected_properties = { |
| + 'recipe': 'findit/chromium/test', |
| + 'good_revision': 1, |
| + 'bad_revision': 2, |
| + 'target_mastername': master_name, |
| + 'target_testername': 'b', |
| + 'referenced_build_url': ('https://build.chromium.org/p/%s/builders' |
| + '/%s/builds/%s') % ( |
| + master_name, builder_name, build_number) |
| + } |
| + try_job_pipeline = ScheduleTestTryJobPipeline() |
| + properties = try_job_pipeline._GetBuildProperties( |
| + master_name, builder_name, build_number, 1, 2, failure_type.TEST, None) |
| + |
| + self.assertEqual(properties, expected_properties) |
| + |
| + @mock.patch.object(schedule_try_job_pipeline, 'buildbucket_client') |
| + def testSuccessfullyScheduleNewTryJobForTest(self, mock_other): |
| + master_name = 'm' |
| + builder_name = 'b' |
| + build_number = 223 |
| + good_revision = 'rev1' |
| + bad_revision = 'rev2' |
| + targeted_tests = ['a on platform', ['a', ['test1', 'test2']]] |
|
Sharu Jiang
2016/08/09 23:22:15
If there are multiply platforms:
targeted_tests =
chanli
2016/08/11 01:27:54
No. In test we are only testing this pipeline so w
|
| + build_id = '1' |
| + |
| + response = { |
| + 'build': { |
| + 'id': build_id, |
| + 'url': 'url', |
| + 'status': 'SCHEDULED', |
| + } |
| + } |
| + results = [(None, buildbucket_client.BuildbucketBuild(response['build']))] |
| + mock_other.TriggerTryJobs.return_value = results |
| + |
| + WfTryJob.Create(master_name, builder_name, build_number).put() |
| + |
| + try_job_pipeline = ScheduleTestTryJobPipeline() |
| + try_job_id = try_job_pipeline.run( |
| + master_name, builder_name, build_number, good_revision, bad_revision, |
| + failure_type.TEST, None, targeted_tests) |
| + |
| + try_job = WfTryJob.Get(master_name, builder_name, build_number) |
| + self.assertEqual(try_job_id, build_id) |
| + self.assertEqual(try_job.test_results[-1]['try_job_id'], build_id) |
| + |
| + try_job_data = WfTryJobData.Get(try_job_id) |
| + self.assertIsNotNone(try_job_data) |
| + self.assertEqual(try_job_data.master_name, master_name) |
| + self.assertEqual(try_job_data.builder_name, builder_name) |
| + self.assertEqual(try_job_data.build_number, build_number) |
| + self.assertEqual( |
| + try_job_data.try_job_type, |
| + failure_type.GetDescriptionForFailureType(failure_type.TEST)) |
| + self.assertFalse(try_job_data.has_compile_targets) |
| + self.assertFalse(try_job_data.has_heuristic_results) |