Beispiel #1
0
    def testServerNoOptionsSubdir(self):
        raddress = '127.0.0.2'
        rport = 10000
        timeout = 5
        root = os.path.dirname(os.path.abspath(__file__))
        # Testing without the dyn_func_file set.
        serverstate = tftpy.TftpContextServer(raddress, rport, timeout, root)

        self.assertTrue(isinstance(serverstate, tftpy.TftpContextServer))

        rrq = tftpy.TftpPacketRRQ()
        rrq.filename = '50MBFILE'
        rrq.mode = 'octet'
        rrq.options = {}

        # Start the download.
        serverstate.start(rrq.encode().buffer)
        # At a 512 byte blocksize, this should be 201400 packets exactly.
        for block in range(1, 102401):
            # Should be in expectack state, or None
            self.assertTrue(
                isinstance(serverstate.state, tftpy.TftpStateExpectACK))
            ack = tftpy.TftpPacketACK()
            ack.blocknumber = block % 65536
            serverstate.state = serverstate.state.handle(ack, raddress, rport)

        # The last DAT packet should be empty, indicating a completed
        # transfer.
        ack = tftpy.TftpPacketACK()
        ack.blocknumber = 102401 % 65536
        finalstate = serverstate.state.handle(ack, raddress, rport)
        self.assertTrue(finalstate is None)
Beispiel #2
0
 def testTftpPacketACK(self):
     log.debug("===> Running testcase testTftpPacketACK")
     ack = tftpy.TftpPacketACK()
     ack.blocknumber = 6
     ack.encode()
     self.assert_(ack.buffer != None, "Buffer populated")
     ack.decode()
     self.assertEqual(ack.opcode, 4, "ACK opcode is correct")
     self.assertEqual(ack.blocknumber, 6, "ACK blocknumber correct")