| # 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 |