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

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

Issue 2526963002: [Findit] Implement retry within swarming_util.py when making server calls (Closed)
Patch Set: Self-review Created 4 years 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 datetime 5 import datetime
6 import mock 6 import mock
7 7
8 from model import analysis_status 8 from model import analysis_status
9 from model.flake.flake_swarming_task import FlakeSwarmingTask 9 from model.flake.flake_swarming_task import FlakeSwarmingTask
10 from model.flake.master_flake_analysis import MasterFlakeAnalysis 10 from model.flake.master_flake_analysis import MasterFlakeAnalysis
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 'flaky_tests': ['TestSuite1.test2', 'TestSuite1.test1'], 140 'flaky_tests': ['TestSuite1.test2', 'TestSuite1.test1'],
141 'reliable_tests': ['TestSuite1.test3'] 141 'reliable_tests': ['TestSuite1.test3']
142 } 142 }
143 143
144 144
145 class ProcessBaseSwarmingTaskResultPipelineTest(wf_testcase.WaterfallTestCase): 145 class ProcessBaseSwarmingTaskResultPipelineTest(wf_testcase.WaterfallTestCase):
146 146
147 def _MockedGetSwarmingTaskResultById(self, task_id, _): 147 def _MockedGetSwarmingTaskResultById(self, task_id, _):
148 return _SWARMING_TASK_RESULTS[task_id], None 148 return _SWARMING_TASK_RESULTS[task_id], None
149 149
150 def _MockedGetSwarmingTaskFailureLog(self, *_):
151 return _SAMPLE_FAILURE_LOG, None
152
153 def setUp(self): 150 def setUp(self):
154 super(ProcessBaseSwarmingTaskResultPipelineTest, self).setUp() 151 super(ProcessBaseSwarmingTaskResultPipelineTest, self).setUp()
155 self.pipeline = ProcessBaseSwarmingTaskResultPipeline() 152 self.pipeline = ProcessBaseSwarmingTaskResultPipeline()
156 self.master_name = 'm' 153 self.master_name = 'm'
157 self.builder_name = 'b' 154 self.builder_name = 'b'
158 self.build_number = 121 155 self.build_number = 121
159 self.step_name = 'abc_tests on platform' 156 self.step_name = 'abc_tests on platform'
160 self.test_name = 'test' 157 self.test_name = 'test'
161 self.mock(swarming_util, 'GetSwarmingTaskResultById', 158 self.mock(swarming_util, 'GetSwarmingTaskResultById',
162 self._MockedGetSwarmingTaskResultById) 159 self._MockedGetSwarmingTaskResultById)
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 task.task_id = 'task_id2' 250 task.task_id = 'task_id2'
254 task.put() 251 task.put()
255 252
256 pipeline = ProcessSwarmingTaskResultPipeline() 253 pipeline = ProcessSwarmingTaskResultPipeline()
257 pipeline.run( 254 pipeline.run(
258 self.master_name, self.builder_name, self.build_number, self.step_name) 255 self.master_name, self.builder_name, self.build_number, self.step_name)
259 256
260 self.assertEqual(analysis_status.ERROR, task.status) 257 self.assertEqual(analysis_status.ERROR, task.status)
261 self.assertEqual(task.error, {'code': 1, 'message': 'error'}) 258 self.assertEqual(task.error, {'code': 1, 'message': 'error'})
262 259
260 @mock.patch.object(swarming_util, 'GetSwarmingTaskResultById',
261 return_value=(_SWARMING_TASK_RESULTS['task_id1'],
262 {'code': 1, 'message': 'error'}))
263 @mock.patch.object(swarming_util, 'GetSwarmingTaskFailureLog',
264 return_value=(_SAMPLE_FAILURE_LOG, None))
265 def testMonitorSwarmingTaskGetSwarmingTaskResultIdErrorRecovered(self, *_):
266 task = WfSwarmingTask.Create(
267 self.master_name, self.builder_name,
268 self.build_number, self.step_name)
269 task.task_id = 'task_id1'
270 task.put()
271
272 pipeline = ProcessSwarmingTaskResultPipeline()
273 pipeline.run(
274 self.master_name, self.builder_name, self.build_number, self.step_name)
275
276 self.assertEqual(analysis_status.COMPLETED, task.status)
277 self.assertEqual(task.error, {'code': 1, 'message': 'error'})
278
279 @mock.patch.object(swarming_util, 'GetSwarmingTaskFailureLog',
280 return_value=(_SAMPLE_FAILURE_LOG,
281 {'code': 1, 'message': 'error'}))
282 def testMonitorSwarmingTaskGetSwarmingTaskFailureLogErrorRecovered(self, _):
283 task = WfSwarmingTask.Create(
284 self.master_name, self.builder_name,
285 self.build_number, self.step_name)
286 task.task_id = 'task_id1'
287 task.put()
288
289 pipeline = ProcessSwarmingTaskResultPipeline()
290 pipeline.run(
291 self.master_name, self.builder_name, self.build_number, self.step_name)
292
293 self.assertEqual(analysis_status.COMPLETED, task.status)
294 self.assertEqual(task.error, {'code': 1, 'message': 'error'})
295
263 @mock.patch.object(swarming_util, 'GetSwarmingTaskFailureLog', 296 @mock.patch.object(swarming_util, 'GetSwarmingTaskFailureLog',
264 return_value=(None, {'code': 1, 'message': 'error'})) 297 return_value=(None, {'code': 1, 'message': 'error'}))
265 def testMonitorSwarmingTaskGetSwarmingTaskFailureLogError(self, _): 298 def testMonitorSwarmingTaskGetSwarmingTaskFailureLogError(self, _):
266 task = WfSwarmingTask.Create( 299 task = WfSwarmingTask.Create(
267 self.master_name, self.builder_name, 300 self.master_name, self.builder_name,
268 self.build_number, self.step_name) 301 self.build_number, self.step_name)
269 task.task_id = 'task_id1' 302 task.task_id = 'task_id1'
270 task.put() 303 task.put()
271 304
272 pipeline = ProcessSwarmingTaskResultPipeline() 305 pipeline = ProcessSwarmingTaskResultPipeline()
(...skipping 16 matching lines...) Expand all
289 322
290 self.assertEqual(analysis_status.ERROR, task.status) 323 self.assertEqual(analysis_status.ERROR, task.status)
291 self.assertEqual( 324 self.assertEqual(
292 task.error, 325 task.error,
293 { 326 {
294 'code': swarming_util.TASK_FAILED, 327 'code': swarming_util.TASK_FAILED,
295 'message': swarming_util.EXIT_CODE_DESCRIPTIONS[ 328 'message': swarming_util.EXIT_CODE_DESCRIPTIONS[
296 swarming_util.TASK_FAILED] 329 swarming_util.TASK_FAILED]
297 }) 330 })
298 331
299 def testProcessSwarmingTaskResultPipeline(self): 332 @mock.patch.object(swarming_util, 'GetSwarmingTaskFailureLog',
333 return_value=(_SAMPLE_FAILURE_LOG, None))
334 def testProcessSwarmingTaskResultPipeline(self, _):
300 # End to end test. 335 # End to end test.
301 self.mock(swarming_util, 'GetSwarmingTaskFailureLog',
302 self._MockedGetSwarmingTaskFailureLog)
303
304 task = WfSwarmingTask.Create( 336 task = WfSwarmingTask.Create(
305 self.master_name, self.builder_name, 337 self.master_name, self.builder_name,
306 self.build_number, self.step_name) 338 self.build_number, self.step_name)
307 task.task_id = 'task_id1' 339 task.task_id = 'task_id1'
308 task.put() 340 task.put()
309 341
310 pipeline = ProcessSwarmingTaskResultPipeline() 342 pipeline = ProcessSwarmingTaskResultPipeline()
311 step_name, task_info = pipeline.run( 343 step_name, task_info = pipeline.run(
312 self.master_name, self.builder_name, 344 self.master_name, self.builder_name,
313 self.build_number, self.step_name) 345 self.build_number, self.step_name)
314 346
315 self.assertEqual(self.step_name, step_name) 347 self.assertEqual(self.step_name, step_name)
316 self.assertEqual('abc_tests', task_info[0]) 348 self.assertEqual('abc_tests', task_info[0])
317 self.assertEqual( 349 self.assertEqual(
318 _EXPECTED_CLASSIFIED_TESTS['reliable_tests'], task_info[1]) 350 _EXPECTED_CLASSIFIED_TESTS['reliable_tests'], task_info[1])
319 351
320 task = WfSwarmingTask.Get( 352 task = WfSwarmingTask.Get(
321 self.master_name, self.builder_name, self.build_number, self.step_name) 353 self.master_name, self.builder_name, self.build_number, self.step_name)
322 354
323 self.assertEqual(analysis_status.COMPLETED, task.status) 355 self.assertEqual(analysis_status.COMPLETED, task.status)
324 self.assertEqual(_EXPECTED_TESTS_STATUS, task.tests_statuses) 356 self.assertEqual(_EXPECTED_TESTS_STATUS, task.tests_statuses)
325 self.assertEqual( 357 self.assertEqual(
326 _EXPECTED_CLASSIFIED_TESTS, task.classified_tests) 358 _EXPECTED_CLASSIFIED_TESTS, task.classified_tests)
327 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), 359 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220),
328 task.created_time) 360 task.created_time)
329 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), 361 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550),
330 task.started_time) 362 task.started_time)
331 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), 363 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9),
332 task.completed_time) 364 task.completed_time)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698