def _subscribe_test3(self, res): db = self.master.db (brids, bss, success_events, finished_events) = res d = fireEventually() def _check1(ign): self.failUnlessEqual(len(success_events), 0) self.failUnlessEqual(len(finished_events), 0) db.retire_buildrequests([brids["bn1"]], FAILURE) return flushEventualQueue() d.addCallback(_check1) def _check2(ign): self.failUnlessEqual(len(success_events), 1) self.failUnlessEqual(len(finished_events), 0) self.failUnlessEqual(success_events[0].isFinished(), False) self.failUnlessEqual(success_events[0].getResults(), None) db.retire_buildrequests([brids["bn2"]], SUCCESS) return flushEventualQueue() d.addCallback(_check2) def _check3(ign): self.failUnlessEqual(len(success_events), 1) self.failUnlessEqual(len(finished_events), 1) self.failUnlessIdentical(bss.__class__, success_events[0].__class__) self.failUnlessEqual(success_events[0].isFinished(), True) self.failUnlessEqual(success_events[0].getResults(), FAILURE) self.failUnlessEqual(finished_events[0].getResults(), FAILURE) return flushEventualQueue() d.addCallback(_check3) return d
def _do_shutdown(self, res): bs = self.master.botmaster.builders['quick'].slaves[0] # Check that the slave is accepting builds once it's connected self.assertEquals(bs.slave.canStartBuild(), True) # Monkeypatch the slave's shutdown routine since the real shutdown # interrupts the test harness self.did_shutdown = False def _shutdown(): self.did_shutdown = True bs.slave.shutdown = _shutdown # Start a graceful shutdown bs.slave.slave_status.setGraceful(True) # Check that the slave isn't accepting builds any more self.assertEquals(bs.slave.canStartBuild(), False) # Wait a little bit and then check that we (pretended to) shut down d = fireEventually() d.addCallback(self._check_shutdown) return d