| OLD | NEW |
| 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 from handlers import handlers_util | 5 from handlers import handlers_util |
| 6 from handlers import result_status | 6 from handlers import result_status |
| 7 from model import wf_analysis_status | 7 from model import analysis_status |
| 8 from model.wf_analysis import WfAnalysis | 8 from model.wf_analysis import WfAnalysis |
| 9 from model.wf_swarming_task import WfSwarmingTask | 9 from model.wf_swarming_task import WfSwarmingTask |
| 10 from model.wf_try_job import WfTryJob | 10 from model.wf_try_job import WfTryJob |
| 11 from waterfall.test import wf_testcase | 11 from waterfall.test import wf_testcase |
| 12 | 12 |
| 13 | 13 |
| 14 class HandlersUtilResultTest(wf_testcase.WaterfallTestCase): | 14 class HandlersUtilResultTest(wf_testcase.WaterfallTestCase): |
| 15 | 15 |
| 16 def setUp(self): | 16 def setUp(self): |
| 17 super(HandlersUtilResultTest, self).setUp() | 17 super(HandlersUtilResultTest, self).setUp() |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 'step2': { | 145 'step2': { |
| 146 'test1': '%s/%s/%s' % ( | 146 'test1': '%s/%s/%s' % ( |
| 147 self.master_name, self.builder_name, self.build_number) | 147 self.master_name, self.builder_name, self.build_number) |
| 148 } | 148 } |
| 149 } | 149 } |
| 150 analysis.put() | 150 analysis.put() |
| 151 | 151 |
| 152 task0 = WfSwarmingTask.Create( | 152 task0 = WfSwarmingTask.Create( |
| 153 self.master_name, self.builder_name, 120, 'step1 on platform') | 153 self.master_name, self.builder_name, 120, 'step1 on platform') |
| 154 task0.task_id = 'task0' | 154 task0.task_id = 'task0' |
| 155 task0.status = wf_analysis_status.ANALYZED | 155 task0.status = analysis_status.COMPLETED |
| 156 task0.parameters = { | 156 task0.parameters = { |
| 157 'tests': ['test1'] | 157 'tests': ['test1'] |
| 158 } | 158 } |
| 159 task0.tests_statuses = { | 159 task0.tests_statuses = { |
| 160 'test1': { | 160 'test1': { |
| 161 'total_run': 2, | 161 'total_run': 2, |
| 162 'FAILURE': 2 | 162 'FAILURE': 2 |
| 163 } | 163 } |
| 164 } | 164 } |
| 165 task0.put() | 165 task0.put() |
| 166 | 166 |
| 167 task1 = WfSwarmingTask.Create( | 167 task1 = WfSwarmingTask.Create( |
| 168 self.master_name, self.builder_name, self.build_number, | 168 self.master_name, self.builder_name, self.build_number, |
| 169 'step1 on platform') | 169 'step1 on platform') |
| 170 task1.task_id = 'task1' | 170 task1.task_id = 'task1' |
| 171 task1.status = wf_analysis_status.ANALYZED | 171 task1.status = analysis_status.COMPLETED |
| 172 task1.parameters = { | 172 task1.parameters = { |
| 173 'tests': ['test2', 'test3', 'test4'] | 173 'tests': ['test2', 'test3', 'test4'] |
| 174 } | 174 } |
| 175 task1.tests_statuses = { | 175 task1.tests_statuses = { |
| 176 'test2': { | 176 'test2': { |
| 177 'total_run': 2, | 177 'total_run': 2, |
| 178 'FAILURE': 2 | 178 'FAILURE': 2 |
| 179 }, | 179 }, |
| 180 'test3': { | 180 'test3': { |
| 181 'total_run': 4, | 181 'total_run': 4, |
| (...skipping 12 matching lines...) Expand all Loading... |
| 194 task2.put() | 194 task2.put() |
| 195 | 195 |
| 196 data = handlers_util.GetSwarmingTaskInfo( | 196 data = handlers_util.GetSwarmingTaskInfo( |
| 197 self.master_name, self.builder_name, self.build_number) | 197 self.master_name, self.builder_name, self.build_number) |
| 198 | 198 |
| 199 expected_data = { | 199 expected_data = { |
| 200 'step1 on platform': { | 200 'step1 on platform': { |
| 201 'swarming_tasks': { | 201 'swarming_tasks': { |
| 202 'm/b/121': { | 202 'm/b/121': { |
| 203 'task_info': { | 203 'task_info': { |
| 204 'status': wf_analysis_status.ANALYZED, | 204 'status': analysis_status.COMPLETED, |
| 205 'task_id': 'task1', | 205 'task_id': 'task1', |
| 206 'task_url': ('https://chromium-swarm.appspot.com/user' | 206 'task_url': ('https://chromium-swarm.appspot.com/user' |
| 207 '/task/task1') | 207 '/task/task1') |
| 208 }, | 208 }, |
| 209 'all_tests': ['test2', 'test3', 'test4'], | 209 'all_tests': ['test2', 'test3', 'test4'], |
| 210 'reliable_tests': ['test2'], | 210 'reliable_tests': ['test2'], |
| 211 'flaky_tests': ['test3', 'test4'], | 211 'flaky_tests': ['test3', 'test4'], |
| 212 'ref_name': 'step1' | 212 'ref_name': 'step1' |
| 213 }, | 213 }, |
| 214 'm/b/120': { | 214 'm/b/120': { |
| 215 'task_info': { | 215 'task_info': { |
| 216 'status': wf_analysis_status.ANALYZED, | 216 'status': analysis_status.COMPLETED, |
| 217 'task_id': 'task0', | 217 'task_id': 'task0', |
| 218 'task_url': ('https://chromium-swarm.appspot.com/user/' | 218 'task_url': ('https://chromium-swarm.appspot.com/user/' |
| 219 'task/task0') | 219 'task/task0') |
| 220 }, | 220 }, |
| 221 'all_tests': ['test1'], | 221 'all_tests': ['test1'], |
| 222 'reliable_tests': ['test1'], | 222 'reliable_tests': ['test1'], |
| 223 'flaky_tests': [], | 223 'flaky_tests': [], |
| 224 'ref_name': 'step1' | 224 'ref_name': 'step1' |
| 225 } | 225 } |
| 226 } | 226 } |
| 227 }, | 227 }, |
| 228 'step2': { | 228 'step2': { |
| 229 'swarming_tasks': { | 229 'swarming_tasks': { |
| 230 'm/b/121': { | 230 'm/b/121': { |
| 231 'task_info': { | 231 'task_info': { |
| 232 'status': wf_analysis_status.PENDING | 232 'status': analysis_status.PENDING |
| 233 }, | 233 }, |
| 234 'all_tests': ['test1'], | 234 'all_tests': ['test1'], |
| 235 'ref_name': 'step2' | 235 'ref_name': 'step2' |
| 236 } | 236 } |
| 237 } | 237 } |
| 238 } | 238 } |
| 239 } | 239 } |
| 240 self.assertEqual(expected_data, data) | 240 self.assertEqual(expected_data, data) |
| 241 | 241 |
| 242 def testGetAllTryJobResultsNoAnalysis(self): | 242 def testGetAllTryJobResultsNoAnalysis(self): |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 WfTryJob.Create( | 303 WfTryJob.Create( |
| 304 self.master_name, self.builder_name, self.build_number).put() | 304 self.master_name, self.builder_name, self.build_number).put() |
| 305 | 305 |
| 306 result = handlers_util._GetTryJobResultForCompile({'compile': 'm/b/121'}) | 306 result = handlers_util._GetTryJobResultForCompile({'compile': 'm/b/121'}) |
| 307 | 307 |
| 308 expected_result = { | 308 expected_result = { |
| 309 'compile': { | 309 'compile': { |
| 310 'try_jobs': [ | 310 'try_jobs': [ |
| 311 { | 311 { |
| 312 'try_job_key': 'm/b/121', | 312 'try_job_key': 'm/b/121', |
| 313 'status': wf_analysis_status.PENDING | 313 'status': analysis_status.PENDING |
| 314 } | 314 } |
| 315 ] | 315 ] |
| 316 } | 316 } |
| 317 } | 317 } |
| 318 | 318 |
| 319 self.assertEqual(expected_result, result) | 319 self.assertEqual(expected_result, result) |
| 320 | 320 |
| 321 def testGetTryJobResultForCompileOnlyReturnUrlIfStarts(self): | 321 def testGetTryJobResultForCompileOnlyReturnUrlIfStarts(self): |
| 322 try_job = WfTryJob.Create( | 322 try_job = WfTryJob.Create( |
| 323 self.master_name, self.builder_name, self.build_number) | 323 self.master_name, self.builder_name, self.build_number) |
| 324 try_job.status = wf_analysis_status.ANALYZING | 324 try_job.status = analysis_status.RUNNING |
| 325 try_job.compile_results = [ | 325 try_job.compile_results = [ |
| 326 { | 326 { |
| 327 'result': None, | 327 'result': None, |
| 328 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' | 328 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' |
| 329 'builders/linux_chromium_variable/builds/121') | 329 'builders/linux_chromium_variable/builds/121') |
| 330 } | 330 } |
| 331 ] | 331 ] |
| 332 try_job.put() | 332 try_job.put() |
| 333 | 333 |
| 334 result = handlers_util._GetTryJobResultForCompile({'compile': 'm/b/121'}) | 334 result = handlers_util._GetTryJobResultForCompile({'compile': 'm/b/121'}) |
| 335 | 335 |
| 336 expected_result = { | 336 expected_result = { |
| 337 'compile': { | 337 'compile': { |
| 338 'try_jobs': [ | 338 'try_jobs': [ |
| 339 { | 339 { |
| 340 'try_job_key': 'm/b/121', | 340 'try_job_key': 'm/b/121', |
| 341 'status': wf_analysis_status.ANALYZING, | 341 'status': analysis_status.RUNNING, |
| 342 'try_job_build_number': 121, | 342 'try_job_build_number': 121, |
| 343 'try_job_url': ( | 343 'try_job_url': ( |
| 344 'http://build.chromium.org/p/tryserver.chromium.' | 344 'http://build.chromium.org/p/tryserver.chromium.' |
| 345 'linux/builders/linux_chromium_variable/builds/121') | 345 'linux/builders/linux_chromium_variable/builds/121') |
| 346 } | 346 } |
| 347 ] | 347 ] |
| 348 } | 348 } |
| 349 } | 349 } |
| 350 self.assertEqual(expected_result, result) | 350 self.assertEqual(expected_result, result) |
| 351 | 351 |
| 352 def testGetTryJobResultForCompileOnlyReturnStatusIfError(self): | 352 def testGetTryJobResultForCompileOnlyReturnStatusIfError(self): |
| 353 try_job = WfTryJob.Create( | 353 try_job = WfTryJob.Create( |
| 354 self.master_name, self.builder_name, self.build_number) | 354 self.master_name, self.builder_name, self.build_number) |
| 355 try_job.status = wf_analysis_status.ERROR | 355 try_job.status = analysis_status.ERROR |
| 356 try_job.compile_results = [ | 356 try_job.compile_results = [ |
| 357 { | 357 { |
| 358 'try_job_id': '1' | 358 'try_job_id': '1' |
| 359 } | 359 } |
| 360 ] | 360 ] |
| 361 try_job.put() | 361 try_job.put() |
| 362 | 362 |
| 363 result = handlers_util._GetTryJobResultForCompile({'compile': 'm/b/121'}) | 363 result = handlers_util._GetTryJobResultForCompile({'compile': 'm/b/121'}) |
| 364 | 364 |
| 365 expected_result = { | 365 expected_result = { |
| 366 'compile': { | 366 'compile': { |
| 367 'try_jobs': [ | 367 'try_jobs': [ |
| 368 { | 368 { |
| 369 'try_job_key': 'm/b/121', | 369 'try_job_key': 'm/b/121', |
| 370 'status': wf_analysis_status.ERROR | 370 'status': analysis_status.ERROR |
| 371 } | 371 } |
| 372 ] | 372 ] |
| 373 } | 373 } |
| 374 } | 374 } |
| 375 | 375 |
| 376 self.assertEqual(expected_result, result) | 376 self.assertEqual(expected_result, result) |
| 377 | 377 |
| 378 def testGetTryJobResultWhenTryJobCompleted(self): | 378 def testGetTryJobResultWhenTryJobCompleted(self): |
| 379 analysis = WfAnalysis.Create( | 379 analysis = WfAnalysis.Create( |
| 380 self.master_name, self.builder_name, self.build_number) | 380 self.master_name, self.builder_name, self.build_number) |
| 381 analysis.failure_result_map = { | 381 analysis.failure_result_map = { |
| 382 'compile': 'm/b/121' | 382 'compile': 'm/b/121' |
| 383 } | 383 } |
| 384 analysis.put() | 384 analysis.put() |
| 385 | 385 |
| 386 try_job = WfTryJob.Create( | 386 try_job = WfTryJob.Create( |
| 387 self.master_name, self.builder_name, self.build_number) | 387 self.master_name, self.builder_name, self.build_number) |
| 388 try_job.status = wf_analysis_status.ANALYZED | 388 try_job.status = analysis_status.COMPLETED |
| 389 try_job.compile_results = [ | 389 try_job.compile_results = [ |
| 390 { | 390 { |
| 391 'report': { | 391 'report': { |
| 392 'result': { | 392 'result': { |
| 393 'rev1': 'passed', | 393 'rev1': 'passed', |
| 394 'rev2': 'failed' | 394 'rev2': 'failed' |
| 395 } | 395 } |
| 396 }, | 396 }, |
| 397 'try_job_id': 'm/b/121', | 397 'try_job_id': 'm/b/121', |
| 398 'url': ('http://build.chromium.org/p/tryserver.chromium.' | 398 'url': ('http://build.chromium.org/p/tryserver.chromium.' |
| (...skipping 10 matching lines...) Expand all Loading... |
| 409 try_job.put() | 409 try_job.put() |
| 410 | 410 |
| 411 result = handlers_util.GetAllTryJobResults( | 411 result = handlers_util.GetAllTryJobResults( |
| 412 self.master_name, self.builder_name, self.build_number) | 412 self.master_name, self.builder_name, self.build_number) |
| 413 | 413 |
| 414 expected_result = { | 414 expected_result = { |
| 415 'compile': { | 415 'compile': { |
| 416 'try_jobs': [ | 416 'try_jobs': [ |
| 417 { | 417 { |
| 418 'try_job_key': 'm/b/121', | 418 'try_job_key': 'm/b/121', |
| 419 'status': wf_analysis_status.ANALYZED, | 419 'status': analysis_status.COMPLETED, |
| 420 'try_job_build_number': 121, | 420 'try_job_build_number': 121, |
| 421 'try_job_url': ( | 421 'try_job_url': ( |
| 422 'http://build.chromium.org/p/tryserver.chromium.' | 422 'http://build.chromium.org/p/tryserver.chromium.' |
| 423 'linux/builders/linux_chromium_variable/builds/121'), | 423 'linux/builders/linux_chromium_variable/builds/121'), |
| 424 'culprit': { | 424 'culprit': { |
| 425 'revision': 'rev2', | 425 'revision': 'rev2', |
| 426 'commit_position': '2', | 426 'commit_position': '2', |
| 427 'review_url': 'url_2' | 427 'review_url': 'url_2' |
| 428 } | 428 } |
| 429 } | 429 } |
| 430 ] | 430 ] |
| 431 } | 431 } |
| 432 } | 432 } |
| 433 | 433 |
| 434 self.assertEqual(expected_result, result) | 434 self.assertEqual(expected_result, result) |
| 435 | 435 |
| 436 def testGetTryJobResultWhenTryJobCompletedAllPassed(self): | 436 def testGetTryJobResultWhenTryJobCompletedAllPassed(self): |
| 437 analysis = WfAnalysis.Create( | 437 analysis = WfAnalysis.Create( |
| 438 self.master_name, self.builder_name, self.build_number) | 438 self.master_name, self.builder_name, self.build_number) |
| 439 analysis.failure_result_map = { | 439 analysis.failure_result_map = { |
| 440 'compile': 'm/b/121' | 440 'compile': 'm/b/121' |
| 441 } | 441 } |
| 442 analysis.put() | 442 analysis.put() |
| 443 | 443 |
| 444 try_job = WfTryJob.Create( | 444 try_job = WfTryJob.Create( |
| 445 self.master_name, self.builder_name, self.build_number) | 445 self.master_name, self.builder_name, self.build_number) |
| 446 try_job.status = wf_analysis_status.ANALYZED | 446 try_job.status = analysis_status.COMPLETED |
| 447 try_job.compile_results = [ | 447 try_job.compile_results = [ |
| 448 { | 448 { |
| 449 'report': { | 449 'report': { |
| 450 'result': { | 450 'result': { |
| 451 'rev1': 'passed', | 451 'rev1': 'passed', |
| 452 'rev2': 'failed' | 452 'rev2': 'failed' |
| 453 }, | 453 }, |
| 454 }, | 454 }, |
| 455 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' | 455 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' |
| 456 'builders/linux_chromium_variable/builds/121') | 456 'builders/linux_chromium_variable/builds/121') |
| 457 } | 457 } |
| 458 ] | 458 ] |
| 459 try_job.put() | 459 try_job.put() |
| 460 | 460 |
| 461 result = handlers_util.GetAllTryJobResults( | 461 result = handlers_util.GetAllTryJobResults( |
| 462 self.master_name, self.builder_name, self.build_number) | 462 self.master_name, self.builder_name, self.build_number) |
| 463 | 463 |
| 464 expected_result = { | 464 expected_result = { |
| 465 'compile': { | 465 'compile': { |
| 466 'try_jobs': [ | 466 'try_jobs': [ |
| 467 { | 467 { |
| 468 'try_job_key': 'm/b/121', | 468 'try_job_key': 'm/b/121', |
| 469 'status': wf_analysis_status.ANALYZED, | 469 'status': analysis_status.COMPLETED, |
| 470 'try_job_build_number': 121, | 470 'try_job_build_number': 121, |
| 471 'try_job_url': ( | 471 'try_job_url': ( |
| 472 'http://build.chromium.org/p/tryserver.chromium.' | 472 'http://build.chromium.org/p/tryserver.chromium.' |
| 473 'linux/builders/linux_chromium_variable/builds/121') | 473 'linux/builders/linux_chromium_variable/builds/121') |
| 474 } | 474 } |
| 475 ] | 475 ] |
| 476 } | 476 } |
| 477 } | 477 } |
| 478 | 478 |
| 479 self.assertEqual(expected_result, result) | 479 self.assertEqual(expected_result, result) |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 'test1': 'm/b/118', | 557 'test1': 'm/b/118', |
| 558 'test3': 'm/b/119' | 558 'test3': 'm/b/119' |
| 559 } | 559 } |
| 560 } | 560 } |
| 561 | 561 |
| 562 tasks_info = { | 562 tasks_info = { |
| 563 'step1': { | 563 'step1': { |
| 564 'swarming_tasks': { | 564 'swarming_tasks': { |
| 565 'm/b/118': { | 565 'm/b/118': { |
| 566 'task_info': { | 566 'task_info': { |
| 567 'status': wf_analysis_status.PENDING | 567 'status': analysis_status.PENDING |
| 568 }, | 568 }, |
| 569 'all_tests': ['test1'] | 569 'all_tests': ['test1'] |
| 570 }, | 570 }, |
| 571 'm/b/119': { | 571 'm/b/119': { |
| 572 'task_info': { | 572 'task_info': { |
| 573 'status': wf_analysis_status.ANALYZING, | 573 'status': analysis_status.RUNNING, |
| 574 'task_id': 'task3', | 574 'task_id': 'task3', |
| 575 'task_url': 'task3_url' | 575 'task_url': 'task3_url' |
| 576 }, | 576 }, |
| 577 'all_tests': ['test3'] | 577 'all_tests': ['test3'] |
| 578 } | 578 } |
| 579 } | 579 } |
| 580 } | 580 } |
| 581 } | 581 } |
| 582 | 582 |
| 583 result = handlers_util._GetAllTryJobResultsForTest( | 583 result = handlers_util._GetAllTryJobResultsForTest( |
| 584 failure_result_map, tasks_info) | 584 failure_result_map, tasks_info) |
| 585 | 585 |
| 586 expected_result = { | 586 expected_result = { |
| 587 'step1': { | 587 'step1': { |
| 588 'try_jobs': [ | 588 'try_jobs': [ |
| 589 { | 589 { |
| 590 'try_job_key': 'm/b/118', | 590 'try_job_key': 'm/b/118', |
| 591 'status': result_status.NO_TRY_JOB_REASON_MAP[ | 591 'status': result_status.NO_TRY_JOB_REASON_MAP[ |
| 592 wf_analysis_status.PENDING], | 592 analysis_status.PENDING], |
| 593 'tests': ['test1'] | 593 'tests': ['test1'] |
| 594 }, | 594 }, |
| 595 { | 595 { |
| 596 'try_job_key': 'm/b/119', | 596 'try_job_key': 'm/b/119', |
| 597 'status': result_status.NO_TRY_JOB_REASON_MAP[ | 597 'status': result_status.NO_TRY_JOB_REASON_MAP[ |
| 598 wf_analysis_status.ANALYZING], | 598 analysis_status.RUNNING], |
| 599 'task_id': 'task3', | 599 'task_id': 'task3', |
| 600 'task_url': 'task3_url', | 600 'task_url': 'task3_url', |
| 601 'tests': ['test3'] | 601 'tests': ['test3'] |
| 602 } | 602 } |
| 603 ] | 603 ] |
| 604 } | 604 } |
| 605 } | 605 } |
| 606 self.assertEqual(expected_result, result) | 606 self.assertEqual(expected_result, result) |
| 607 | 607 |
| 608 def testUpdateTryJobInfoBasedOnSwarmingAllFlaky(self): | 608 def testUpdateTryJobInfoBasedOnSwarmingAllFlaky(self): |
| 609 step_tasks_info = { | 609 step_tasks_info = { |
| 610 'swarming_tasks': { | 610 'swarming_tasks': { |
| 611 'm/b/119': { | 611 'm/b/119': { |
| 612 'task_info': { | 612 'task_info': { |
| 613 'status': wf_analysis_status.ANALYZED, | 613 'status': analysis_status.COMPLETED, |
| 614 'task_id': 'task1', | 614 'task_id': 'task1', |
| 615 'task_url': 'task_url' | 615 'task_url': 'task_url' |
| 616 }, | 616 }, |
| 617 'all_tests': ['test2', 'test3'], | 617 'all_tests': ['test2', 'test3'], |
| 618 'reliable_tests': [], | 618 'reliable_tests': [], |
| 619 'flaky_tests': ['test2', 'test3'], | 619 'flaky_tests': ['test2', 'test3'], |
| 620 'ref_name': 'step1' | 620 'ref_name': 'step1' |
| 621 } | 621 } |
| 622 } | 622 } |
| 623 } | 623 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 648 'step1 on platform': { | 648 'step1 on platform': { |
| 649 'test3': 'm/b/119' | 649 'test3': 'm/b/119' |
| 650 } | 650 } |
| 651 } | 651 } |
| 652 | 652 |
| 653 tasks_info = { | 653 tasks_info = { |
| 654 'step1 on platform': { | 654 'step1 on platform': { |
| 655 'swarming_tasks': { | 655 'swarming_tasks': { |
| 656 'm/b/119': { | 656 'm/b/119': { |
| 657 'task_info': { | 657 'task_info': { |
| 658 'status': wf_analysis_status.ANALYZED, | 658 'status': analysis_status.COMPLETED, |
| 659 'task_id': 'task1', | 659 'task_id': 'task1', |
| 660 'task_url': ('https://chromium-swarm.appspot.com/user' | 660 'task_url': ('https://chromium-swarm.appspot.com/user' |
| 661 '/task/task1') | 661 '/task/task1') |
| 662 }, | 662 }, |
| 663 'all_tests': ['test3'], | 663 'all_tests': ['test3'], |
| 664 'reliable_tests': ['test3'], | 664 'reliable_tests': ['test3'], |
| 665 'flaky_tests': [], | 665 'flaky_tests': [], |
| 666 'ref_name': 'step1' | 666 'ref_name': 'step1' |
| 667 } | 667 } |
| 668 } | 668 } |
| 669 } | 669 } |
| 670 } | 670 } |
| 671 | 671 |
| 672 try_job = WfTryJob.Create('m', 'b', 119) | 672 try_job = WfTryJob.Create('m', 'b', 119) |
| 673 try_job.status = wf_analysis_status.ANALYZED | 673 try_job.status = analysis_status.COMPLETED |
| 674 try_job.test_results = [ | 674 try_job.test_results = [ |
| 675 { | 675 { |
| 676 'report': { | 676 'report': { |
| 677 'result': { | 677 'result': { |
| 678 'rev1': { | 678 'rev1': { |
| 679 'step1': { | 679 'step1': { |
| 680 'status': 'passed', | 680 'status': 'passed', |
| 681 'valid': True | 681 'valid': True |
| 682 } | 682 } |
| 683 }, | 683 }, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 710 | 710 |
| 711 result = handlers_util._GetAllTryJobResultsForTest( | 711 result = handlers_util._GetAllTryJobResultsForTest( |
| 712 failure_result_map, tasks_info) | 712 failure_result_map, tasks_info) |
| 713 | 713 |
| 714 expected_result = { | 714 expected_result = { |
| 715 'step1 on platform': { | 715 'step1 on platform': { |
| 716 'try_jobs': [ | 716 'try_jobs': [ |
| 717 { | 717 { |
| 718 'ref_name': 'step1', | 718 'ref_name': 'step1', |
| 719 'try_job_key': 'm/b/119', | 719 'try_job_key': 'm/b/119', |
| 720 'status': wf_analysis_status.ANALYZED, | 720 'status': analysis_status.COMPLETED, |
| 721 'try_job_url': ( | 721 'try_job_url': ( |
| 722 'http://build.chromium.org/p/tryserver.chromium.' | 722 'http://build.chromium.org/p/tryserver.chromium.' |
| 723 'linux/builders/linux_chromium_variable/builds/121'), | 723 'linux/builders/linux_chromium_variable/builds/121'), |
| 724 'try_job_build_number': 121, | 724 'try_job_build_number': 121, |
| 725 'culprit': { | 725 'culprit': { |
| 726 'revision': 'rev2', | 726 'revision': 'rev2', |
| 727 'commit_position': '2', | 727 'commit_position': '2', |
| 728 'review_url': 'url_2' | 728 'review_url': 'url_2' |
| 729 }, | 729 }, |
| 730 'task_id': 'task1', | 730 'task_id': 'task1', |
| (...skipping 14 matching lines...) Expand all Loading... |
| 745 'test3': 'm/b/119', | 745 'test3': 'm/b/119', |
| 746 'test4': 'm/b/119' | 746 'test4': 'm/b/119' |
| 747 } | 747 } |
| 748 } | 748 } |
| 749 | 749 |
| 750 tasks_info = { | 750 tasks_info = { |
| 751 'step1 on platform': { | 751 'step1 on platform': { |
| 752 'swarming_tasks': { | 752 'swarming_tasks': { |
| 753 'm/b/119': { | 753 'm/b/119': { |
| 754 'task_info': { | 754 'task_info': { |
| 755 'status': wf_analysis_status.ANALYZED, | 755 'status': analysis_status.COMPLETED, |
| 756 'task_id': 'task1', | 756 'task_id': 'task1', |
| 757 'task_url': 'url/task1' | 757 'task_url': 'url/task1' |
| 758 }, | 758 }, |
| 759 'all_tests': ['test2', 'test3', 'test4'], | 759 'all_tests': ['test2', 'test3', 'test4'], |
| 760 'reliable_tests': ['test2', 'test3'], | 760 'reliable_tests': ['test2', 'test3'], |
| 761 'flaky_tests': ['test4'], | 761 'flaky_tests': ['test4'], |
| 762 'ref_name': 'step1' | 762 'ref_name': 'step1' |
| 763 }, | 763 }, |
| 764 'm/b/118': { | 764 'm/b/118': { |
| 765 'task_info': { | 765 'task_info': { |
| 766 'status': result_status.NO_SWARMING_TASK_FOUND | 766 'status': result_status.NO_SWARMING_TASK_FOUND |
| 767 }, | 767 }, |
| 768 'all_tests': ['test1'] | 768 'all_tests': ['test1'] |
| 769 } | 769 } |
| 770 } | 770 } |
| 771 } | 771 } |
| 772 } | 772 } |
| 773 | 773 |
| 774 try_job = WfTryJob.Create('m', 'b', 119) | 774 try_job = WfTryJob.Create('m', 'b', 119) |
| 775 try_job.status = wf_analysis_status.ANALYZED | 775 try_job.status = analysis_status.COMPLETED |
| 776 try_job.test_results = [ | 776 try_job.test_results = [ |
| 777 { | 777 { |
| 778 'report': { | 778 'report': { |
| 779 'result': { | 779 'result': { |
| 780 'rev1': { | 780 'rev1': { |
| 781 'step1': { | 781 'step1': { |
| 782 'status': 'passed', | 782 'status': 'passed', |
| 783 'valid': True | 783 'valid': True |
| 784 } | 784 } |
| 785 }, | 785 }, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 'try_job_key': 'm/b/118', | 820 'try_job_key': 'm/b/118', |
| 821 'status': result_status.NO_TRY_JOB_REASON_MAP.get( | 821 'status': result_status.NO_TRY_JOB_REASON_MAP.get( |
| 822 result_status.NO_SWARMING_TASK_FOUND), | 822 result_status.NO_SWARMING_TASK_FOUND), |
| 823 'tests': ['test1'] | 823 'tests': ['test1'] |
| 824 }, | 824 }, |
| 825 { | 825 { |
| 826 'ref_name': 'step1', | 826 'ref_name': 'step1', |
| 827 'try_job_key': 'm/b/119', | 827 'try_job_key': 'm/b/119', |
| 828 'task_id': 'task1', | 828 'task_id': 'task1', |
| 829 'task_url': 'url/task1', | 829 'task_url': 'url/task1', |
| 830 'status': wf_analysis_status.ANALYZED, | 830 'status': analysis_status.COMPLETED, |
| 831 'try_job_url': ( | 831 'try_job_url': ( |
| 832 'http://build.chromium.org/p/tryserver.chromium.' | 832 'http://build.chromium.org/p/tryserver.chromium.' |
| 833 'linux/builders/linux_chromium_variable/builds/121'), | 833 'linux/builders/linux_chromium_variable/builds/121'), |
| 834 'try_job_build_number': 121, | 834 'try_job_build_number': 121, |
| 835 'tests': ['test3'], | 835 'tests': ['test3'], |
| 836 'culprit': {} | 836 'culprit': {} |
| 837 }, | 837 }, |
| 838 { | 838 { |
| 839 'ref_name': 'step1', | 839 'ref_name': 'step1', |
| 840 'try_job_key': 'm/b/119', | 840 'try_job_key': 'm/b/119', |
| 841 'task_id': 'task1', | 841 'task_id': 'task1', |
| 842 'task_url': 'url/task1', | 842 'task_url': 'url/task1', |
| 843 'status': wf_analysis_status.ANALYZED, | 843 'status': analysis_status.COMPLETED, |
| 844 'try_job_url': ( | 844 'try_job_url': ( |
| 845 'http://build.chromium.org/p/tryserver.chromium.' | 845 'http://build.chromium.org/p/tryserver.chromium.' |
| 846 'linux/builders/linux_chromium_variable/builds/121'), | 846 'linux/builders/linux_chromium_variable/builds/121'), |
| 847 'try_job_build_number': 121, | 847 'try_job_build_number': 121, |
| 848 'culprit': { | 848 'culprit': { |
| 849 'revision': 'rev2', | 849 'revision': 'rev2', |
| 850 'commit_position': '2', | 850 'commit_position': '2', |
| 851 'review_url': 'url_2' | 851 'review_url': 'url_2' |
| 852 }, | 852 }, |
| 853 'tests': ['test2'] | 853 'tests': ['test2'] |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 912 handlers_util._GetCulpritInfoForTryJobResultForTest( | 912 handlers_util._GetCulpritInfoForTryJobResultForTest( |
| 913 try_job_key, culprits_info) | 913 try_job_key, culprits_info) |
| 914 | 914 |
| 915 expected_culprits_info = { | 915 expected_culprits_info = { |
| 916 'step1 on platform': { | 916 'step1 on platform': { |
| 917 'try_jobs': [ | 917 'try_jobs': [ |
| 918 { | 918 { |
| 919 'ref_name': 'step1', | 919 'ref_name': 'step1', |
| 920 'try_job_key': try_job_key, | 920 'try_job_key': try_job_key, |
| 921 'tests': ['test2', 'test3'], | 921 'tests': ['test2', 'test3'], |
| 922 'status': wf_analysis_status.PENDING | 922 'status': analysis_status.PENDING |
| 923 } | 923 } |
| 924 ] | 924 ] |
| 925 } | 925 } |
| 926 } | 926 } |
| 927 self.assertEqual(expected_culprits_info, culprits_info) | 927 self.assertEqual(expected_culprits_info, culprits_info) |
| 928 | 928 |
| 929 def testGetCulpritInfoForTryJobResultForTestTryJobRunning(self): | 929 def testGetCulpritInfoForTryJobResultForTestTryJobRunning(self): |
| 930 try_job_key = 'm/b/119' | 930 try_job_key = 'm/b/119' |
| 931 culprits_info = { | 931 culprits_info = { |
| 932 'step1 on platform': { | 932 'step1 on platform': { |
| 933 'try_jobs': [ | 933 'try_jobs': [ |
| 934 { | 934 { |
| 935 'ref_name': 'step1', | 935 'ref_name': 'step1', |
| 936 'try_job_key': try_job_key, | 936 'try_job_key': try_job_key, |
| 937 'tests': ['test2', 'test3'] | 937 'tests': ['test2', 'test3'] |
| 938 } | 938 } |
| 939 ] | 939 ] |
| 940 } | 940 } |
| 941 } | 941 } |
| 942 try_job = WfTryJob.Create('m', 'b', '119') | 942 try_job = WfTryJob.Create('m', 'b', '119') |
| 943 try_job.status = wf_analysis_status.ANALYZING | 943 try_job.status = analysis_status.RUNNING |
| 944 try_job.test_results = [ | 944 try_job.test_results = [ |
| 945 { | 945 { |
| 946 'url': ('http://build.chromium.org/p/tryserver.chromium.' | 946 'url': ('http://build.chromium.org/p/tryserver.chromium.' |
| 947 'linux/builders/linux_chromium_variable/builds/121'), | 947 'linux/builders/linux_chromium_variable/builds/121'), |
| 948 'try_job_id': '121' | 948 'try_job_id': '121' |
| 949 } | 949 } |
| 950 ] | 950 ] |
| 951 try_job.put() | 951 try_job.put() |
| 952 handlers_util._GetCulpritInfoForTryJobResultForTest( | 952 handlers_util._GetCulpritInfoForTryJobResultForTest( |
| 953 try_job_key, culprits_info) | 953 try_job_key, culprits_info) |
| 954 | 954 |
| 955 expected_culprits_info = { | 955 expected_culprits_info = { |
| 956 'step1 on platform': { | 956 'step1 on platform': { |
| 957 'try_jobs': [ | 957 'try_jobs': [ |
| 958 { | 958 { |
| 959 'ref_name': 'step1', | 959 'ref_name': 'step1', |
| 960 'try_job_key': try_job_key, | 960 'try_job_key': try_job_key, |
| 961 'tests': ['test2', 'test3'], | 961 'tests': ['test2', 'test3'], |
| 962 'status': wf_analysis_status.ANALYZING, | 962 'status': analysis_status.RUNNING, |
| 963 'try_job_url': ( | 963 'try_job_url': ( |
| 964 'http://build.chromium.org/p/tryserver.chromium.' | 964 'http://build.chromium.org/p/tryserver.chromium.' |
| 965 'linux/builders/linux_chromium_variable/builds/121'), | 965 'linux/builders/linux_chromium_variable/builds/121'), |
| 966 'try_job_build_number': 121 | 966 'try_job_build_number': 121 |
| 967 } | 967 } |
| 968 ] | 968 ] |
| 969 } | 969 } |
| 970 } | 970 } |
| 971 self.assertEqual(expected_culprits_info, culprits_info) | 971 self.assertEqual(expected_culprits_info, culprits_info) |
| OLD | NEW |