Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: appengine/findit/waterfall/test/trigger_swarming_task_pipeline_test.py

Issue 2491473002: [Findit] Implementing swarming task error detection (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 })
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698