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

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

Issue 1870103003: [Findit] Adding Try Job suspected CLs and result status to analysis (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: 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 json 5 import json
6 6
7 from common import buildbucket_client 7 from common import buildbucket_client
8 from common.git_repository import GitRepository 8 from common.git_repository import GitRepository
9 from model import wf_analysis_result_status
10 from model.wf_analysis import WfAnalysis
9 from model.wf_try_job import WfTryJob 11 from model.wf_try_job import WfTryJob
10 from pipeline_wrapper import pipeline_handlers 12 from pipeline_wrapper import pipeline_handlers
11 from waterfall import swarming_util 13 from waterfall import swarming_util
12 from waterfall import trigger_swarming_task_pipeline 14 from waterfall import trigger_swarming_task_pipeline
13 from waterfall.swarming_task_request import SwarmingTaskRequest 15 from waterfall.swarming_task_request import SwarmingTaskRequest
14 from waterfall.swarming_tasks_to_try_job_pipeline import ( 16 from waterfall.swarming_tasks_to_try_job_pipeline import (
15 SwarmingTasksToTryJobPipeline) 17 SwarmingTasksToTryJobPipeline)
16 from waterfall.test import wf_testcase 18 from waterfall.test import wf_testcase
17 from waterfall.try_job_type import TryJobType 19 from waterfall.try_job_type import TryJobType
18 20
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 'url': 'url', 196 'url': 'url',
195 'status': 'SCHEDULED', 197 'status': 'SCHEDULED',
196 } 198 }
197 } 199 }
198 ] 200 ]
199 self._MockTriggerTryJobs(responses) 201 self._MockTriggerTryJobs(responses)
200 self._MockGetTryJobs('1') 202 self._MockGetTryJobs('1')
201 self._MockGetChangeLog('rev2') 203 self._MockGetChangeLog('rev2')
202 204
203 WfTryJob.Create(master_name, builder_name, build_number).put() 205 WfTryJob.Create(master_name, builder_name, build_number).put()
206 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
207 analysis.put()
204 208
205 root_pipeline = SwarmingTasksToTryJobPipeline( 209 root_pipeline = SwarmingTasksToTryJobPipeline(
206 master_name, builder_name, build_number, 'rev1', 'rev2', ['rev2'], 210 master_name, builder_name, build_number, 'rev1', 'rev2', ['rev2'],
207 TryJobType.COMPILE) 211 TryJobType.COMPILE)
208 root_pipeline.start() 212 root_pipeline.start()
209 self.execute_queued_tasks() 213 self.execute_queued_tasks()
210 214
211 try_job = WfTryJob.Get(master_name, builder_name, build_number) 215 try_job = WfTryJob.Get(master_name, builder_name, build_number)
212 216
217 expected_suspected_cl = {
218 'revision': 'rev2',
219 'commit_position': '2',
220 'review_url': 'url_2',
221 'repo_name': 'chromium'
222 }
223
213 expected_try_job_results = [ 224 expected_try_job_results = [
214 { 225 {
215 'report': { 226 'report': {
216 'result': { 227 'result': {
217 'rev1': 'passed', 228 'rev1': 'passed',
218 'rev2': 'failed' 229 'rev2': 'failed'
219 }, 230 },
220 'metadata': { 231 'metadata': {
221 'regression_range_size': 2 232 'regression_range_size': 2
222 } 233 }
223 }, 234 },
224 'url': 'url', 235 'url': 'url',
225 'try_job_id': '1', 236 'try_job_id': '1',
226 'culprit': { 237 'culprit': {
227 'compile': { 238 'compile': expected_suspected_cl
228 'revision': 'rev2',
229 'commit_position': '2',
230 'review_url': 'url_2'
231 }
232 } 239 }
233 } 240 }
234 ] 241 ]
242
235 self.assertEqual(expected_try_job_results, try_job.compile_results) 243 self.assertEqual(expected_try_job_results, try_job.compile_results)
244 self.assertEqual(analysis.result_status,
245 wf_analysis_result_status.FOUND_UNTRIAGED)
246 self.assertEqual(analysis.suspected_cls,
247 [expected_suspected_cl])
236 248
237 def testSuccessfullyScheduleNewTryJobForTest(self): 249 def testSuccessfullyScheduleNewTryJobForTest(self):
238 master_name = 'm' 250 master_name = 'm'
239 builder_name = 'b' 251 builder_name = 'b'
240 build_number = 1 252 build_number = 1
241 targeted_tests = { 253 targeted_tests = {
242 'a_test': ['TestSuite1.test1', 'TestSuite1.test3'], 254 'a_test': ['TestSuite1.test1', 'TestSuite1.test3'],
243 'b_test': [], # Non-swarming test. 255 'b_test': [], # Non-swarming test.
244 } 256 }
245 257
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 'url': 'url', 331 'url': 'url',
320 'status': 'SCHEDULED', 332 'status': 'SCHEDULED',
321 } 333 }
322 } 334 }
323 ] 335 ]
324 self._MockTriggerTryJobs(responses) 336 self._MockTriggerTryJobs(responses)
325 self._MockGetTryJobs('2') 337 self._MockGetTryJobs('2')
326 self._MockGetChangeLog('rev1') 338 self._MockGetChangeLog('rev1')
327 339
328 WfTryJob.Create(master_name, builder_name, build_number).put() 340 WfTryJob.Create(master_name, builder_name, build_number).put()
341 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
342 analysis.put()
329 343
330 root_pipeline = SwarmingTasksToTryJobPipeline( 344 root_pipeline = SwarmingTasksToTryJobPipeline(
331 master_name, builder_name, build_number, 'rev0', 'rev1', ['rev1'], 345 master_name, builder_name, build_number, 'rev0', 'rev1', ['rev1'],
332 TryJobType.TEST, None, targeted_tests) 346 TryJobType.TEST, None, targeted_tests)
333 root_pipeline.start() 347 root_pipeline.start()
334 self.execute_queued_tasks() 348 self.execute_queued_tasks()
335 349
336 try_job = WfTryJob.Get(master_name, builder_name, build_number) 350 try_job = WfTryJob.Get(master_name, builder_name, build_number)
337 351
352 expected_suspected_cl = {
353 'revision': 'rev1',
354 'commit_position': '1',
355 'review_url': 'url_1',
356 'repo_name': 'chromium'
357 }
358
338 expected_try_job_results = [ 359 expected_try_job_results = [
339 { 360 {
340 'report': { 361 'report': {
341 'result': { 362 'result': {
342 'rev1': { 363 'rev1': {
343 'a_test': { 364 'a_test': {
344 'status': 'failed', 365 'status': 'failed',
345 'valid': True, 366 'valid': True,
346 'failures': ['TestSuite1.test3'] 367 'failures': ['TestSuite1.test3']
347 }, 368 },
348 'b_test': { 369 'b_test': {
349 'status': 'passed', 370 'status': 'passed',
350 'valid': True, 371 'valid': True,
351 'failures': [], 372 'failures': [],
352 }, 373 },
353 } 374 }
354 }, 375 },
355 'metadata': { 376 'metadata': {
356 'regression_range_size': 2 377 'regression_range_size': 2
357 } 378 }
358 }, 379 },
359 'url': 'url', 380 'url': 'url',
360 'try_job_id': '2', 381 'try_job_id': '2',
361 'culprit': { 382 'culprit': {
362 'a_test': { 383 'a_test': {
363 'tests': { 384 'tests': {
364 'TestSuite1.test3': { 385 'TestSuite1.test3': expected_suspected_cl
365 'revision': 'rev1',
366 'commit_position': '1',
367 'review_url': 'url_1'
368 }
369 } 386 }
370 } 387 }
371 } 388 }
372 } 389 }
373 ] 390 ]
374 391
375 self.assertEqual(expected_try_job_results, try_job.test_results) 392 self.assertEqual(expected_try_job_results, try_job.test_results)
393 self.assertEqual(analysis.result_status,
394 wf_analysis_result_status.FOUND_UNTRIAGED)
395 self.assertEqual(analysis.suspected_cls, [expected_suspected_cl])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698