blob: 26ee561e31071c4f36c6955c4fe77e227dc1c12d [file] [log] [blame]
# coding=utf8
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Triggers experimental try jobs on Rietveld without monitoring the results."""
import random
import urllib2
from verification import base
class TriggerExperimentalTryJobVerifier(base.Verifier):
name = 'trigger experimental try job'
def __init__(self, context, percentage, revision, try_job_description):
super(TriggerExperimentalTryJobVerifier, self).__init__()
self.context = context
self.percentage = percentage
self.revision = revision
self.try_job_description = try_job_description
def verify(self, pending):
if random.random() < self.percentage:
try:
self.context.rietveld.trigger_try_jobs(
pending.issue, pending.patchset, 'CQ', False, self.revision,
self.try_job_description)
except urllib2.HTTPError as e:
if e.code not in (400, 500, 503):
raise
# Always succeed - experimental try jobs are not stable enough
# to block CQ on them, but triggering builds allows developers
# to get enough real-world traffic to get them to stable state.
pending.verifications[self.name] = base.SimpleStatus(base.SUCCEEDED)
def update_status(self, queue):
pass