示例#1
0
    def testSendNotificationForCulprit(self, mock_post, _):
        repo_name = 'chromium'
        revision = 'rev1'
        revert_status = None

        culprit = WfSuspectedCL.Create(repo_name, revision, 123)
        culprit.put()

        culprit_link = culprit.GetCulpritLink()
        false_positive_bug_link = gerrit.CreateFinditWrongBugLink(
            gerrit.FINDIT_BUILD_FAILURE_COMPONENT, culprit_link, revision)

        parameters = SendNotificationForCulpritParameters(
            cl_key=culprit.key.urlsafe(),
            force_notify=False,
            revert_status=revert_status,
            failure_type=failure_type.COMPILE)

        self.assertTrue(
            gerrit.SendNotificationForCulprit(parameters,
                                              self.codereview_info))
        message = textwrap.dedent("""
    Findit (https://goo.gl/kROfz5) %s this CL at revision %s as the culprit for
    failures in the build cycles as shown on:
    https://analysis.chromium.org/waterfall/culprit?key=%s
    If it is a false positive, please report it at %s.""") % (
            'identified', self.culprit_commit_position, culprit.key.urlsafe(),
            false_positive_bug_link)
        mock_post.assert_called_once_with(self.review_change_id, message, True)
示例#2
0
def SendNotificationForCulprit(parameters):
    culprit = entity_util.GetEntityFromUrlsafeKey(parameters.cl_key)
    assert culprit

    revision = culprit.revision
    repo_name = culprit.repo_name

    force_notify = parameters.force_notify
    revert_status = parameters.revert_status
    sent = False
    should_send = False

    action_settings = waterfall_config.GetActionSettings()
    # Set some impossible default values to prevent notification by default.
    build_num_threshold = action_settings.get(
        'cr_notification_build_threshold', 100000)
    if _ShouldSendNotification(repo_name, revision, force_notify,
                               revert_status, build_num_threshold):
        should_send = True
        codereview_info = GetCodeReviewDataForACulprit(parameters.cl_key)
        sent = gerrit.SendNotificationForCulprit(parameters, codereview_info)

    MonitoringCulpritNotification(parameters.failure_type, 'culprit', sent,
                                  should_send)
    return sent
示例#3
0
    def testSendNotificationForCulpritNoCodeReview(self, _):
        repo_name = 'chromium'
        revision = 'rev1'
        revert_status = services_constants.CREATED_BY_SHERIFF

        culprit = WfSuspectedCL.Create(repo_name, revision, 123)
        culprit.put()

        parameters = SendNotificationForCulpritParameters(
            cl_key=culprit.key.urlsafe(),
            force_notify=False,
            revert_status=revert_status,
            failure_type=failure_type.COMPILE)
        self.assertFalse(
            gerrit.SendNotificationForCulprit(parameters,
                                              self.codereview_info))