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

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

Issue 1836293002: [Findit] Adding central config test class for unit tests (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 months 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 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 process_swarming_task_result_pipeline 9 from waterfall import process_swarming_task_result_pipeline
12 from waterfall import swarming_util 10 from waterfall import swarming_util
13 from waterfall import waterfall_config
14 from waterfall.process_swarming_task_result_pipeline import ( 11 from waterfall.process_swarming_task_result_pipeline import (
15 ProcessSwarmingTaskResultPipeline) 12 ProcessSwarmingTaskResultPipeline)
13 from waterfall.test import wf_testcase
16 14
17 15
18 _ISOLATED_SERVER = 'https://isolateserver.appspot.com' 16 _ISOLATED_SERVER = 'https://isolateserver.appspot.com'
19 _ISOLATED_STORAGE_URL = 'isolateserver.storage.googleapis.com' 17 _ISOLATED_STORAGE_URL = 'isolateserver.storage.googleapis.com'
20 _SAMPLE_FAILURE_LOG = { 18 _SAMPLE_FAILURE_LOG = {
21 'per_iteration_data': [ 19 'per_iteration_data': [
22 { 20 {
23 'TestSuite1.test1': [ 21 'TestSuite1.test1': [
24 { 22 {
25 'status': 'SUCCESS', 23 'status': 'SUCCESS',
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 'total_run': 6, 97 'total_run': 6,
100 'FAILURE': 6 98 'FAILURE': 6
101 } 99 }
102 } 100 }
103 _EXPECTED_CLASSIFIED_TESTS = { 101 _EXPECTED_CLASSIFIED_TESTS = {
104 'flaky_tests': ['TestSuite1.test2', 'TestSuite1.test1'], 102 'flaky_tests': ['TestSuite1.test2', 'TestSuite1.test1'],
105 'reliable_tests': ['TestSuite1.test3'] 103 'reliable_tests': ['TestSuite1.test3']
106 } 104 }
107 105
108 106
109 _MOCK_SWARMING_SETTINGS = { 107 class ProcessSwarmingTaskResultPipelineTest(wf_testcase.WaterfallTestCase):
110 'task_timeout_hours': 23,
111 'server_query_interval_seconds': 60,
112 'iterations_to_rerun': 10,
113 'server_host': 'chromium-swarm.appspot.com',
114 'default_request_priority': 150,
115 'isolated_storage_url': 'isolateserver.storage.googleapis.com',
116 'isolated_server': 'https://isolateserver.appspot.com',
117 'request_expiration_hours': 20
118 }
119
120
121 class ProcessSwarmingTaskResultPipelineTest(testing.AppengineTestCase):
122 108
123 def _MockedGetSwarmingTaskResultById(self, task_id, _): 109 def _MockedGetSwarmingTaskResultById(self, task_id, _):
124 swarming_task_results = { 110 swarming_task_results = {
125 'task_id1': { 111 'task_id1': {
126 'state': 'COMPLETED', 112 'state': 'COMPLETED',
127 'tags': [ 113 'tags': [
128 'priority:25', 114 'priority:25',
129 'ref_name:abc_tests' 115 'ref_name:abc_tests'
130 ], 116 ],
131 'outputs_ref': { 117 'outputs_ref': {
(...skipping 13 matching lines...) Expand all
145 131
146 mocked_result = swarming_task_results[task_id] 132 mocked_result = swarming_task_results[task_id]
147 return mocked_result 133 return mocked_result
148 134
149 def setUp(self): 135 def setUp(self):
150 super(ProcessSwarmingTaskResultPipelineTest, self).setUp() 136 super(ProcessSwarmingTaskResultPipelineTest, self).setUp()
151 self.master_name = 'm' 137 self.master_name = 'm'
152 self.builder_name = 'b' 138 self.builder_name = 'b'
153 self.build_number = 121 139 self.build_number = 121
154 self.step_name = 'abc_tests on platform' 140 self.step_name = 'abc_tests on platform'
155 def _MockGetSwarmingSettings():
156 return _MOCK_SWARMING_SETTINGS
157 self.mock(waterfall_config, 'GetSwarmingSettings', _MockGetSwarmingSettings)
158 self.mock(swarming_util, 'GetSwarmingTaskResultById', 141 self.mock(swarming_util, 'GetSwarmingTaskResultById',
159 self._MockedGetSwarmingTaskResultById) 142 self._MockedGetSwarmingTaskResultById)
160 143
161 def testCheckTestsRunStatusesNoOutPutJson(self): 144 def testCheckTestsRunStatusesNoOutPutJson(self):
162 tests_statuses = ( 145 tests_statuses = (
163 process_swarming_task_result_pipeline._CheckTestsRunStatuses(None)) 146 process_swarming_task_result_pipeline._CheckTestsRunStatuses(None))
164 self.assertEqual({}, tests_statuses) 147 self.assertEqual({}, tests_statuses)
165 148
166 def testCheckTestsRunStatuses(self): 149 def testCheckTestsRunStatuses(self):
167 tests_statuses = ( 150 tests_statuses = (
(...skipping 29 matching lines...) Expand all
197 self.assertEqual(wf_analysis_status.ANALYZED, task.status) 180 self.assertEqual(wf_analysis_status.ANALYZED, task.status)
198 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses) 181 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses)
199 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, task.classified_tests) 182 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, task.classified_tests)
200 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), 183 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220),
201 task.created_time) 184 task.created_time)
202 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), 185 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550),
203 task.started_time) 186 task.started_time)
204 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), 187 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9),
205 task.completed_time) 188 task.completed_time)
206 189
207
208 def testProcessSwarmingTaskResultPipelineTaskNotRunning(self): 190 def testProcessSwarmingTaskResultPipelineTaskNotRunning(self):
209 task_id = 'task_id2' 191 task_id = 'task_id2'
210 192
211 WfSwarmingTask.Create( 193 WfSwarmingTask.Create(
212 self.master_name, self.builder_name, 194 self.master_name, self.builder_name,
213 self.build_number, self.step_name).put() 195 self.build_number, self.step_name).put()
214 196
215 pipeline = ProcessSwarmingTaskResultPipeline() 197 pipeline = ProcessSwarmingTaskResultPipeline()
216 step_name, task_info = pipeline.run( 198 step_name, task_info = pipeline.run(
217 self.master_name, self.builder_name, 199 self.master_name, self.builder_name,
218 self.build_number, self.step_name, task_id) 200 self.build_number, self.step_name, task_id)
219 201
220 self.assertEqual(self.step_name, step_name) 202 self.assertEqual(self.step_name, step_name)
221 self.assertIsNone(task_info[0]) 203 self.assertIsNone(task_info[0])
222 self.assertEqual({}, task_info[1]) 204 self.assertEqual({}, task_info[1])
223 205
224 task = WfSwarmingTask.Get( 206 task = WfSwarmingTask.Get(
225 self.master_name, self.builder_name, self.build_number, self.step_name) 207 self.master_name, self.builder_name, self.build_number, self.step_name)
226 208
227 self.assertEqual(wf_analysis_status.ERROR, task.status) 209 self.assertEqual(wf_analysis_status.ERROR, task.status)
228 self.assertEqual({}, task.tests_statuses) 210 self.assertEqual({}, task.tests_statuses)
229 self.assertEqual({}, task.classified_tests) 211 self.assertEqual({}, task.classified_tests)
230 212
231 def testProcessSwarmingTaskResultPipelineTaskTimeOut(self): 213 def testProcessSwarmingTaskResultPipelineTaskTimeOut(self):
232 task_id = 'task_id1' 214 task_id = 'task_id1'
233 old_mock_timeout = _MOCK_SWARMING_SETTINGS['task_timeout_hours'] 215
234 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = -1 216 # Override swarming config settings to force a timeout.
217 override_swarming_settings = {
218 'task_timeout_hours': -1
219 }
220 self.UpdateUnitTestConfigSettings(
221 'swarming_settings', override_swarming_settings)
235 222
236 WfSwarmingTask.Create( 223 WfSwarmingTask.Create(
237 self.master_name, self.builder_name, 224 self.master_name, self.builder_name,
238 self.build_number, self.step_name).put() 225 self.build_number, self.step_name).put()
239 226
240 pipeline = ProcessSwarmingTaskResultPipeline() 227 pipeline = ProcessSwarmingTaskResultPipeline()
241 step_name, task_info = pipeline.run( 228 step_name, task_info = pipeline.run(
242 self.master_name, self.builder_name, 229 self.master_name, self.builder_name,
243 self.build_number, self.step_name, task_id) 230 self.build_number, self.step_name, task_id)
244 231
245 self.assertEqual(self.step_name, step_name) 232 self.assertEqual(self.step_name, step_name)
246 self.assertEqual('abc_tests', task_info[0]) 233 self.assertEqual('abc_tests', task_info[0])
247 self.assertEqual({}, task_info[1]) 234 self.assertEqual({}, task_info[1])
248 235
249 task = WfSwarmingTask.Get( 236 task = WfSwarmingTask.Get(
250 self.master_name, self.builder_name, self.build_number, self.step_name) 237 self.master_name, self.builder_name, self.build_number, self.step_name)
251 238
252 self.assertEqual(wf_analysis_status.ERROR, task.status) 239 self.assertEqual(wf_analysis_status.ERROR, task.status)
253 self.assertEqual({}, task.tests_statuses) 240 self.assertEqual({}, task.tests_statuses)
254 self.assertEqual({}, task.classified_tests) 241 self.assertEqual({}, task.classified_tests)
255
256 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = old_mock_timeout
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698