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 import time | 5 import time |
6 | 6 |
7 from testing_utils import testing | |
8 | |
9 from model import wf_analysis_status | 7 from model import wf_analysis_status |
10 from model.wf_swarming_task import WfSwarmingTask | 8 from model.wf_swarming_task import WfSwarmingTask |
11 from waterfall import swarming_util | 9 from waterfall import swarming_util |
| 10 from waterfall import trigger_swarming_task_pipeline |
12 from waterfall import waterfall_config | 11 from waterfall import waterfall_config |
13 from waterfall.swarming_task_request import SwarmingTaskRequest | 12 from waterfall.swarming_task_request import SwarmingTaskRequest |
14 from waterfall import trigger_swarming_task_pipeline | 13 from waterfall.test import wf_testcase |
15 from waterfall.trigger_swarming_task_pipeline import TriggerSwarmingTaskPipeline | 14 from waterfall.trigger_swarming_task_pipeline import TriggerSwarmingTaskPipeline |
16 | 15 |
17 | 16 |
18 _MOCK_SWARMING_SETTINGS = { | 17 class TriggerSwarmingTaskPipelineTest(wf_testcase.WaterfallTestCase): |
19 'task_timeout_hours': 23, | |
20 'server_query_interval_seconds': 60, | |
21 'iterations_to_rerun': 10, | |
22 'server_host': 'chromium-swarm.appspot.com', | |
23 'default_request_priority': 150, | |
24 'isolated_storage_url': 'isolateserver.storage.googleapis.com', | |
25 'isolated_server': 'https://isolateserver.appspot.com', | |
26 'request_expiration_hours': 20 | |
27 } | |
28 | |
29 | |
30 class TriggerSwarmingTaskPipelineTest(testing.AppengineTestCase): | |
31 | |
32 def _MockGetSwarmingSettings(self): | |
33 def MockedGetSwarmingSettings(): | |
34 return _MOCK_SWARMING_SETTINGS | |
35 self.mock(waterfall_config, 'GetSwarmingSettings', | |
36 MockedGetSwarmingSettings) | |
37 | 18 |
38 def testNoNewSwarmingTaskIsNeeded(self): | 19 def testNoNewSwarmingTaskIsNeeded(self): |
39 master_name = 'm' | 20 master_name = 'm' |
40 builder_name = 'b' | 21 builder_name = 'b' |
41 build_number = 1 | 22 build_number = 1 |
42 step_name = 's' | 23 step_name = 's' |
43 tests = ['a.b'] | 24 tests = ['a.b'] |
44 | 25 |
45 def MockedListSwarmingTasksDataByTags(*_): | 26 def MockedListSwarmingTasksDataByTags(*_): |
46 raise Exception('Fail.') # pragma: no cover. Should never be reached. | 27 raise Exception('Fail.') # pragma: no cover. Should never be reached. |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 def MockedTriggerSwarmingTask(new_request, *_): | 102 def MockedTriggerSwarmingTask(new_request, *_): |
122 new_request_json.update(new_request.Serialize()) | 103 new_request_json.update(new_request.Serialize()) |
123 return 'new_task_id' | 104 return 'new_task_id' |
124 self.mock(swarming_util, 'TriggerSwarmingTask', MockedTriggerSwarmingTask) | 105 self.mock(swarming_util, 'TriggerSwarmingTask', MockedTriggerSwarmingTask) |
125 | 106 |
126 def MockedGetSwarmingTaskName(*_): | 107 def MockedGetSwarmingTaskName(*_): |
127 return 'new_task_name' | 108 return 'new_task_name' |
128 self.mock(trigger_swarming_task_pipeline, '_GetSwarmingTaskName', | 109 self.mock(trigger_swarming_task_pipeline, '_GetSwarmingTaskName', |
129 MockedGetSwarmingTaskName) | 110 MockedGetSwarmingTaskName) |
130 | 111 |
131 self._MockGetSwarmingSettings() | |
132 | |
133 master_name = 'm' | 112 master_name = 'm' |
134 builder_name = 'b' | 113 builder_name = 'b' |
135 build_number = 234 | 114 build_number = 234 |
136 step_name = 'a_tests on platform' | 115 step_name = 'a_tests on platform' |
137 tests = ['a.b', 'a.c'] | 116 tests = ['a.b', 'a.c'] |
138 | 117 |
139 expected_new_request_json = { | 118 expected_new_request_json = { |
140 'expiration_secs': 3600, | 119 'expiration_secs': 3600, |
141 'name': 'new_task_name', | 120 'name': 'new_task_name', |
142 'parent_task_id': '', | 121 'parent_task_id': '', |
(...skipping 27 matching lines...) Expand all Loading... |
170 new_task_id = pipeline.run( | 149 new_task_id = pipeline.run( |
171 master_name, builder_name, build_number, step_name, tests) | 150 master_name, builder_name, build_number, step_name, tests) |
172 self.assertEqual('new_task_id', new_task_id) | 151 self.assertEqual('new_task_id', new_task_id) |
173 self.assertEqual(expected_new_request_json, new_request_json) | 152 self.assertEqual(expected_new_request_json, new_request_json) |
174 | 153 |
175 swarming_task = WfSwarmingTask.Get( | 154 swarming_task = WfSwarmingTask.Get( |
176 master_name, builder_name, build_number, step_name) | 155 master_name, builder_name, build_number, step_name) |
177 self.assertIsNotNone(swarming_task) | 156 self.assertIsNotNone(swarming_task) |
178 self.assertEqual('new_task_id', swarming_task.task_id) | 157 self.assertEqual('new_task_id', swarming_task.task_id) |
179 self.assertEqual(tests, swarming_task.parameters['tests']) | 158 self.assertEqual(tests, swarming_task.parameters['tests']) |
180 self.assertEqual(_MOCK_SWARMING_SETTINGS['iterations_to_rerun'], | 159 self.assertEqual( |
181 swarming_task.parameters['iterations_to_rerun']) | 160 waterfall_config.GetSwarmingSettings()['iterations_to_rerun'], |
182 self.assertEqual('a_tests', swarming_task.parameters['ref_name']) | 161 swarming_task.parameters['iterations_to_rerun']) |
OLD | NEW |