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

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

Issue 2477343003: [Findit] Refactoring monitor swarming task pipelines (Closed)
Patch Set: Addressing comment 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 import datetime 1 import datetime
2 2
3 from waterfall.test import wf_testcase 3 from model import analysis_status
4 from model.flake.flake_swarming_task import FlakeSwarmingTask
5 from model.wf_swarming_task import WfSwarmingTask
6 from waterfall import swarming_util
4 from waterfall.process_base_swarming_task_result_pipeline import ( 7 from waterfall.process_base_swarming_task_result_pipeline import (
5 ProcessBaseSwarmingTaskResultPipeline) 8 ProcessBaseSwarmingTaskResultPipeline)
9 from waterfall.process_flake_swarming_task_result_pipeline import (
10 ProcessFlakeSwarmingTaskResultPipeline)
11 from waterfall.process_swarming_task_result_pipeline import (
12 ProcessSwarmingTaskResultPipeline)
13 from waterfall.test import wf_testcase
14
15
16 _ISOLATED_SERVER = 'https://isolateserver.appspot.com'
17
6 18
7 class ProcessBaseSwarmingTaskResultPipelineTest(wf_testcase.WaterfallTestCase): 19 class ProcessBaseSwarmingTaskResultPipelineTest(wf_testcase.WaterfallTestCase):
20
21 def _MockedGetSwarmingTaskResultById(self, task_id, _):
22 swarming_task_results = {
23 'task_id1': {
24 'state': 'COMPLETED',
25 'exit_code': '1',
26 'tags': [
27 'priority:25',
28 'ref_name:abc_tests'
29 ],
30 'outputs_ref': {
31 'isolatedserver': _ISOLATED_SERVER,
32 'namespace': 'default-gzip',
33 'isolated': 'shard1_isolated'
34 },
35 'created_ts': '2016-02-10T18:32:06.538220',
36 'started_ts': '2016-02-10T18:32:09.090550',
37 'completed_ts': '2016-02-10T18:33:09'
38 },
39 'task_id2': {
40 'state': 'TIMED_OUT',
41 'outputs_ref': None
42 }
43 }
44
45 mocked_result = swarming_task_results[task_id]
46 return mocked_result
47
8 def setUp(self): 48 def setUp(self):
9 super(ProcessBaseSwarmingTaskResultPipelineTest, self).setUp() 49 super(ProcessBaseSwarmingTaskResultPipelineTest, self).setUp()
10 self.pipeline = ProcessBaseSwarmingTaskResultPipeline() 50 self.pipeline = ProcessBaseSwarmingTaskResultPipeline()
11 self.master_name = 'm' 51 self.master_name = 'm'
12 self.builder_name = 'b' 52 self.builder_name = 'b'
13 self.build_number = 121 53 self.build_number = 121
14 self.step_name = 'abc_tests on platform' 54 self.step_name = 'abc_tests on platform'
15 self.test_name = 'test' 55 self.test_name = 'test'
56 self.mock(swarming_util, 'GetSwarmingTaskResultById',
57 self._MockedGetSwarmingTaskResultById)
16 58
17 def testConvertDateTime(self): 59 def testConvertDateTime(self):
18 fmt = '%Y-%m-%dT%H:%M:%S.%f' 60 fmt = '%Y-%m-%dT%H:%M:%S.%f'
19 time_string = '2016-02-10T18:32:06.538220' 61 time_string = '2016-02-10T18:32:06.538220'
20 test_time = self.pipeline._ConvertDateTime(time_string) 62 test_time = self.pipeline._ConvertDateTime(time_string)
21 time = datetime.datetime.strptime(time_string, fmt) 63 time = datetime.datetime.strptime(time_string, fmt)
22 self.assertEqual(test_time, time) 64 self.assertEqual(test_time, time)
23 65
24 def testConvertDateTimeNone(self): 66 def testConvertDateTimeNone(self):
25 time_string = '' 67 time_string = ''
26 test_time = self.pipeline._ConvertDateTime(time_string) 68 test_time = self.pipeline._ConvertDateTime(time_string)
27 self.assertIsNone(test_time) 69 self.assertIsNone(test_time)
28 70
29 def testConvertDateTimefailure(self): 71 def testConvertDateTimefailure(self):
30 with self.assertRaises(ValueError): 72 with self.assertRaises(ValueError):
31 self.pipeline._ConvertDateTime('abc') 73 self.pipeline._ConvertDateTime('abc')
74
75 def testMonitorSwarmingTaskTimeOut(self):
76 # Override swarming config settings to force a timeout.
77 override_swarming_settings = {
78 'task_timeout_hours': -1
79 }
80 self.UpdateUnitTestConfigSettings(
81 'swarming_settings', override_swarming_settings)
82
83 task = FlakeSwarmingTask.Create(
84 self.master_name, self.builder_name, self.build_number, self.step_name,
85 self.test_name)
86 task.task_id = 'task_id1'
87 task.put()
88
89 pipeline = ProcessFlakeSwarmingTaskResultPipeline()
90 step_name, task_info = pipeline.run(
91 self.master_name, self.builder_name, self.build_number, self.step_name,
92 'task_id1', self.build_number, self.test_name, 1)
93 self.assertEqual('abc_tests', task_info)
94 self.assertEqual(self.step_name, step_name)
95
96 task = FlakeSwarmingTask.Get(
97 self.master_name, self.builder_name, self.build_number, self.step_name,
98 self.test_name)
99 self.assertEqual(analysis_status.ERROR, task.status)
100 self.assertEqual({}, task.tests_statuses)
101
102 def testMonitorSwarmingTaskNotRunning(self):
103 task = WfSwarmingTask.Create(
104 self.master_name, self.builder_name,
105 self.build_number, self.step_name)
106 task.task_id = 'task_id2'
107 task.put()
108
109 pipeline = ProcessSwarmingTaskResultPipeline()
110 step_name, task_info = pipeline.run(
111 self.master_name, self.builder_name,
112 self.build_number, self.step_name)
113
114 self.assertEqual(self.step_name, step_name)
115 self.assertIsNone(task_info[0])
116 self.assertEqual([], task_info[1])
117
118 task = WfSwarmingTask.Get(
119 self.master_name, self.builder_name, self.build_number, self.step_name)
120
121 self.assertEqual(analysis_status.ERROR, task.status)
122 self.assertEqual({}, task.tests_statuses)
123 self.assertEqual({}, task.classified_tests)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698