def test_scan_aborts_lost_slave_with_job(self): # SlaveScanner.scan uses BuilderInteractor.rescueIfLost to abort # slaves that don't have the expected job. slave = BuildingSlave('nontrivial') bq = FakeBuildQueue() # Instrument updateBuild. interactor = BuilderInteractor() interactor.updateBuild = FakeMethod() scanner = SlaveScanner('mock', MockBuilderFactory(MockBuilder(), bq), BufferLogger(), interactor_factory=FakeMethod(interactor), slave_factory=FakeMethod(slave), behavior_factory=FakeMethod(TrivialBehavior())) # XXX: checkCancellation needs more than a FakeBuildQueue. scanner.checkCancellation = FakeMethod(defer.succeed(False)) # A single scan will call status(), notice that the slave is # lost, abort() the slave, then reset() the job without calling # updateBuild(). yield scanner.scan() self.assertEqual(['status', 'abort'], slave.call_log) self.assertEqual(0, interactor.updateBuild.call_count) self.assertEqual(1, bq.reset.call_count)
def test_scan_aborts_lost_slave_with_job(self): # SlaveScanner.scan uses BuilderInteractor.rescueIfLost to abort # slaves that don't have the expected job. slave = BuildingSlave('nontrivial') bq = FakeBuildQueue() # Instrument updateBuild. interactor = BuilderInteractor() interactor.updateBuild = FakeMethod() scanner = SlaveScanner( 'mock', MockBuilderFactory(MockBuilder(), bq), BufferLogger(), interactor_factory=FakeMethod(interactor), slave_factory=FakeMethod(slave), behavior_factory=FakeMethod(TrivialBehavior())) # XXX: checkCancellation needs more than a FakeBuildQueue. scanner.checkCancellation = FakeMethod(defer.succeed(False)) # A single scan will call status(), notice that the slave is # lost, abort() the slave, then reset() the job without calling # updateBuild(). yield scanner.scan() self.assertEqual(['status', 'abort'], slave.call_log) self.assertEqual(0, interactor.updateBuild.call_count) self.assertEqual(1, bq.reset.call_count)
def test_scan_aborts_lost_slave_when_idle(self): # SlaveScanner.scan uses BuilderInteractor.rescueIfLost to abort # slaves that aren't meant to have a job. slave = BuildingSlave() # Instrument updateBuild. interactor = BuilderInteractor() interactor.updateBuild = FakeMethod() scanner = SlaveScanner( 'mock', MockBuilderFactory(MockBuilder(), None), BufferLogger(), interactor_factory=FakeMethod(interactor), slave_factory=FakeMethod(slave), behavior_factory=FakeMethod(None)) # A single scan will call status(), notice that the slave is # lost, abort() the slave, then reset() the job without calling # updateBuild(). yield scanner.scan() self.assertEqual(['status', 'abort'], slave.call_log) self.assertEqual(0, interactor.updateBuild.call_count)
def test_scan_with_job(self): # SlaveScanner.scan calls updateBuild() when a job is building. slave = BuildingSlave('trivial') bq = FakeBuildQueue() # Instrument updateBuild. interactor = BuilderInteractor() interactor.updateBuild = FakeMethod() scanner = SlaveScanner( 'mock', MockBuilderFactory(MockBuilder(), bq), BufferLogger(), interactor_factory=FakeMethod(interactor), slave_factory=FakeMethod(slave), behavior_factory=FakeMethod(TrivialBehavior())) # XXX: checkCancellation needs more than a FakeBuildQueue. scanner.checkCancellation = FakeMethod(defer.succeed(False)) yield scanner.scan() self.assertEqual(['status'], slave.call_log) self.assertEqual(1, interactor.updateBuild.call_count) self.assertEqual(0, bq.reset.call_count)
def test_scan_aborts_lost_slave_when_idle(self): # SlaveScanner.scan uses BuilderInteractor.rescueIfLost to abort # slaves that aren't meant to have a job. slave = BuildingSlave() # Instrument updateBuild. interactor = BuilderInteractor() interactor.updateBuild = FakeMethod() scanner = SlaveScanner('mock', MockBuilderFactory(MockBuilder(), None), BufferLogger(), interactor_factory=FakeMethod(interactor), slave_factory=FakeMethod(slave), behavior_factory=FakeMethod(None)) # A single scan will call status(), notice that the slave is # lost, abort() the slave, then reset() the job without calling # updateBuild(). yield scanner.scan() self.assertEqual(['status', 'abort'], slave.call_log) self.assertEqual(0, interactor.updateBuild.call_count)
def test_scan_with_job(self): # SlaveScanner.scan calls updateBuild() when a job is building. slave = BuildingSlave('trivial') bq = FakeBuildQueue() # Instrument updateBuild. interactor = BuilderInteractor() interactor.updateBuild = FakeMethod() scanner = SlaveScanner('mock', MockBuilderFactory(MockBuilder(), bq), BufferLogger(), interactor_factory=FakeMethod(interactor), slave_factory=FakeMethod(slave), behavior_factory=FakeMethod(TrivialBehavior())) # XXX: checkCancellation needs more than a FakeBuildQueue. scanner.checkCancellation = FakeMethod(defer.succeed(False)) yield scanner.scan() self.assertEqual(['status'], slave.call_log) self.assertEqual(1, interactor.updateBuild.call_count) self.assertEqual(0, bq.reset.call_count)