ZIO
Python and C++ interface to ZeroMQ and Zyre
test_codec.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 
3 import zmq
4 import struct
5 from generaldomo.zhelpers import encode_message, decode_message
6 
7 def test_codec():
8  lil_data = b"ddd"
9  big_data = b"D"*512
10  lil_frame = zmq.Frame(data = b"fff")
11  big_frame = zmq.Frame(data = b"F"*512)
12 
13  mmsg = [lil_data, lil_frame, big_data, big_frame]
14 
15  enc = encode_message(mmsg)
16 
17  assert(len(enc) == 2*(1+3)+2*(5+512))
18  ptr = 0
19  assert(enc[ptr] == 3)
20  ptr += 4
21  assert(enc[ptr] == 3)
22  ptr += 4
23 
24  assert(enc[ptr] == 0xFF)
25  ptr += 1
26  siz = struct.unpack('=I', enc[ptr:ptr+4])[0]
27  ptr += 4
28  print ('big data size',siz)
29  assert(siz == 512)
30  assert(enc[ptr:ptr+siz] == big_data)
31  ptr += 512
32 
33  assert(enc[ptr] == 0xFF)
34  ptr += 1
35  siz = struct.unpack('=I', enc[ptr:ptr+4])[0]
36  assert(siz == 512)
37  print ('big frame size',siz)
38  ptr += 4
39  assert(enc[ptr:ptr+siz] == big_frame.bytes)
40 
41  mmsg2 = decode_message(enc)
42  for part,(m1,m2) in enumerate(zip(mmsg, mmsg2)):
43  if isinstance(m1, zmq.Frame):
44  m1 = m1.bytes
45  assert(m1 == m2)
46 
47 
48 if '__main__' == __name__:
49  test_codec()
50 
def test_codec()
Definition: test_codec.py:7
def decode_message(encoded)
Definition: zhelpers.py:101
def encode_message(parts)
Definition: zhelpers.py:75