def test_similar_testcase_reproducible_and_closed_but_issue_open_1(self): """Tests result is true when there is a similar testcase which is reproducible and fixed due to flakiness but issue is kept open. Only update testcase bug mapping if similar testcase is fixed longer than the grace period.""" self.issue.save() similar_testcase = test_utils.create_generic_testcase() similar_testcase.one_time_crasher_flag = False similar_testcase.open = False similar_testcase.bug_information = str(self.issue.id) similar_testcase.put() self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker)) testcase = data_handler.get_testcase_by_id(self.testcase.key.id()) self.assertEqual(None, testcase.bug_information) self.assertEqual('', self.issue._monorail_issue.comment) similar_testcase.set_metadata( 'closed_time', test_utils.CURRENT_TIME - datetime.timedelta(hours=data_types.MIN_ELAPSED_TIME_SINCE_FIXED + 1)) self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker))
def test_similar_testcase_reproducible_and_closed_but_issue_open_2(self): """Tests result is true when there is a similar testcase which is reproducible and fixed due to flakiness but issue is kept open. Don't update testcase bug mapping if another reproducible testcase is open and attached to this bug.""" self.issue.save() similar_testcase_1 = test_utils.create_generic_testcase() similar_testcase_1.one_time_crasher_flag = False similar_testcase_1.open = False similar_testcase_1.bug_information = str(self.issue.id) similar_testcase_1.put() similar_testcase_2 = test_utils.create_generic_testcase() similar_testcase_2.one_time_crasher_flag = False similar_testcase_2.open = True similar_testcase_2.bug_information = str(self.issue.id) similar_testcase_2.put() self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker)) testcase = data_handler.get_testcase_by_id(self.testcase.key.id()) self.assertEqual(None, testcase.bug_information) self.assertEqual('', self.issue._monorail_issue.comment)
def test_similar_testcase_with_issue_recently_closed(self): """Tests result is true when there is a similar testcase with issue closed recently.""" self.issue.status = 'Fixed' self.issue._monorail_issue.open = False self.issue._monorail_issue.closed = ( test_utils.CURRENT_TIME - datetime.timedelta( hours=data_types.MIN_ELAPSED_TIME_SINCE_FIXED - 1)) self.issue.save() similar_testcase = test_utils.create_generic_testcase() similar_testcase.one_time_crasher_flag = False similar_testcase.open = False similar_testcase.bug_information = str(self.issue.id) similar_testcase.put() self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker)) testcase = data_handler.get_testcase_by_id(self.testcase.key.id()) self.assertEqual( 'Delaying filing a bug since similar testcase (2) in issue (1) ' 'was just fixed.', testcase.get_metadata(triage.TRIAGE_MESSAGE_KEY))
def test_similar_testcase_with_issue_closed_with_ignore_label(self): """Tests result is true when there is a similar testcase with closed issue blacklisted with ignore label.""" self.issue.status = "WontFix" self.issue._monorail_issue.open = False self.issue.labels.add("ClusterFuzz-Ignore") self.issue.save() similar_testcase = test_utils.create_generic_testcase() similar_testcase.one_time_crasher_flag = False similar_testcase.open = False similar_testcase.bug_information = str(self.issue.id) similar_testcase.put() self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker), ) testcase = data_handler.get_testcase_by_id(self.testcase.key.id()) self.assertEqual( "Skipping filing a bug since similar testcase (2) in issue (1) " "is blacklisted with ClusterFuzz-Ignore label.", testcase.get_metadata(triage.TRIAGE_MESSAGE_KEY), )
def test_no_other_testcase(self): """Tests result is false when there is no other similar testcase.""" self.assertEqual( False, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker), )
def test_similar_testcase_without_bug_information(self): """Tests result is false when there is a similar testcase but without an associated bug.""" similar_testcase = test_utils.create_generic_testcase() # pylint: disable=unused-variable self.assertEqual( False, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker))
def test_similar_testcase_get_issue_failed(self): """Tests result is false when there is a similar testcase with an associated bug but we are unable to fetch it via get_issue.""" similar_testcase = test_utils.create_generic_testcase() similar_testcase.bug_information = '2' # Non-existent. similar_testcase.put() self.assertEqual( False, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker))
def test_similar_testcase_is_reproducible_and_open(self): """Tests result is true when there is a similar testcase which is reproducible, open and has an accessible associated bug.""" self.issue.save() similar_testcase = test_utils.create_generic_testcase() similar_testcase.one_time_crasher_flag = False similar_testcase.open = True similar_testcase.bug_information = str(self.issue.id) similar_testcase.put() self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker))
def test_similar_testcase_unreproducible_but_issue_open(self): """Tests result is true when there is a similar testcase which is unreproducible but issue is kept open. Update testcase bug mapping always since this testcase is reproducible.""" self.issue.save() similar_testcase = test_utils.create_generic_testcase() similar_testcase.one_time_crasher_flag = True similar_testcase.open = False similar_testcase.bug_information = str(self.issue.id) similar_testcase.put() self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker))
def test_similar_testcase_unreproducible_but_issue_open(self): """Tests result is true when there is a similar testcase which is unreproducible but issue is kept open. Update testcase bug mapping always since this testcase is reproducible.""" self.issue.save() similar_testcase = test_utils.create_generic_testcase() similar_testcase.one_time_crasher_flag = True similar_testcase.open = False similar_testcase.bug_information = str(self.issue.id) similar_testcase.put() self.assertEqual( True, triage._check_and_update_similar_bug(self.testcase, self.issue_tracker)) testcase = data_handler.get_testcase_by_id(self.testcase.key.id()) self.assertEqual('1', testcase.bug_information) self.assertEqual( 'ClusterFuzz found another reproducible variant for this bug on ' 'test_content_shell_drt job: ' 'https://test-clusterfuzz.appspot.com/testcase?key=1.', self.issue._monorail_issue.comment)