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

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: Addressing comments 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_configured_test_case
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(
110 'task_timeout_hours': 23, 108 wf_configured_test_case.WaterfallConfiguredTestCase):
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 109
123 def _MockedGetSwarmingTaskResultById(self, task_id, _): 110 def _MockedGetSwarmingTaskResultById(self, task_id, _):
124 swarming_task_results = { 111 swarming_task_results = {
125 'task_id1': { 112 'task_id1': {
126 'state': 'COMPLETED', 113 'state': 'COMPLETED',
127 'tags': [ 114 'tags': [
128 'priority:25', 115 'priority:25',
129 'ref_name:abc_tests' 116 'ref_name:abc_tests'
130 ], 117 ],
131 'outputs_ref': { 118 'outputs_ref': {
(...skipping 13 matching lines...) Expand all
145 132
146 mocked_result = swarming_task_results[task_id] 133 mocked_result = swarming_task_results[task_id]
147 return mocked_result 134 return mocked_result
148 135
149 def setUp(self): 136 def setUp(self):
150 super(ProcessSwarmingTaskResultPipelineTest, self).setUp() 137 super(ProcessSwarmingTaskResultPipelineTest, self).setUp()
151 self.master_name = 'm' 138 self.master_name = 'm'
152 self.builder_name = 'b' 139 self.builder_name = 'b'
153 self.build_number = 121 140 self.build_number = 121
154 self.step_name = 'abc_tests on platform' 141 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', 142 self.mock(swarming_util, 'GetSwarmingTaskResultById',
159 self._MockedGetSwarmingTaskResultById) 143 self._MockedGetSwarmingTaskResultById)
160 144
161 def testCheckTestsRunStatusesNoOutPutJson(self): 145 def testCheckTestsRunStatusesNoOutPutJson(self):
162 tests_statuses = ( 146 tests_statuses = (
163 process_swarming_task_result_pipeline._CheckTestsRunStatuses(None)) 147 process_swarming_task_result_pipeline._CheckTestsRunStatuses(None))
164 self.assertEqual({}, tests_statuses) 148 self.assertEqual({}, tests_statuses)
165 149
166 def testCheckTestsRunStatuses(self): 150 def testCheckTestsRunStatuses(self):
167 tests_statuses = ( 151 tests_statuses = (
(...skipping 29 matching lines...) Expand all
197 self.assertEqual(wf_analysis_status.ANALYZED, task.status) 181 self.assertEqual(wf_analysis_status.ANALYZED, task.status)
198 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses) 182 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses)
199 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, task.classified_tests) 183 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, task.classified_tests)
200 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), 184 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220),
201 task.created_time) 185 task.created_time)
202 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), 186 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550),
203 task.started_time) 187 task.started_time)
204 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), 188 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9),
205 task.completed_time) 189 task.completed_time)
206 190
207
208 def testProcessSwarmingTaskResultPipelineTaskNotRunning(self): 191 def testProcessSwarmingTaskResultPipelineTaskNotRunning(self):
209 task_id = 'task_id2' 192 task_id = 'task_id2'
210 193
211 WfSwarmingTask.Create( 194 WfSwarmingTask.Create(
212 self.master_name, self.builder_name, 195 self.master_name, self.builder_name,
213 self.build_number, self.step_name).put() 196 self.build_number, self.step_name).put()
214 197
215 pipeline = ProcessSwarmingTaskResultPipeline() 198 pipeline = ProcessSwarmingTaskResultPipeline()
216 step_name, task_info = pipeline.run( 199 step_name, task_info = pipeline.run(
217 self.master_name, self.builder_name, 200 self.master_name, self.builder_name,
218 self.build_number, self.step_name, task_id) 201 self.build_number, self.step_name, task_id)
219 202
220 self.assertEqual(self.step_name, step_name) 203 self.assertEqual(self.step_name, step_name)
221 self.assertIsNone(task_info[0]) 204 self.assertIsNone(task_info[0])
222 self.assertEqual({}, task_info[1]) 205 self.assertEqual({}, task_info[1])
223 206
224 task = WfSwarmingTask.Get( 207 task = WfSwarmingTask.Get(
225 self.master_name, self.builder_name, self.build_number, self.step_name) 208 self.master_name, self.builder_name, self.build_number, self.step_name)
226 209
227 self.assertEqual(wf_analysis_status.ERROR, task.status) 210 self.assertEqual(wf_analysis_status.ERROR, task.status)
228 self.assertEqual({}, task.tests_statuses) 211 self.assertEqual({}, task.tests_statuses)
229 self.assertEqual({}, task.classified_tests) 212 self.assertEqual({}, task.classified_tests)
230 213
231 def testProcessSwarmingTaskResultPipelineTaskTimeOut(self): 214 def testProcessSwarmingTaskResultPipelineTaskTimeOut(self):
232 task_id = 'task_id1' 215 task_id = 'task_id1'
233 old_mock_timeout = _MOCK_SWARMING_SETTINGS['task_timeout_hours'] 216 config_settings = wf_configured_test_case.DEFAULT_UNIT_TEST_CONFIG_DATA
stgao 2016/03/31 18:07:13 How about adding a func in wf_configured_test_case
234 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = -1 217 config_settings['swarming_settings']['task_timeout_hours'] = -1
218 self.mock_current_user(user_email='test@chromium.org', is_admin=True)
219 wf_configured_test_case.MockConfigSettings(config_settings)
235 220
236 WfSwarmingTask.Create( 221 WfSwarmingTask.Create(
237 self.master_name, self.builder_name, 222 self.master_name, self.builder_name,
238 self.build_number, self.step_name).put() 223 self.build_number, self.step_name).put()
239 224
240 pipeline = ProcessSwarmingTaskResultPipeline() 225 pipeline = ProcessSwarmingTaskResultPipeline()
241 step_name, task_info = pipeline.run( 226 step_name, task_info = pipeline.run(
242 self.master_name, self.builder_name, 227 self.master_name, self.builder_name,
243 self.build_number, self.step_name, task_id) 228 self.build_number, self.step_name, task_id)
244 229
245 self.assertEqual(self.step_name, step_name) 230 self.assertEqual(self.step_name, step_name)
246 self.assertEqual('abc_tests', task_info[0]) 231 self.assertEqual('abc_tests', task_info[0])
247 self.assertEqual({}, task_info[1]) 232 self.assertEqual({}, task_info[1])
248 233
249 task = WfSwarmingTask.Get( 234 task = WfSwarmingTask.Get(
250 self.master_name, self.builder_name, self.build_number, self.step_name) 235 self.master_name, self.builder_name, self.build_number, self.step_name)
251 236
252 self.assertEqual(wf_analysis_status.ERROR, task.status) 237 self.assertEqual(wf_analysis_status.ERROR, task.status)
253 self.assertEqual({}, task.tests_statuses) 238 self.assertEqual({}, task.tests_statuses)
254 self.assertEqual({}, task.classified_tests) 239 self.assertEqual({}, task.classified_tests)
255 240 wf_configured_test_case.MockConfigSettings()
stgao 2016/03/31 18:07:13 Why this one is needed? In each test run, the setU
lijeffrey 2016/03/31 22:50:20 Done.
256 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = old_mock_timeout
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698