def test_stopTryingDoesNotReconnect(self): """ Calling stopTrying on a L{ReconnectingClientFactory} doesn't attempt a retry on any active connector. """ class FactoryAwareFakeConnector(FakeConnector): attemptedRetry = False def stopConnecting(self): """ Behave as though an ongoing connection attempt has now failed, and notify the factory of this. """ f.clientConnectionFailed(self, None) def connect(self): """ Record an attempt to reconnect, since this is what we are trying to avoid. """ self.attemptedRetry = True f = ReconnectingClientFactory() f.clock = Clock() # simulate an active connection - stopConnecting on this connector should # be triggered when we call stopTrying f.connector = FactoryAwareFakeConnector() f.stopTrying() # make sure we never attempted to retry self.assertFalse(f.connector.attemptedRetry) self.assertFalse(f.clock.getDelayedCalls())
def test_serializeWithClock(self): """ The clock attribute of L{ReconnectingClientFactory} is not serialized, and the restored value sets it to the default value, the reactor. """ clock = Clock() original = ReconnectingClientFactory() original.clock = clock reconstituted = pickle.loads(pickle.dumps(original)) self.assertIdentical(reconstituted.clock, None)
def test_serializeWithClock(self): """ The clock attribute of L{ReconnectingClientFactory} is not serialized, and the restored value sets it to the default value, the reactor. """ clock = Clock() original = ReconnectingClientFactory() original.clock = clock reconstituted = pickle.loads(pickle.dumps(original)) self.assertIsNone(reconstituted.clock)
def test_parametrizedClock(self): """ The clock used by L{ReconnectingClientFactory} can be parametrized, so that one can cleanly test reconnections. """ clock = Clock() factory = ReconnectingClientFactory() factory.clock = clock factory.clientConnectionLost(FakeConnector(), None) self.assertEqual(len(clock.calls), 1)