| 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 model import analysis_status | 7 from model import analysis_status |
| 8 from model.wf_swarming_task import WfSwarmingTask | 8 from model.wf_swarming_task import WfSwarmingTask |
| 9 from waterfall import swarming_util | 9 from waterfall import swarming_util |
| 10 from waterfall import trigger_swarming_task_pipeline | 10 from waterfall import trigger_swarming_task_pipeline |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 }, | 94 }, |
| 95 'tags': ['master:a', 'buildername:b', 'name:a_tests'], | 95 'tags': ['master:a', 'buildername:b', 'name:a_tests'], |
| 96 'user': 'user', | 96 'user': 'user', |
| 97 }) | 97 }) |
| 98 self.mock(swarming_util, 'GetSwarmingTaskRequest', | 98 self.mock(swarming_util, 'GetSwarmingTaskRequest', |
| 99 MockedGetSwarmingTaskRequest) | 99 MockedGetSwarmingTaskRequest) |
| 100 | 100 |
| 101 new_request_json = {} | 101 new_request_json = {} |
| 102 def MockedTriggerSwarmingTask(new_request, *_): | 102 def MockedTriggerSwarmingTask(new_request, *_): |
| 103 new_request_json.update(new_request.Serialize()) | 103 new_request_json.update(new_request.Serialize()) |
| 104 return 'new_task_id' | 104 return 'new_task_id', None |
| 105 self.mock(swarming_util, 'TriggerSwarmingTask', MockedTriggerSwarmingTask) | 105 self.mock(swarming_util, 'TriggerSwarmingTask', MockedTriggerSwarmingTask) |
| 106 | 106 |
| 107 def MockedGetSwarmingTaskName(*_): | 107 def MockedGetSwarmingTaskName(*_): |
| 108 return 'new_task_name' | 108 return 'new_task_name' |
| 109 self.mock(trigger_swarming_task_pipeline, '_GetSwarmingTaskName', | 109 self.mock(trigger_swarming_task_pipeline, '_GetSwarmingTaskName', |
| 110 MockedGetSwarmingTaskName) | 110 MockedGetSwarmingTaskName) |
| 111 | 111 |
| 112 master_name = 'm' | 112 master_name = 'm' |
| 113 builder_name = 'b' | 113 builder_name = 'b' |
| 114 build_number = 234 | 114 build_number = 234 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 self.assertEqual(expected_new_request_json, new_request_json) | 152 self.assertEqual(expected_new_request_json, new_request_json) |
| 153 | 153 |
| 154 swarming_task = WfSwarmingTask.Get( | 154 swarming_task = WfSwarmingTask.Get( |
| 155 master_name, builder_name, build_number, step_name) | 155 master_name, builder_name, build_number, step_name) |
| 156 self.assertIsNotNone(swarming_task) | 156 self.assertIsNotNone(swarming_task) |
| 157 self.assertEqual('new_task_id', swarming_task.task_id) | 157 self.assertEqual('new_task_id', swarming_task.task_id) |
| 158 self.assertEqual(tests, swarming_task.parameters['tests']) | 158 self.assertEqual(tests, swarming_task.parameters['tests']) |
| 159 self.assertEqual( | 159 self.assertEqual( |
| 160 waterfall_config.GetSwarmingSettings()['iterations_to_rerun'], | 160 waterfall_config.GetSwarmingSettings()['iterations_to_rerun'], |
| 161 swarming_task.parameters['iterations_to_rerun']) | 161 swarming_task.parameters['iterations_to_rerun']) |
| 162 |
| 163 def testTriggerANewSwarmingTaskError(self): |
| 164 def MockedDownloadSwarmingTaskData(*_): |
| 165 return [{'task_id': '1'}, {'task_id': '2'}] |
| 166 self.mock(swarming_util, 'ListSwarmingTasksDataByTags', |
| 167 MockedDownloadSwarmingTaskData) |
| 168 |
| 169 def MockedGetSwarmingTaskRequest(ref_task_id, *_): |
| 170 self.assertEqual('1', ref_task_id) |
| 171 return SwarmingTaskRequest.Deserialize({ |
| 172 'expiration_secs': 3600, |
| 173 'name': 'ref_task_request', |
| 174 'parent_task_id': 'pti', |
| 175 'priority': 25, |
| 176 'properties': { |
| 177 'command': 'cmd', |
| 178 'dimensions': [{'key': 'k', 'value': 'v'}], |
| 179 'env': [ |
| 180 {'key': 'a', 'value': '1'}, |
| 181 {'key': 'GTEST_SHARD_INDEX', 'value': '1'}, |
| 182 {'key': 'GTEST_TOTAL_SHARDS', 'value': '5'}, |
| 183 ], |
| 184 'execution_timeout_secs': 3600, |
| 185 'extra_args': ['--flag=value', '--gtest_filter=d.f'], |
| 186 'grace_period_secs': 30, |
| 187 'idempotent': True, |
| 188 'inputs_ref': {'a': 1}, |
| 189 'io_timeout_secs': 1200, |
| 190 }, |
| 191 'tags': ['master:a', 'buildername:b', 'name:a_tests'], |
| 192 'user': 'user', |
| 193 }) |
| 194 self.mock(swarming_util, 'GetSwarmingTaskRequest', |
| 195 MockedGetSwarmingTaskRequest) |
| 196 |
| 197 new_request_json = {} |
| 198 def MockedTriggerSwarmingTask(new_request, *_): |
| 199 new_request_json.update(new_request.Serialize()) |
| 200 return None, {'code': swarming_util.UNKNOWN, 'message': 'error'} |
| 201 self.mock(swarming_util, 'TriggerSwarmingTask', MockedTriggerSwarmingTask) |
| 202 |
| 203 master_name = 'm' |
| 204 builder_name = 'b' |
| 205 build_number = 234 |
| 206 step_name = 'a_tests on platform' |
| 207 tests = ['a.b', 'a.c'] |
| 208 |
| 209 pipeline = TriggerSwarmingTaskPipeline() |
| 210 pipeline.run(master_name, builder_name, build_number, step_name, tests) |
| 211 |
| 212 swarming_task = WfSwarmingTask.Get( |
| 213 master_name, builder_name, build_number, step_name) |
| 214 self.assertIsNotNone(swarming_task) |
| 215 self.assertEqual(swarming_task.error, |
| 216 { |
| 217 'code': swarming_util.UNKNOWN, |
| 218 'message': 'error' |
| 219 }) |
| OLD | NEW |