Skip to content

Instantly share code, notes, and snippets.

@rail
Created December 9, 2011 19:36
Show Gist options
  • Save rail/1452953 to your computer and use it in GitHub Desktop.
Save rail/1452953 to your computer and use it in GitHub Desktop.
diff --git a/__init__.py b/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/scheduler.py b/scheduler.py
index 978dc9e..e119891 100644
--- a/scheduler.py
+++ b/scheduler.py
@@ -14,7 +14,7 @@ from buildbot.schedulers.timed import Nightly
from buildbot.schedulers.triggerable import Triggerable
from buildbot.sourcestamp import SourceStamp
from buildbot.process.properties import Properties
-from buildbot.status.builder import SUCCESS
+from buildbot.status.builder import SUCCESS, WARNINGS
from buildbot.util import now
@@ -349,7 +349,7 @@ class AggregatingScheduler(BaseScheduler):
sourcestamps from `upstreamBuilders`.
`okResults` should be a tuple of acceptable result codes, and defaults to
- (SUCCESS,)
+ (SUCCESS,WARNINGS)
`maxTriggers` if set should represent how many times this scheduler will
fire. After firing `maxTriggers` times, the scheduler will shut down."""
@@ -358,17 +358,18 @@ class AggregatingScheduler(BaseScheduler):
'okResults', 'maxTriggers')
def __init__(self, name, branch, builderNames, upstreamBuilders,
- okResults=(SUCCESS,), maxTriggers=None, properties={}):
+ okResults=(SUCCESS,WARNINGS), maxTriggers=None, properties={}):
BaseScheduler.__init__(self, name, builderNames, properties)
self.branch = branch
self.upstreamBuilders = upstreamBuilders
self.reason = "AccumulatingScheduler(%s)" % name
self.okResults = okResults
+ assert maxTriggers is None or isinstance(maxTriggers, int)
self.maxTriggers = maxTriggers
def get_initial_state(self, max_changeid):
return {
- "upstreamBuilders": self.upstreamBuilders,
+ "remainingTriggers": self.maxTriggers,
"remainingBuilders": self.upstreamBuilders,
"lastCheck": now(),
}
@@ -399,11 +400,12 @@ class AggregatingScheduler(BaseScheduler):
return t.fetchall()
def _run(self, t):
- # TODO: Support self.maxTriggers
db = self.parent.db
-
- # Check for new builds completed since lastCheck
state = self.get_state(t)
+ remainingTriggers = state['remainingTriggers']
+ if remainingTriggers is not None and remainingTriggers <= 0:
+ return None
+ # Check for new builds completed since lastCheck
lastCheck = state['lastCheck']
remainingBuilders = state['remainingBuilders']
@@ -429,6 +431,8 @@ class AggregatingScheduler(BaseScheduler):
# Reset the list of builders we're waiting for
state['remainingBuilders'] = self.upstreamBuilders
+ if self.maxTriggers:
+ state['remainingTriggers'] = state['remainingTriggers'] - 1
self.set_state(t, state)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment