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

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

Issue 2369333002: [Findit] Capture versionized metadata for master_flake_analysis (Closed)
Patch Set: Fixing passing version through pipelines Created 4 years, 2 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 model import analysis_status 7 from model import analysis_status
8 from model.flake.flake_swarming_task import FlakeSwarmingTask 8 from model.flake.flake_swarming_task import FlakeSwarmingTask
9 from model.flake.master_flake_analysis import MasterFlakeAnalysis 9 from model.flake.master_flake_analysis import MasterFlakeAnalysis
10 from waterfall import swarming_util 10 from waterfall import swarming_util
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 'other_info': 'N/A' 76 'other_info': 'N/A'
77 }, 77 },
78 { 78 {
79 'status': 'FAILURE', 79 'status': 'FAILURE',
80 'other_info': 'N/A' 80 'other_info': 'N/A'
81 } 81 }
82 ] 82 ]
83 } 83 }
84 ] 84 ]
85 } 85 }
86 _EXPECTED_TESTS_STATUESE = { 86 _EXPECTED_TEST_STATUS = {
87 'TestSuite1.test1': { 87 'TestSuite1.test1': {
88 'total_run': 2, 88 'total_run': 2,
89 'SUCCESS': 2 89 'SUCCESS': 2
90 }, 90 },
91 'TestSuite1.test2': { 91 'TestSuite1.test2': {
92 'total_run': 4, 92 'total_run': 4,
93 'SUCCESS': 2, 93 'SUCCESS': 2,
94 'FAILURE': 2 94 'FAILURE': 2
95 }, 95 },
96 'TestSuite1.test3': { 96 'TestSuite1.test3': {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 return mocked_result 130 return mocked_result
131 131
132 def setUp(self): 132 def setUp(self):
133 super(ProcessFlakeSwarmingTaskResultPipelineTest, self).setUp() 133 super(ProcessFlakeSwarmingTaskResultPipelineTest, self).setUp()
134 self.pipeline = ProcessFlakeSwarmingTaskResultPipeline() 134 self.pipeline = ProcessFlakeSwarmingTaskResultPipeline()
135 self.master_name = 'm' 135 self.master_name = 'm'
136 self.builder_name = 'b' 136 self.builder_name = 'b'
137 self.build_number = 121 137 self.build_number = 121
138 self.step_name = 'abc_tests on platform' 138 self.step_name = 'abc_tests on platform'
139 self.test_name = 'TestSuite1.test1' 139 self.test_name = 'TestSuite1.test1'
140 self.version_number = 1
140 self.mock(swarming_util, 'GetSwarmingTaskResultById', 141 self.mock(swarming_util, 'GetSwarmingTaskResultById',
141 self._MockedGetSwarmingTaskResultById) 142 self._MockedGetSwarmingTaskResultById)
142 143
143 def testCheckTestsRunStatusesNoOutPutJson(self): 144 def testCheckTestsRunStatusesNoOutPutJson(self):
144 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( 145 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs(
145 self.pipeline, self.master_name, self.builder_name, 146 self.pipeline, self.master_name, self.builder_name,
146 self.build_number, self.step_name, self.build_number, 147 self.build_number, self.step_name, self.build_number,
147 self.test_name) 148 self.test_name, self.version_number)
149 print call_params
chanli 2016/09/30 21:24:36 nit: remove this print
lijeffrey 2016/10/01 01:28:04 Done.
148 tests_statuses = ( 150 tests_statuses = (
149 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( 151 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses(
150 self.pipeline, None, *call_params 152 self.pipeline, None, *call_params))
151 ))
152 self.assertEqual({}, tests_statuses) 153 self.assertEqual({}, tests_statuses)
153 154
154 def testCheckTestsRunStatuses(self): 155 def testCheckTestsRunStatuses(self):
155 analysis = MasterFlakeAnalysis.Create( 156 analysis = MasterFlakeAnalysis.Create(
156 self.master_name, self.builder_name, 157 self.master_name, self.builder_name,
157 self.build_number, self.step_name, self.test_name) 158 self.build_number, self.step_name, self.test_name)
158 analysis.put() 159 analysis.Save()
159 160
160 task = FlakeSwarmingTask.Create( 161 task = FlakeSwarmingTask.Create(
161 self.master_name, self.builder_name, 162 self.master_name, self.builder_name,
162 self.build_number, self.step_name, self.test_name) 163 self.build_number, self.step_name, self.test_name)
163 task.put() 164 task.put()
164 165
165 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( 166 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs(
166 self.pipeline, self.master_name, self.builder_name, 167 self.pipeline, self.master_name, self.builder_name,
167 self.build_number, self.step_name, self.build_number, 168 self.build_number, self.step_name, self.build_number,
168 self.test_name) 169 self.test_name, self.version_number)
169 170
170 tests_statuses = ( 171 tests_statuses = (
171 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( 172 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses(
172 self.pipeline, 173 self.pipeline,
173 _SAMPLE_FAILURE_LOG, *call_params)) 174 _SAMPLE_FAILURE_LOG, *call_params))
174 self.assertEqual(_EXPECTED_TESTS_STATUESE, tests_statuses) 175 self.assertEqual(_EXPECTED_TEST_STATUS, tests_statuses)
175 176
176 def testCheckTestsRunStatusesWhenTestNotExist(self): 177 def testCheckTestsRunStatusesWhenTestDoesNotExist(self):
177 test_name = 'TestSuite1.new_test' 178 test_name = 'TestSuite1.new_test'
178 analysis = MasterFlakeAnalysis.Create( 179 analysis = MasterFlakeAnalysis.Create(
179 self.master_name, self.builder_name, 180 self.master_name, self.builder_name,
180 self.build_number, self.step_name, test_name) 181 self.build_number, self.step_name, test_name)
181 analysis.put() 182 analysis.Save()
182 183
183 task = FlakeSwarmingTask.Create( 184 task = FlakeSwarmingTask.Create(
184 self.master_name, self.builder_name, 185 self.master_name, self.builder_name,
185 self.build_number, self.step_name, test_name) 186 self.build_number, self.step_name, test_name)
186 task.put() 187 task.put()
187 188
188 pipeline = ProcessFlakeSwarmingTaskResultPipeline() 189 pipeline = ProcessFlakeSwarmingTaskResultPipeline()
189 tests_statuses = pipeline._CheckTestsRunStatuses( 190 tests_statuses = pipeline._CheckTestsRunStatuses(
190 _SAMPLE_FAILURE_LOG, self.master_name, self.builder_name, 191 _SAMPLE_FAILURE_LOG, self.master_name, self.builder_name,
191 self.build_number, self.step_name, self.build_number, test_name) 192 self.build_number, self.step_name, self.build_number, test_name,
193 self.version_number)
192 194
193 self.assertEqual(_EXPECTED_TESTS_STATUESE, tests_statuses) 195 self.assertEqual(_EXPECTED_TEST_STATUS, tests_statuses)
194 196
195 task = FlakeSwarmingTask.Get( 197 task = FlakeSwarmingTask.Get(
196 self.master_name, self.builder_name, 198 self.master_name, self.builder_name,
197 self.build_number, self.step_name, test_name) 199 self.build_number, self.step_name, test_name)
198 self.assertEqual(0, task.tries) 200 self.assertEqual(0, task.tries)
199 self.assertEqual(0, task.successes) 201 self.assertEqual(0, task.successes)
200 202
201 analysis = MasterFlakeAnalysis.Get( 203 analysis = MasterFlakeAnalysis.GetVersion(
202 self.master_name, self.builder_name, 204 self.master_name, self.builder_name,
203 self.build_number, self.step_name, test_name) 205 self.build_number, self.step_name, test_name, self.version_number)
204 self.assertTrue(analysis.success_rates[-1] < 0) 206 self.assertTrue(analysis.pass_rates[-1] < 0)
205 207
206 def _MockedGetSwarmingTaskFailureLog(self, *_): 208 def _MockedGetSwarmingTaskFailureLog(self, *_):
207 return _SAMPLE_FAILURE_LOG 209 return _SAMPLE_FAILURE_LOG
208 210
209 def testProcessFlakeSwarmingTaskResultPipeline(self): 211 def testProcessFlakeSwarmingTaskResultPipeline(self):
210 212
211 self.mock(swarming_util, 'GetSwarmingTaskFailureLog', 213 self.mock(swarming_util, 'GetSwarmingTaskFailureLog',
212 self._MockedGetSwarmingTaskFailureLog) 214 self._MockedGetSwarmingTaskFailureLog)
213 215
214 task = FlakeSwarmingTask.Create( 216 task = FlakeSwarmingTask.Create(
215 self.master_name, self.builder_name, 217 self.master_name, self.builder_name,
216 self.build_number, self.step_name, self.test_name) 218 self.build_number, self.step_name, self.test_name)
217 task.task_id = 'task_id1' 219 task.task_id = 'task_id1'
218 task.put() 220 task.put()
219 221
220 analysis = MasterFlakeAnalysis.Create( 222 analysis = MasterFlakeAnalysis.Create(
221 self.master_name, self.builder_name, 223 self.master_name, self.builder_name,
222 self.build_number, self.step_name, self.test_name) 224 self.build_number, self.step_name, self.test_name)
223 analysis.put() 225 analysis.Save()
224 226
225 pipeline = ProcessFlakeSwarmingTaskResultPipeline() 227 pipeline = ProcessFlakeSwarmingTaskResultPipeline()
226 step_name, task_info = pipeline.run( 228 step_name, task_info = pipeline.run(
227 self.master_name, self.builder_name, 229 self.master_name, self.builder_name,
228 self.build_number, self.step_name, 230 self.build_number, self.step_name,
229 'task_id1', self.build_number, self.test_name) 231 'task_id1', self.build_number, self.test_name,
232 analysis.version_number)
230 self.assertEqual('abc_tests', task_info) 233 self.assertEqual('abc_tests', task_info)
231 self.assertEqual(self.step_name, step_name) 234 self.assertEqual(self.step_name, step_name)
232 235
233 task = FlakeSwarmingTask.Get( 236 task = FlakeSwarmingTask.Get(
234 self.master_name, self.builder_name, self.build_number, 237 self.master_name, self.builder_name, self.build_number,
235 self.step_name, self.test_name) 238 self.step_name, self.test_name)
236 239
237 self.assertEqual(analysis_status.COMPLETED, task.status) 240 self.assertEqual(analysis_status.COMPLETED, task.status)
238 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses) 241 self.assertEqual(_EXPECTED_TEST_STATUS, task.tests_statuses)
239 242
240 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), 243 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220),
241 task.created_time) 244 task.created_time)
242 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), 245 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550),
243 task.started_time) 246 task.started_time)
244 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), 247 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9),
245 task.completed_time) 248 task.completed_time)
246 249
247 def testProcessFlakeSwarmingTaskResultPipelineTaskNotRunning(self): 250 def testProcessFlakeSwarmingTaskResultPipelineTaskNotRunning(self):
248 task = FlakeSwarmingTask.Create( 251 task = FlakeSwarmingTask.Create(
249 self.master_name, self.builder_name, 252 self.master_name, self.builder_name,
250 self.build_number, self.step_name, self.test_name) 253 self.build_number, self.step_name, self.test_name)
251 task.task_id = 'task_id2' 254 task.task_id = 'task_id2'
252 task.put() 255 task.put()
253 256
254 analysis = MasterFlakeAnalysis.Create( 257 analysis = MasterFlakeAnalysis.Create(
255 self.master_name, self.builder_name, 258 self.master_name, self.builder_name,
256 self.build_number, self.step_name, self.test_name) 259 self.build_number, self.step_name, self.test_name)
257 analysis.put() 260 analysis.Save()
258 261
259 pipeline = ProcessFlakeSwarmingTaskResultPipeline() 262 pipeline = ProcessFlakeSwarmingTaskResultPipeline()
260 step_name, task_info = pipeline.run( 263 step_name, task_info = pipeline.run(
261 self.master_name, self.builder_name, 264 self.master_name, self.builder_name, self.build_number, self.step_name,
262 self.build_number, self.step_name, 265 'task_id2', self.build_number, self.test_name, analysis.version_number)
263 'task_id2', self.build_number, self.test_name)
264 self.assertEqual(None, task_info) 266 self.assertEqual(None, task_info)
265 self.assertEqual(self.step_name, step_name) 267 self.assertEqual(self.step_name, step_name)
266 268
267 task = FlakeSwarmingTask.Get( 269 task = FlakeSwarmingTask.Get(
268 self.master_name, self.builder_name, 270 self.master_name, self.builder_name, self.build_number, self.step_name,
269 self.build_number, self.step_name, self.test_name) 271 self.test_name)
270 272
271 self.assertEqual(analysis_status.ERROR, task.status) 273 self.assertEqual(analysis_status.ERROR, task.status)
272 274
273 def testProcessFlakeSwarmingTaskResultPipelineTaskTimeOut(self): 275 def testProcessFlakeSwarmingTaskResultPipelineTaskTimeOut(self):
274 # Override swarming config settings to force a timeout. 276 # Override swarming config settings to force a timeout.
275 override_swarming_settings = { 277 override_swarming_settings = {
276 'task_timeout_hours': -1 278 'task_timeout_hours': -1
277 } 279 }
278 self.UpdateUnitTestConfigSettings( 280 self.UpdateUnitTestConfigSettings(
279 'swarming_settings', override_swarming_settings) 281 'swarming_settings', override_swarming_settings)
280 282
281 task = FlakeSwarmingTask.Create( 283 task = FlakeSwarmingTask.Create(
282 self.master_name, self.builder_name, 284 self.master_name, self.builder_name, self.build_number, self.step_name,
283 self.build_number, self.step_name, self.test_name) 285 self.test_name)
284 task.task_id = 'task_id1' 286 task.task_id = 'task_id1'
285 task.put() 287 task.put()
286 288
287 pipeline = ProcessFlakeSwarmingTaskResultPipeline() 289 pipeline = ProcessFlakeSwarmingTaskResultPipeline()
288 step_name, task_info = pipeline.run( 290 step_name, task_info = pipeline.run(
289 self.master_name, self.builder_name, 291 self.master_name, self.builder_name, self.build_number, self.step_name,
290 self.build_number, self.step_name, 292 'task_id1', self.build_number, self.test_name, self.version_number)
291 'task_id1', self.build_number, self.test_name)
292 self.assertEqual('abc_tests', task_info) 293 self.assertEqual('abc_tests', task_info)
293 self.assertEqual(self.step_name, step_name) 294 self.assertEqual(self.step_name, step_name)
294 295
295 task = FlakeSwarmingTask.Get( 296 task = FlakeSwarmingTask.Get(
296 self.master_name, self.builder_name, self.build_number, 297 self.master_name, self.builder_name, self.build_number, self.step_name,
297 self.step_name, self.test_name) 298 self.test_name)
298 self.assertEqual(analysis_status.ERROR, task.status) 299 self.assertEqual(analysis_status.ERROR, task.status)
299 self.assertEqual({}, task.tests_statuses) 300 self.assertEqual({}, task.tests_statuses)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698