def runTest(self): """ Test fixed-length integer read-in """ from StringIO import StringIO from mysqlproxy.types import FixedLengthInteger # wire read tests proto_buf = StringIO(b'\x01\x00\x00\x25') fli = FixedLengthInteger(3) fli.read_in(proto_buf) self.assertEqual(fli.val, 1) # wire write tests proto_buf = StringIO() fli = FixedLengthInteger(3, 1) fli.write_out(proto_buf) self.assertEqual(proto_buf.getvalue(), b'\x01\x00\x00')
def read_in(self, fde): """ Read in full payload """ total_read = 0 packet_length = FixedLengthInteger(3, 0xffffff) seq_id = FixedLengthInteger(1) self.payload = StringIO() while packet_length.val == 0xffffff: packet_length.read_in(fde, label=None) seq_id.read_in(fde, label=None) cur_payload = FixedLengthString(packet_length.val) cur_payload.read_in(fde, label=None) self.payload.write(cur_payload.val) self.packet_meta.append(PacketMeta(packet_length.val, seq_id.val)) total_read += packet_length.val self.seq_id = seq_id.val self.payload.seek(0) return total_read