Created
December 9, 2011 19:36
-
-
Save rail/1452953 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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