Пример #1
0
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