Esempio n. 1
0
  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))
Esempio n. 2
0
  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)
Esempio n. 3
0
    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))
Esempio n. 4
0
    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),
        )
Esempio n. 5
0
 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),
     )
Esempio n. 6
0
  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))
Esempio n. 7
0
  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))
Esempio n. 8
0
  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))
Esempio n. 9
0
  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))
Esempio n. 10
0
    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)