示例#1
0
 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)
示例#2
0
 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())
示例#3
0
 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 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)
示例#5
0
 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)
示例#6
0
    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)
示例#7
0
 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)
示例#8
0
        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)
示例#10
0
        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)
示例#11
0
    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
示例#12
0
    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