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

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

Issue 2179283009: [Findit] Compare lists to lists instead of lists to tuples, and change tests (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Nit function rename, update comment wording Created 4 years, 4 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 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 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 datetime import datetime 5 from datetime import datetime
6 from datetime import timedelta 6 from datetime import timedelta
7 7
8 from common.waterfall import failure_type 8 from common.waterfall import failure_type
9 from model import analysis_status 9 from model import analysis_status
10 from model.wf_analysis import WfAnalysis 10 from model.wf_analysis import WfAnalysis
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 # Run pipeline with signals that have the same failed output nodes. 394 # Run pipeline with signals that have the same failed output nodes.
395 # Observe no new group creation. 395 # Observe no new group creation.
396 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 396 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
397 master_name_2, builder_name, build_number, failure_type.COMPILE, 397 master_name_2, builder_name, build_number, failure_type.COMPILE,
398 blame_list, None, signals, None)) 398 blame_list, None, signals, None))
399 399
400 analysis_2 = WfAnalysis.Get(master_name_2, builder_name, build_number) 400 analysis_2 = WfAnalysis.Get(master_name_2, builder_name, build_number)
401 self.assertEqual( 401 self.assertEqual(
402 [master_name, builder_name, build_number], analysis_2.failure_group_key) 402 [master_name, builder_name, build_number], analysis_2.failure_group_key)
403 403
404 def testGroupCompilesWithRelatedFailures(self): 404 def testGroupCompilesWithRelatedFailuresWithHeuristicResult(self):
405 master_name = 'm1' 405 master_name = 'm1'
406 builder_name = 'b' 406 builder_name = 'b'
407 build_number = 1 407 build_number = 1
408 master_name_2 = 'm2'
409
410 blame_list = ['a']
411
412 signals = {
413 'compile': {
414 'failed_output_nodes': [
415 'abc.obj'
416 ]
417 }
418 }
419
420 heuristic_result = {
421 'failures': [
422 {
423 'step_name': 'step1',
424 'suspected_cls': [
425 {
426 'revision': 'rev1',
427 }
428 ],
429 }
430 ]
431 }
432
433 WfAnalysis.Create(master_name, builder_name, build_number).put()
434 # Run pipeline with signals that have certain failed output nodes.
435 # Observe new group creation.
436 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
437 master_name, builder_name, build_number, failure_type.COMPILE,
438 blame_list, None, signals, heuristic_result))
439 self.assertIsNotNone(
440 WfFailureGroup.Get(master_name, builder_name, build_number))
441
442 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
443 # Run pipeline with signals that have the same failed output nodes.
444 # Observe no new group creation.
445 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
446 master_name_2, builder_name, build_number, failure_type.COMPILE,
447 blame_list, None, signals, heuristic_result))
448 self.assertIsNone(
449 WfFailureGroup.Get(master_name_2, builder_name, build_number))
450
451 def testGroupCompilesWithRelatedFailuresWithoutHeuristicResult(self):
452 master_name = 'm1'
453 builder_name = 'b'
454 build_number = 1
408 master_name_2 = 'm2' 455 master_name_2 = 'm2'
409 456
410 blame_list = ['a'] 457 blame_list = ['a']
411 458
412 signals = { 459 signals = {
413 'compile': { 460 'compile': {
414 'failed_output_nodes': [ 461 'failed_output_nodes': [
415 'abc.obj' 462 'abc.obj'
416 ] 463 ]
417 } 464 }
418 } 465 }
419 466
420 WfAnalysis.Create(master_name, builder_name, build_number).put() 467 WfAnalysis.Create(master_name, builder_name, build_number).put()
421 # Run pipeline with signals that have certain failed output nodes. 468 # Run pipeline with signals that have certain failed output nodes.
422 # Observe new group creation. 469 # Observe new group creation.
423 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 470 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
424 master_name, builder_name, build_number, failure_type.COMPILE, 471 master_name, builder_name, build_number, failure_type.COMPILE,
425 blame_list, None, signals, None)) 472 blame_list, None, signals, None))
426 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 473 self.assertIsNotNone(
474 WfFailureGroup.Get(master_name, builder_name, build_number))
427 475
428 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 476 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
429 # Run pipeline with signals that have the same failed output nodes. 477 # Run pipeline with signals that have the same failed output nodes.
430 # Observe no new group creation. 478 # Observe no new group creation.
431 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 479 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
432 master_name_2, builder_name, build_number, failure_type.COMPILE, 480 master_name_2, builder_name, build_number, failure_type.COMPILE,
433 blame_list, None, signals, None)) 481 blame_list, None, signals, None))
434 self.assertIsNone( 482 self.assertIsNone(
435 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 483 WfFailureGroup.Get(master_name_2, builder_name, build_number))
436 484
(...skipping 14 matching lines...) Expand all
451 ] 499 ]
452 } 500 }
453 } 501 }
454 502
455 WfAnalysis.Create(master_name, builder_name, build_number).put() 503 WfAnalysis.Create(master_name, builder_name, build_number).put()
456 # Run pipeline with signals that have certain failed output nodes. 504 # Run pipeline with signals that have certain failed output nodes.
457 # Observe new group creation. 505 # Observe new group creation.
458 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 506 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
459 master_name, builder_name, build_number, failure_type.COMPILE, 507 master_name, builder_name, build_number, failure_type.COMPILE,
460 blame_list_1, None, signals, None)) 508 blame_list_1, None, signals, None))
461 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 509 self.assertIsNotNone(
510 WfFailureGroup.Get(master_name, builder_name, build_number))
462 511
463 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 512 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
464 # Run pipeline with signals that have different failed output nodes. 513 # Run pipeline with signals that have different failed output nodes.
465 # Observe new group creation. 514 # Observe new group creation.
466 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 515 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
467 master_name_2, builder_name, build_number, failure_type.COMPILE, 516 master_name_2, builder_name, build_number, failure_type.COMPILE,
468 blame_list_2, None, signals, None)) 517 blame_list_2, None, signals, None))
469 self.assertTrue( 518 self.assertTrue(
470 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 519 WfFailureGroup.Get(master_name_2, builder_name, build_number))
471 520
(...skipping 25 matching lines...) Expand all
497 } 546 }
498 ] 547 ]
499 } 548 }
500 549
501 heuristic_result_2 = { 550 heuristic_result_2 = {
502 'failures': [ 551 'failures': [
503 { 552 {
504 'step_name': 'step1', 553 'step_name': 'step1',
505 'suspected_cls': [ 554 'suspected_cls': [
506 { 555 {
507 'revision': 'rev1', 556 'revision': 'rev2',
508 } 557 }
509 ], 558 ],
510 } 559 }
511 ] 560 ]
512 } 561 }
513 562
514 WfAnalysis.Create(master_name, builder_name, build_number).put() 563 WfAnalysis.Create(master_name, builder_name, build_number).put()
515 # Run pipeline with signals that have certain failed output nodes. 564 # Run pipeline with signals that have certain failed output nodes.
516 # Observe new group creation. 565 # Observe new group creation.
517 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 566 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
518 master_name, builder_name, build_number, failure_type.COMPILE, 567 master_name, builder_name, build_number, failure_type.COMPILE,
519 blame_list, None, signals, 568 blame_list, None, signals,
520 heuristic_result_1)) 569 heuristic_result_1))
521 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 570 self.assertIsNotNone(
571 WfFailureGroup.Get(master_name, builder_name, build_number))
522 572
523 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 573 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
524 # Run pipeline with signals that have different failed output nodes. 574 # Run pipeline with signals that have different failed output nodes.
525 # Observe new group creation. 575 # Observe new group creation.
526 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 576 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
527 master_name_2, builder_name, build_number, failure_type.COMPILE, 577 master_name_2, builder_name, build_number, failure_type.COMPILE,
528 blame_list, None, signals, heuristic_result_2)) 578 blame_list, None, signals, heuristic_result_2))
529 self.assertTrue( 579 self.assertTrue(
530 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 580 WfFailureGroup.Get(master_name_2, builder_name, build_number))
531 581
(...skipping 20 matching lines...) Expand all
552 ] 602 ]
553 } 603 }
554 } 604 }
555 605
556 WfAnalysis.Create(master_name, builder_name, build_number).put() 606 WfAnalysis.Create(master_name, builder_name, build_number).put()
557 # Run pipeline with signals that have certain failed output nodes. 607 # Run pipeline with signals that have certain failed output nodes.
558 # Observe new group creation. 608 # Observe new group creation.
559 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 609 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
560 master_name, builder_name, build_number, failure_type.COMPILE, 610 master_name, builder_name, build_number, failure_type.COMPILE,
561 blame_list, None, signals_1, None)) 611 blame_list, None, signals_1, None))
562 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 612 self.assertIsNotNone(
613 WfFailureGroup.Get(master_name, builder_name, build_number))
563 614
564 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 615 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
565 # Run pipeline with signals that have different failed output nodes. 616 # Run pipeline with signals that have different failed output nodes.
566 # Observe new group creation. 617 # Observe new group creation.
567 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 618 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
568 master_name_2, builder_name, build_number, failure_type.COMPILE, 619 master_name_2, builder_name, build_number, failure_type.COMPILE,
569 blame_list, None, signals_2, None)) 620 blame_list, None, signals_2, None))
570 self.assertTrue( 621 self.assertTrue(
571 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 622 WfFailureGroup.Get(master_name_2, builder_name, build_number))
572 623
573 def testDoNotGroupTestWithNoSteps(self): 624 def testDoNotGroupTestWithNoSteps(self):
574 master_name = 'm1' 625 master_name = 'm1'
575 builder_name = 'b' 626 builder_name = 'b'
576 build_number = 1 627 build_number = 1
577 628
578 blame_list = ['a'] 629 blame_list = ['a']
579 630
580 failed_steps = {} 631 failed_steps = {}
581 632
582 WfAnalysis.Create(master_name, builder_name, build_number).put() 633 WfAnalysis.Create(master_name, builder_name, build_number).put()
583 # Run pipeline with signals that have zero failed steps. 634 # Run pipeline with signals that have zero failed steps.
584 # Observe that the build failure is unique, but there is no new group 635 # Observe that the build failure is unique, but there is no new group
585 # creation. 636 # creation.
586 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 637 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
587 master_name, builder_name, build_number, failure_type.TEST, blame_list, 638 master_name, builder_name, build_number, failure_type.TEST, blame_list,
588 failed_steps, None, None)) 639 failed_steps, None, None))
589 self.assertIsNone( 640 self.assertIsNone(
590 WfFailureGroup.Get(master_name, builder_name, build_number)) 641 WfFailureGroup.Get(master_name, builder_name, build_number))
591 642
592 def testGroupTestsWithRelatedSteps(self): 643 def testGroupTestsWithRelatedStepsWithHeuristicResult(self):
593 master_name = 'm1' 644 master_name = 'm1'
594 builder_name = 'b' 645 builder_name = 'b'
595 build_number = 1 646 build_number = 1
647 master_name_2 = 'm2'
648
649 blame_list = ['a']
650
651 failed_steps = {
652 'step_a': {
653 'current_failure': 3,
654 'first_failure': 2,
655 'last_pass': 1
656 }
657 }
658
659 heuristic_result = {
660 'failures': [
661 {
662 'step_name': 'step1',
663 'suspected_cls': [
664 {
665 'revision': 'rev1',
666 }
667 ],
668 }
669 ]
670 }
671
672 WfAnalysis.Create(master_name, builder_name, build_number).put()
673 # Run pipeline with signals that have certain failed steps.
674 # Observe new group creation.
675 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
676 master_name, builder_name, build_number, failure_type.TEST, blame_list,
677 failed_steps, None, heuristic_result))
678 self.assertIsNotNone(
679 WfFailureGroup.Get(master_name, builder_name, build_number))
680
681 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
682 # Run pipeline with signals that have the same failed steps.
683 # Observe no new group creation.
684 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
685 master_name_2, builder_name, build_number, failure_type.TEST,
686 blame_list, failed_steps, None, heuristic_result))
687 self.assertIsNone(
688 WfFailureGroup.Get(master_name_2, builder_name, build_number))
689
690 def testGroupTestsWithRelatedStepsWithoutHeuristicResult(self):
691 master_name = 'm1'
692 builder_name = 'b'
693 build_number = 1
596 master_name_2 = 'm2' 694 master_name_2 = 'm2'
597 695
598 blame_list = ['a'] 696 blame_list = ['a']
599 697
600 failed_steps = { 698 failed_steps = {
601 'step_a': { 699 'step_a': {
602 'current_failure': 3, 700 'current_failure': 3,
603 'first_failure': 2, 701 'first_failure': 2,
604 'last_pass': 1 702 'last_pass': 1
605 } 703 }
606 } 704 }
607 705
608 WfAnalysis.Create(master_name, builder_name, build_number).put() 706 WfAnalysis.Create(master_name, builder_name, build_number).put()
609 # Run pipeline with signals that have certain failed steps. 707 # Run pipeline with signals that have certain failed steps.
610 # Observe new group creation. 708 # Observe new group creation.
611 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 709 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
612 master_name, builder_name, build_number, failure_type.TEST, blame_list, 710 master_name, builder_name, build_number, failure_type.TEST, blame_list,
613 failed_steps, None, None)) 711 failed_steps, None, None))
614 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 712 self.assertIsNotNone(
713 WfFailureGroup.Get(master_name, builder_name, build_number))
615 714
616 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 715 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
617 # Run pipeline with signals that have the same failed steps. 716 # Run pipeline with signals that have the same failed steps.
618 # Observe no new group creation. 717 # Observe no new group creation.
619 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 718 self.assertFalse(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
620 master_name_2, builder_name, build_number, failure_type.TEST, 719 master_name_2, builder_name, build_number, failure_type.TEST,
621 blame_list, failed_steps, None, None)) 720 blame_list, failed_steps, None, None))
622 self.assertIsNone( 721 self.assertIsNone(
623 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 722 WfFailureGroup.Get(master_name_2, builder_name, build_number))
624 723
(...skipping 13 matching lines...) Expand all
638 } 737 }
639 } 738 }
640 739
641 WfAnalysis.Create(master_name, builder_name, build_number).put() 740 WfAnalysis.Create(master_name, builder_name, build_number).put()
642 # Run pipeline with signals that have certain failed steps. 741 # Run pipeline with signals that have certain failed steps.
643 # Observe new group creation. 742 # Observe new group creation.
644 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 743 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
645 master_name, builder_name, build_number, failure_type.TEST, 744 master_name, builder_name, build_number, failure_type.TEST,
646 blame_list_1, failed_steps, None, 745 blame_list_1, failed_steps, None,
647 None)) 746 None))
648 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 747 self.assertIsNotNone(
748 WfFailureGroup.Get(master_name, builder_name, build_number))
649 749
650 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 750 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
651 # Run pipeline with signals that have different failed steps. 751 # Run pipeline with signals that have different failed steps.
652 # Observe new group creation. 752 # Observe new group creation.
653 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 753 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
654 master_name_2, builder_name, build_number, failure_type.TEST, 754 master_name_2, builder_name, build_number, failure_type.TEST,
655 blame_list_2, failed_steps, None, None)) 755 blame_list_2, failed_steps, None, None))
656 self.assertTrue( 756 self.assertTrue(
657 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 757 WfFailureGroup.Get(master_name_2, builder_name, build_number))
658 758
(...skipping 24 matching lines...) Expand all
683 } 783 }
684 ] 784 ]
685 } 785 }
686 786
687 heuristic_result_2 = { 787 heuristic_result_2 = {
688 'failures': [ 788 'failures': [
689 { 789 {
690 'step_name': 'step1', 790 'step_name': 'step1',
691 'suspected_cls': [ 791 'suspected_cls': [
692 { 792 {
693 'revision': 'rev1', 793 'revision': 'rev2',
694 } 794 }
695 ], 795 ],
696 } 796 }
697 ] 797 ]
698 } 798 }
699 799
700 WfAnalysis.Create(master_name, builder_name, build_number).put() 800 WfAnalysis.Create(master_name, builder_name, build_number).put()
701 # Run pipeline with signals that have certain failed steps. 801 # Run pipeline with signals that have certain failed steps.
702 # Observe new group creation. 802 # Observe new group creation.
703 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 803 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
704 master_name, builder_name, build_number, failure_type.TEST, blame_list, 804 master_name, builder_name, build_number, failure_type.TEST, blame_list,
705 failed_steps, None, heuristic_result_1)) 805 failed_steps, None, heuristic_result_1))
706 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 806 self.assertIsNotNone(
807 WfFailureGroup.Get(master_name, builder_name, build_number))
707 808
708 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 809 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
709 # Run pipeline with signals that have different failed steps. 810 # Run pipeline with signals that have different failed steps.
710 # Observe new group creation. 811 # Observe new group creation.
711 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 812 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
712 master_name_2, builder_name, build_number, failure_type.TEST, 813 master_name_2, builder_name, build_number, failure_type.TEST,
713 blame_list, failed_steps, None, heuristic_result_2)) 814 blame_list, failed_steps, None, heuristic_result_2))
714 self.assertTrue( 815 self.assertTrue(
715 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 816 WfFailureGroup.Get(master_name_2, builder_name, build_number))
716 817
(...skipping 20 matching lines...) Expand all
737 'last_pass': 1 838 'last_pass': 1
738 } 839 }
739 } 840 }
740 841
741 WfAnalysis.Create(master_name, builder_name, build_number).put() 842 WfAnalysis.Create(master_name, builder_name, build_number).put()
742 # Run pipeline with signals that have certain failed steps. 843 # Run pipeline with signals that have certain failed steps.
743 # Observe new group creation. 844 # Observe new group creation.
744 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 845 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
745 master_name, builder_name, build_number, failure_type.TEST, blame_list, 846 master_name, builder_name, build_number, failure_type.TEST, blame_list,
746 failed_steps_1, None, None)) 847 failed_steps_1, None, None))
747 self.assertTrue(WfFailureGroup.Get(master_name, builder_name, build_number)) 848 self.assertIsNotNone(
849 WfFailureGroup.Get(master_name, builder_name, build_number))
748 850
749 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 851 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
750 # Run pipeline with signals that have different failed steps. 852 # Run pipeline with signals that have different failed steps.
751 # Observe new group creation. 853 # Observe new group creation.
752 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 854 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
753 master_name_2, builder_name, build_number, failure_type.TEST, 855 master_name_2, builder_name, build_number, failure_type.TEST,
754 blame_list, failed_steps_2, None, None)) 856 blame_list, failed_steps_2, None, None))
755 self.assertTrue( 857 self.assertTrue(
756 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 858 WfFailureGroup.Get(master_name_2, builder_name, build_number))
757 859
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 {'source': 'b.cc', 'target': 'b.o'}, 1180 {'source': 'b.cc', 'target': 'b.o'},
1079 ] 1181 ]
1080 } 1182 }
1081 } 1183 }
1082 1184
1083 self.assertEqual( 1185 self.assertEqual(
1084 try_job_util._GetFailedTargetsFromSignals( 1186 try_job_util._GetFailedTargetsFromSignals(
1085 signals, 'master1', 'builder1'), 1187 signals, 'master1', 'builder1'),
1086 ['b.o']) 1188 ['b.o'])
1087 1189
1088 def testGenPotentialCulpritTupleListNoHeuristicResult(self): 1190 def testGetSuspectedCLsWithFailuresNoHeuristicResult(self):
1089 heuristic_result = None 1191 heuristic_result = None
1090 expected_suspected_revisions = [] 1192 expected_suspected_revisions = []
1091 self.assertEqual( 1193 self.assertEqual(
1092 expected_suspected_revisions, 1194 expected_suspected_revisions,
1093 sorted(try_job_util.GenPotentialCulpritTupleList(heuristic_result))) 1195 sorted(try_job_util.GetSuspectedCLsWithFailures(heuristic_result)))
1094 1196
1095 def testGenPotentialCulpritTupleListEmptyHeuristicResult(self): 1197 def testGetSuspectedCLsWithFailuresEmptyHeuristicResult(self):
1096 heuristic_result = {} 1198 heuristic_result = {}
1097 expected_suspected_revisions = [] 1199 expected_suspected_revisions = []
1098 self.assertEqual( 1200 self.assertEqual(
1099 expected_suspected_revisions, 1201 expected_suspected_revisions,
1100 sorted(try_job_util.GenPotentialCulpritTupleList(heuristic_result))) 1202 sorted(try_job_util.GetSuspectedCLsWithFailures(heuristic_result)))
1101 1203
1102 def testGenPotentialCulpritTupleList(self): 1204 def testGetSuspectedCLsWithFailures(self):
1103 heuristic_result = { 1205 heuristic_result = {
1104 'failures': [ 1206 'failures': [
1105 { 1207 {
1106 'step_name': 'step1', 1208 'step_name': 'step1',
1107 'suspected_cls': [], 1209 'suspected_cls': [],
1108 }, 1210 },
1109 { 1211 {
1110 'step_name': 'step2', 1212 'step_name': 'step2',
1111 'suspected_cls': [ 1213 'suspected_cls': [
1112 { 1214 {
(...skipping 29 matching lines...) Expand all
1142 { 1244 {
1143 'revision': 'ghi' 1245 'revision': 'ghi'
1144 } 1246 }
1145 ] 1247 ]
1146 } 1248 }
1147 ] 1249 ]
1148 } 1250 }
1149 ] 1251 ]
1150 } 1252 }
1151 expected_suspected_revisions = [ 1253 expected_suspected_revisions = [
1152 ('step2', 'r1', None), 1254 ['step2', 'r1', None],
1153 ('step2', 'r2', None), 1255 ['step2', 'r2', None],
1154 ('step3', 'abc', 'super_test_1'), 1256 ['step3', 'abc', 'super_test_1'],
1155 ('step3', 'def', 'super_test_2'), 1257 ['step3', 'def', 'super_test_2'],
1156 ('step3', 'ghi', 'super_test_2') 1258 ['step3', 'ghi', 'super_test_2']
1157 ] 1259 ]
1158 self.assertEqual( 1260 self.assertEqual(
1159 expected_suspected_revisions, 1261 expected_suspected_revisions,
1160 sorted(try_job_util.GenPotentialCulpritTupleList(heuristic_result))) 1262 sorted(try_job_util.GetSuspectedCLsWithFailures(heuristic_result)))
1161 1263
1162 def testGetSuspectsFromHeuristicResultForCompile(self): 1264 def testGetSuspectsFromHeuristicResultForCompile(self):
1163 heuristic_result = { 1265 heuristic_result = {
1164 'failures': [ 1266 'failures': [
1165 { 1267 {
1166 'step_name': 'compile', 1268 'step_name': 'compile',
1167 'suspected_cls': [ 1269 'suspected_cls': [
1168 { 1270 {
1169 'revision': 'r1', 1271 'revision': 'r1',
1170 }, 1272 },
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1213 try_job_util._GetSuspectsFromHeuristicResult(heuristic_result)) 1315 try_job_util._GetSuspectsFromHeuristicResult(heuristic_result))
1214 1316
1215 def testShouldBailOutforOutdatedBuild(self): 1317 def testShouldBailOutforOutdatedBuild(self):
1216 yesterday = datetime.utcnow() - timedelta(days=1) 1318 yesterday = datetime.utcnow() - timedelta(days=1)
1217 build = WfBuild.Create('m', 'b', 1) 1319 build = WfBuild.Create('m', 'b', 1)
1218 build.start_time = yesterday 1320 build.start_time = yesterday
1219 self.assertTrue(try_job_util._ShouldBailOutForOutdatedBuild(build)) 1321 self.assertTrue(try_job_util._ShouldBailOutForOutdatedBuild(build))
1220 1322
1221 build.start_time = yesterday + timedelta(hours=1) 1323 build.start_time = yesterday + timedelta(hours=1)
1222 self.assertFalse(try_job_util._ShouldBailOutForOutdatedBuild(build)) 1324 self.assertFalse(try_job_util._ShouldBailOutForOutdatedBuild(build))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698