def auth(client): # stop the real looping ping and patch the reset method. yield client.dummy_authenticate('open sesame') server = self.service.factory.protocols[0] server.ping_loop.shutdown.cancel() # Wait for loop to finish d = defer.Deferred() real_reschedule = server.ping_loop.reschedule def reschedule(): """Callback d the first time we hit this.""" if not d.called: d.callback(None) real_reschedule() self.patch(server.ping_loop, 'reschedule', reschedule) yield d self.patch(server.ping_loop, 'reset', d.callback) called = [] self.patch(server.ping_loop, 'reset', lambda: called.append(1)) yield client.ping() self.assertEqual(0, len(called)) yield client.list_shares() self.assertEqual(1, len(called)) yield client.list_shares() self.assertEqual(2, len(called))
def ping(client): def done(result): self.assert_(result.rtt < 2) client.test_done("ok") d = client.ping() d.addCallbacks(done, client.test_fail)
def send_message(): if (client.messages_sent % 2) == 0: # one ping, one protocol version d = client.ping() else: d = client.protocol_version() d.addCallbacks(done, client.test_fail) client.messages_sent += 1 client.pending_tests += 1