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)
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")