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

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

Issue 2605803002: [Findit] Refactoring WfTryJobData into BaseTryJobData, WfTryJobData, and FlakeTryJobData (Closed)
Patch Set: Fixing code coverage Created 3 years, 11 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 testing_utils import testing 5 from testing_utils import testing
6 6
7 from common.waterfall import failure_type 7 from common.waterfall import failure_type
8 from libs.gitiles.gitiles_repository import GitilesRepository 8 from libs.gitiles.gitiles_repository import GitilesRepository
9 from model import analysis_approach_type 9 from model import analysis_approach_type
10 from model import analysis_status 10 from model import analysis_status
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 427
428 def testIdentifyCulpritForCompileTryJobNoCulprit(self): 428 def testIdentifyCulpritForCompileTryJobNoCulprit(self):
429 master_name = 'm' 429 master_name = 'm'
430 builder_name = 'b' 430 builder_name = 'b'
431 build_number = 1 431 build_number = 1
432 try_job_id = '1' 432 try_job_id = '1'
433 433
434 try_job = WfTryJob.Create(master_name, builder_name, build_number) 434 try_job = WfTryJob.Create(master_name, builder_name, build_number)
435 try_job.put() 435 try_job.put()
436 try_job_data = WfTryJobData.Create(try_job_id) 436 try_job_data = WfTryJobData.Create(try_job_id)
437 try_job_data.try_job_key = try_job.key
437 try_job_data.put() 438 try_job_data.put()
438 439
439 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 440 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
440 analysis.put() 441 analysis.put()
441 442
442 pipeline = IdentifyTryJobCulpritPipeline() 443 pipeline = IdentifyTryJobCulpritPipeline()
443 culprit = pipeline.run( 444 culprit = pipeline.run(
444 master_name, builder_name, build_number, ['rev1'], 445 master_name, builder_name, build_number, ['rev1'],
445 failure_type.COMPILE, '1', None) 446 failure_type.COMPILE, '1', None)
446 try_job = WfTryJob.Get(master_name, builder_name, build_number) 447 try_job = WfTryJob.Get(master_name, builder_name, build_number)
(...skipping 14 matching lines...) Expand all
461 compile_result = { 462 compile_result = {
462 'report': { 463 'report': {
463 'result': { 464 'result': {
464 'rev1': 'passed', 465 'rev1': 'passed',
465 'rev2': 'failed' 466 'rev2': 'failed'
466 }, 467 },
467 }, 468 },
468 } 469 }
469 470
470 try_job_data = WfTryJobData.Create(try_job_id) 471 try_job_data = WfTryJobData.Create(try_job_id)
472 try_job_data.try_job_key = WfTryJob.Create(
473 master_name, builder_name, build_number).key
471 try_job_data.put() 474 try_job_data.put()
472 475
473 try_job = WfTryJob.Create(master_name, builder_name, build_number) 476 try_job = WfTryJob.Create(master_name, builder_name, build_number)
474 try_job.status = analysis_status.RUNNING 477 try_job.status = analysis_status.RUNNING
475 try_job.compile_results = [{ 478 try_job.compile_results = [{
476 'report': { 479 'report': {
477 'result': { 480 'result': {
478 'rev1': 'passed', 481 'rev1': 'passed',
479 'rev2': 'failed' 482 'rev2': 'failed'
480 }, 483 },
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 'report': { 546 'report': {
544 'result': { 547 'result': {
545 'rev1': 'passed', 548 'rev1': 'passed',
546 'rev2': 'passed' 549 'rev2': 'passed'
547 } 550 }
548 }, 551 },
549 'url': 'url', 552 'url': 'url',
550 'try_job_id': try_job_id, 553 'try_job_id': try_job_id,
551 } 554 }
552 555
553 WfTryJobData.Create(try_job_id).put() 556 try_job = WfTryJob.Create(master_name, builder_name, build_number)
554 WfTryJob.Create(master_name, builder_name, build_number).put() 557 try_job.put()
558
559 try_job_data = WfTryJobData.Create(try_job_id)
560 try_job_data.try_job_key = try_job.key
561 try_job_data.put()
562
555 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 563 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
556 analysis.put() 564 analysis.put()
557 565
558 pipeline = IdentifyTryJobCulpritPipeline() 566 pipeline = IdentifyTryJobCulpritPipeline()
559 culprit = pipeline.run( 567 culprit = pipeline.run(
560 master_name, builder_name, build_number, ['rev1'], 568 master_name, builder_name, build_number, ['rev1'],
561 failure_type.COMPILE, '1', compile_result) 569 failure_type.COMPILE, '1', compile_result)
562 try_job = WfTryJob.Get(master_name, builder_name, build_number) 570 try_job = WfTryJob.Get(master_name, builder_name, build_number)
563 571
564 self.assertIsNone(culprit) 572 self.assertIsNone(culprit)
565 self.assertEqual(analysis_status.COMPLETED, try_job.status) 573 self.assertEqual(analysis_status.COMPLETED, try_job.status)
566 574
567 try_job_data = WfTryJobData.Get(try_job_id) 575 try_job_data = WfTryJobData.Get(try_job_id)
568 self.assertIsNone(try_job_data.culprits) 576 self.assertIsNone(try_job_data.culprits)
569 577
570 self.assertIsNone(analysis.result_status) 578 self.assertIsNone(analysis.result_status)
571 self.assertIsNone(analysis.suspected_cls) 579 self.assertIsNone(analysis.suspected_cls)
572 580
573 def testIdentifyCulpritForTestTryJobNoTryJobResultNoHeuristicResult(self): 581 def testIdentifyCulpritForTestTryJobNoTryJobResultNoHeuristicResult(self):
574 master_name = 'm' 582 master_name = 'm'
575 builder_name = 'b' 583 builder_name = 'b'
576 build_number = 1 584 build_number = 1
577 try_job_id = '1' 585 try_job_id = '1'
578 586
579 WfTryJobData.Create(try_job_id).put()
580 try_job = WfTryJob.Create(master_name, builder_name, build_number) 587 try_job = WfTryJob.Create(master_name, builder_name, build_number)
581 try_job.status = analysis_status.RUNNING 588 try_job.status = analysis_status.RUNNING
582 try_job.put() 589 try_job.put()
590
591 try_job_data = WfTryJobData.Create(try_job_id)
592 try_job_data.try_job_key = try_job.key
593 try_job_data.put()
594
583 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 595 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
584 analysis.put() 596 analysis.put()
585 597
586 pipeline = IdentifyTryJobCulpritPipeline() 598 pipeline = IdentifyTryJobCulpritPipeline()
587 culprit = pipeline.run( 599 culprit = pipeline.run(
588 master_name, builder_name, build_number, ['rev1', 'rev2'], 600 master_name, builder_name, build_number, ['rev1', 'rev2'],
589 failure_type.TEST, '1', None) 601 failure_type.TEST, '1', None)
590 602
591 self.assertIsNone(culprit) 603 self.assertIsNone(culprit)
592 604
593 try_job_data = WfTryJobData.Get(try_job_id) 605 try_job_data = WfTryJobData.Get(try_job_id)
594 self.assertIsNone(try_job_data.culprits) 606 self.assertIsNone(try_job_data.culprits)
595 self.assertIsNone(analysis.result_status) 607 self.assertIsNone(analysis.result_status)
596 self.assertIsNone(analysis.suspected_cls) 608 self.assertIsNone(analysis.suspected_cls)
597 609
598 def testIdentifyCulpritForTestTryJobNoTryJobResultWithHeuristicResult(self): 610 def testIdentifyCulpritForTestTryJobNoTryJobResultWithHeuristicResult(self):
599 master_name = 'm' 611 master_name = 'm'
600 builder_name = 'b' 612 builder_name = 'b'
601 build_number = 1 613 build_number = 1
602 try_job_id = '1' 614 try_job_id = '1'
603 615
604 suspected_cl = { 616 suspected_cl = {
605 'revision': 'rev1', 617 'revision': 'rev1',
606 'commit_position': 1, 618 'commit_position': 1,
607 'url': 'url_1', 619 'url': 'url_1',
608 'repo_name': 'chromium' 620 'repo_name': 'chromium'
609 } 621 }
610 622
611 WfTryJobData.Create(try_job_id).put()
612 try_job = WfTryJob.Create(master_name, builder_name, build_number) 623 try_job = WfTryJob.Create(master_name, builder_name, build_number)
613 try_job.status = analysis_status.RUNNING 624 try_job.status = analysis_status.RUNNING
614 try_job.put() 625 try_job.put()
615 626
627 try_job_data = WfTryJobData.Create(try_job_id)
628 try_job_data.try_job_key = try_job.key
629 try_job_data.put()
630
616 # Heuristic analysis already provided some results. 631 # Heuristic analysis already provided some results.
617 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 632 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
618 analysis.result_status = result_status.FOUND_UNTRIAGED 633 analysis.result_status = result_status.FOUND_UNTRIAGED
619 analysis.suspected_cls = [suspected_cl] 634 analysis.suspected_cls = [suspected_cl]
620 analysis.put() 635 analysis.put()
621 636
622 pipeline = IdentifyTryJobCulpritPipeline() 637 pipeline = IdentifyTryJobCulpritPipeline()
623 culprit = pipeline.run( 638 culprit = pipeline.run(
624 master_name, builder_name, build_number, ['rev1', 'rev2'], 639 master_name, builder_name, build_number, ['rev1', 'rev2'],
625 failure_type.TEST, '1', None) 640 failure_type.TEST, '1', None)
(...skipping 22 matching lines...) Expand all
648 'valid': True, 663 'valid': True,
649 'failures': ['a_test1'] 664 'failures': ['a_test1']
650 } 665 }
651 } 666 }
652 } 667 }
653 }, 668 },
654 'url': 'url', 669 'url': 'url',
655 'try_job_id': try_job_id 670 'try_job_id': try_job_id
656 } 671 }
657 672
658 WfTryJobData.Create(try_job_id).put()
659 try_job = WfTryJob.Create(master_name, builder_name, build_number) 673 try_job = WfTryJob.Create(master_name, builder_name, build_number)
660 try_job.status = analysis_status.RUNNING 674 try_job.status = analysis_status.RUNNING
661 try_job.put() 675 try_job.put()
676
677 try_job_data = WfTryJobData.Create(try_job_id)
678 try_job_data.try_job_key = try_job.key
679 try_job_data.put()
680
662 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 681 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
663 analysis.put() 682 analysis.put()
664 683
665 pipeline = IdentifyTryJobCulpritPipeline() 684 pipeline = IdentifyTryJobCulpritPipeline()
666 culprit = pipeline.run( 685 culprit = pipeline.run(
667 master_name, builder_name, build_number, [], failure_type.TEST, '1', 686 master_name, builder_name, build_number, [], failure_type.TEST, '1',
668 test_result) 687 test_result)
669 688
670 self.assertIsNone(culprit) 689 self.assertIsNone(culprit)
671 690
(...skipping 18 matching lines...) Expand all
690 'valid': True, 709 'valid': True,
691 'failures': ['a_test1'] 710 'failures': ['a_test1']
692 } 711 }
693 } 712 }
694 } 713 }
695 }, 714 },
696 'url': 'url', 715 'url': 'url',
697 'try_job_id': try_job_id 716 'try_job_id': try_job_id
698 } 717 }
699 718
700 WfTryJobData.Create(try_job_id).put()
701 try_job = WfTryJob.Create(master_name, builder_name, build_number) 719 try_job = WfTryJob.Create(master_name, builder_name, build_number)
702 try_job.status = analysis_status.RUNNING 720 try_job.status = analysis_status.RUNNING
703 try_job.put() 721 try_job.put()
722
723 try_job_data = WfTryJobData.Create(try_job_id)
724 try_job_data.try_job_key = try_job.key
725 try_job_data.put()
726
704 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 727 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
705 analysis.put() 728 analysis.put()
706 729
707 pipeline = IdentifyTryJobCulpritPipeline() 730 pipeline = IdentifyTryJobCulpritPipeline()
708 culprit = pipeline.run( 731 culprit = pipeline.run(
709 master_name, builder_name, build_number, ['rev3'], failure_type.TEST, 732 master_name, builder_name, build_number, ['rev3'], failure_type.TEST,
710 '1', test_result) 733 '1', test_result)
711 734
712 expected_suspected_cl = { 735 expected_suspected_cl = {
713 'revision': 'rev3', 736 'revision': 'rev3',
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 'status': 'passed', 799 'status': 'passed',
777 'valid': True 800 'valid': True
778 } 801 }
779 } 802 }
780 } 803 }
781 }, 804 },
782 'url': 'url', 805 'url': 'url',
783 'try_job_id': try_job_id 806 'try_job_id': try_job_id
784 } 807 }
785 808
786 WfTryJobData.Create(try_job_id).put()
787 try_job = WfTryJob.Create(master_name, builder_name, build_number) 809 try_job = WfTryJob.Create(master_name, builder_name, build_number)
788 try_job.status = analysis_status.RUNNING 810 try_job.status = analysis_status.RUNNING
789 try_job.test_results = [test_result] 811 try_job.test_results = [test_result]
790 try_job.put() 812 try_job.put()
813
814 try_job_data = WfTryJobData.Create(try_job_id)
815 try_job_data.try_job_key = try_job.key
816 try_job_data.put()
817
791 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 818 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
792 analysis.put() 819 analysis.put()
793 820
794 pipeline = IdentifyTryJobCulpritPipeline() 821 pipeline = IdentifyTryJobCulpritPipeline()
795 culprit = pipeline.run( 822 culprit = pipeline.run(
796 master_name, builder_name, build_number, ['rev1', 'rev2'], 823 master_name, builder_name, build_number, ['rev1', 'rev2'],
797 failure_type.TEST, '1', test_result) 824 failure_type.TEST, '1', test_result)
798 825
799 a_test1_suspected_cl = { 826 a_test1_suspected_cl = {
800 'revision': 'rev1', 827 'revision': 'rev1',
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 suspected_cl.put() 967 suspected_cl.put()
941 968
942 compile_result = { 969 compile_result = {
943 'report': { 970 'report': {
944 'result': { 971 'result': {
945 revision: 'failed', 972 revision: 'failed',
946 }, 973 },
947 }, 974 },
948 } 975 }
949 976
950 try_job_data = WfTryJobData.Create(try_job_id)
951 try_job_data.put()
952
953 try_job = WfTryJob.Create(master_name, builder_name, build_number) 977 try_job = WfTryJob.Create(master_name, builder_name, build_number)
954 try_job.status = analysis_status.RUNNING 978 try_job.status = analysis_status.RUNNING
955 try_job.compile_results = [{ 979 try_job.compile_results = [{
956 'report': { 980 'report': {
957 'result': { 981 'result': {
958 revision: 'failed', 982 revision: 'failed',
959 }, 983 },
960 }, 984 },
961 'try_job_id': try_job_id, 985 'try_job_id': try_job_id,
962 }] 986 }]
987 try_job.put()
963 988
964 try_job.put() 989 try_job_data = WfTryJobData.Create(try_job_id)
990 try_job_data.try_job_key = try_job.key
991 try_job_data.put()
965 992
966 pipeline = IdentifyTryJobCulpritPipeline() 993 pipeline = IdentifyTryJobCulpritPipeline()
967 pipeline.run(master_name, builder_name, build_number, [revision], 994 pipeline.run(master_name, builder_name, build_number, [revision],
968 failure_type.COMPILE, '1', compile_result) 995 failure_type.COMPILE, '1', compile_result)
969 996
970 self.assertEqual(analysis.result_status, 997 self.assertEqual(analysis.result_status,
971 result_status.FOUND_UNTRIAGED) 998 result_status.FOUND_UNTRIAGED)
972 self.assertEqual(analysis.suspected_cls, [heuristic_suspected_cl]) 999 self.assertEqual(analysis.suspected_cls, [heuristic_suspected_cl])
973 self.assertEqual(version, analysis.version) # No update to analysis. 1000 self.assertEqual(version, analysis.version) # No update to analysis.
974 1001
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1171 1198
1172 identify_try_job_culprit_pipeline._NotifyCulprits( 1199 identify_try_job_culprit_pipeline._NotifyCulprits(
1173 master_name, builder_name, build_number, None, 1200 master_name, builder_name, build_number, None,
1174 heuristic_cls, compile_suspected_cl) 1201 heuristic_cls, compile_suspected_cl)
1175 self.assertEqual(1, len(instances)) 1202 self.assertEqual(1, len(instances))
1176 self.assertTrue(instances[0].started) 1203 self.assertTrue(instances[0].started)
1177 1204
1178 def testGetTestFailureCausedByCLResultNone(self): 1205 def testGetTestFailureCausedByCLResultNone(self):
1179 self.assertIsNone( 1206 self.assertIsNone(
1180 identify_try_job_culprit_pipeline._GetTestFailureCausedByCL(None)) 1207 identify_try_job_culprit_pipeline._GetTestFailureCausedByCL(None))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698