def test_frame(): ctx = Context() test_endpoint = 'inproc://zframe.test' output_s = ctx.socket(zmq.PAIR) rc = output_s.bind(test_endpoint) assert rc >= 0 input_s = ctx.socket(zmq.PAIR) rc = input_s.connect(test_endpoint) assert rc == 0 # Send five different frames, test ZFRAME_MORE for i in range(0, 5): frame = Frame("Hello") rc = output_s.send_frame(frame, Frame.MORE) assert rc == 0, "error sending frame rc={0}, {1}".format(rc, zmq.strerror(zmq.errno())) # Send same frame five times, test ZFRAME_REUSE frame = Frame("Hello") for i in range(0, 5): rc = output_s.send_frame(frame, Frame.MORE + Frame.REUSE) assert rc == 0, "error sending reused frame rc={0}, {1}".format(rc, zmq.strerror(zmq.errno())) copy = frame.dup() assert frame == copy frame.reset("") assert frame != copy assert len(copy) == 5 del frame del copy # Test zframe_new_empty frame = Frame() assert len(frame) == 0 del frame # Send END frame frame = Frame("NOT") frame.reset("END") hex_string = frame.strhex() assert hex_string == "454E44" frame_bytes = frame.bytes() assert frame_bytes == "END" string = str(frame) assert string == "END" rc = output_s.send_frame(frame) assert rc == 0 # Read and count until we receive END frame_nbr = 0 while True: frame = input_s.recv_frame() frame_nbr += 1 if frame == "END": del frame break else: assert len(frame) == 5 assert frame.bytes() == "Hello" assert frame.more() frame.set_more(0) assert frame.more() == 0 del frame assert frame_nbr == 11 frame = input_s.recv_frame_nowait() assert frame is None del ctx