Skip to content

Commit

Permalink
use a hook, rather than time, in the tests
Browse files Browse the repository at this point in the history
  • Loading branch information
djmitche authored and Pierre Tardy committed Oct 28, 2014
1 parent 4721f54 commit 4bd5b1f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
5 changes: 4 additions & 1 deletion master/buildbot/process/buildstep.py
Expand Up @@ -292,6 +292,7 @@ class BuildStep(results.ResultComputingConfigMixin,
cmd = None
rendered = False # true if attributes are rendered
_waitingForLocks = False
_run_finished_hook = lambda self: None # for tests

def __init__(self, **kwargs):
for p in self.__class__.parms:
Expand Down Expand Up @@ -574,7 +575,9 @@ def updateSummary():
self._start_deferred.callback(results)
results = yield self._start_deferred
finally:
# wait all the sync logs have been actually created before finishing
# wait until all the sync logs have been actually created before
# finishing
self._run_finished_hook()
yield defer.DeferredList(self._sync_addlog_deferreds,
consumeErrors=True)
self._start_deferred = None
Expand Down
29 changes: 17 additions & 12 deletions master/buildbot/test/integration/test_custom_buildstep.py
Expand Up @@ -228,19 +228,24 @@ def assertLogs(self, exp_logs):

@defer.inlineCallbacks
def doOldStyleCustomBuildStep(self, slowDB=False):
# patch out newLog to delay until we're ready
newLogDeferreds = []
oldNewLog = self.master.data.updates.newLog

def finishNewLog(self):
for d in newLogDeferreds:
reactor.callLater(0, d.callback, None)

def delayedNewLog(*args, **kwargs):
d = defer.Deferred()
d.addCallback(lambda _: oldNewLog(*args, **kwargs))
newLogDeferreds.append(d)
return d
if slowDB:
oldNewLog = self.master.data.updates.newLog

def newLog(*args, **kw):
d = defer.Deferred()

def delayed():
r = oldNewLog(*args, **kw)
r.addCallback(d.callback)

reactor.callLater(.1, delayed)
return d
self.patch(self.master.data.updates, "newLog", newLog)
self.patch(self.master.data.updates,
"newLog", delayedNewLog)
self.patch(OldStyleCustomBuildStep,
"_run_finished_hook", finishNewLog)

self.factory.addStep(OldStyleCustomBuildStep(arg1=1, arg2=2))
yield self.do_test_step()
Expand Down

0 comments on commit 4bd5b1f

Please sign in to comment.