def cb(res): self.clock.advance(0.1) ack_datagram_1 = ACKDatagram(1) self.assertEqual(self.transport.value(), ack_datagram_1.to_wire()) self.assertEqual(self.target.open('r').read(), 'foobar') self.failIf(self.transport.disconnecting) self.addCleanup(self.ws.cancel)
def test_non_rq_datagram(self): tftp = TFTP(DummyBackend(), _clock=self.clock) tftp.transport = self.transport ack_datagram = ACKDatagram(14) tftp.datagramReceived(ack_datagram.to_wire(), ("127.0.0.1", 1111)) self.failIf(self.transport.disconnecting) self.failIf(self.transport.value())
def test_non_rq_datagram(self): tftp = TFTP(DummyBackend(), _clock=self.clock) tftp.transport = self.transport ack_datagram = ACKDatagram(14) tftp.datagramReceived(ack_datagram.to_wire(), ('127.0.0.1', 1111)) self.failIf(self.transport.disconnecting) self.failIf(self.transport.value())
def test_invalid_tid(self): bad_tid_dgram = ACKDatagram(123) yield self.ws.datagramReceived(bad_tid_dgram.to_wire(), ('127.0.0.1', 1111)) err_dgram = TFTPDatagramFactory(*split_opcode(self.transport.value())) self.assertEqual(err_dgram.errorcode, ERR_TID_UNKNOWN) self.addCleanup(self.ws.cancel)
def test_invalid_tid(self): self.ws.startProtocol() bad_tid_dgram = ACKDatagram(123) self.ws.datagramReceived(bad_tid_dgram.to_wire(), ('127.0.0.1', 1111)) err_dgram = TFTPDatagramFactory(*split_opcode(self.transport.value())) self.assertEqual(err_dgram.errorcode, ERR_TID_UNKNOWN) self.addCleanup(self.ws.cancel)
def test_local_origin_read_session_handshake_success(self): self.clock.advance(1) ack_datagram = ACKDatagram(0) self.rs.datagramReceived(ack_datagram.to_wire(), ('127.0.0.1', 65465)) self.clock.advance(2) self.assertTrue(self.transport.value()) self.assertFalse(self.transport.disconnecting) self.addCleanup(self.rs.cancel)
def cb(ign): self.clock.advance(0.1) ack_datagram = ACKDatagram(1) self.clock.pump((1,) * 5) # Sent two times - initial send and a retransmit after first timeout self.assertEqual(self.transport.value(), ack_datagram.to_wire() * 2) # Sent three times - initial send and two retransmits self.clock.pump((1,) * 4) self.assertEqual(self.transport.value(), ack_datagram.to_wire() * 3) # Sent still three times - initial send, two retransmits and the last wait self.clock.pump((1,) * 4) self.assertEqual(self.transport.value(), ack_datagram.to_wire() * 3) self.failUnless(self.transport.disconnecting)
def test_local_origin_read_session_handshake_success(self): self.clock.advance(1) ack_datagram = ACKDatagram(0) self.rs.datagramReceived(ack_datagram.to_wire(), ("127.0.0.1", 65465)) self.clock.advance(2) self.failUnless(self.transport.value()) self.failIf(self.transport.disconnecting) self.failIf(self.wd.active()) self.addCleanup(self.rs.cancel)
def cb(ign): self.clock.advance(0.1) ack_datagram = ACKDatagram(1) self.clock.pump((1, ) * 5) # Sent two times - initial send and a retransmit after first timeout self.assertEqual(self.transport.value(), ack_datagram.to_wire() * 2) # Sent three times - initial send and two retransmits self.clock.pump((1, ) * 4) self.assertEqual(self.transport.value(), ack_datagram.to_wire() * 3) # Sent still three times - initial send, two retransmits and the last wait self.clock.pump((1, ) * 4) self.assertEqual(self.transport.value(), ack_datagram.to_wire() * 3) self.assertTrue(self.transport.disconnecting)
def test_remote_origin_write_bootstrap(self): # Initial ACK ack_datagram_0 = ACKDatagram(0) self.clock.advance(0.1) self.assertEqual(self.transport.value(), ack_datagram_0.to_wire()) self.failIf(self.transport.disconnecting) # Normal exchange self.transport.clear() d = self.ws.datagramReceived(DATADatagram(1, 'foobar').to_wire(), ('127.0.0.1', 65465)) def cb(res): self.clock.advance(0.1) ack_datagram_1 = ACKDatagram(1) self.assertEqual(self.transport.value(), ack_datagram_1.to_wire()) self.assertEqual(self.target.open('r').read(), 'foobar') self.failIf(self.transport.disconnecting) self.addCleanup(self.ws.cancel) d.addCallback(cb) self.clock.advance(3) return d