| 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'], |
| 161 swarming_task.parameters['iterations_to_rerun']) |
| OLD | NEW |