Example #1
0
def test_chunked_big():
    import time
    mux = Multiplexer()
    p0 = 0
    mux.add_protocol(p0)

    # big packet
    payload = '\x00' * 10 * 1024**2
    print 'size', len(payload)
    packet1 = Packet(p0, cmd_id=0, payload=payload)

    # framing
    st = time.time()
    mux.add_packet(packet1)
    print 'framing', time.time() - st

    # popping frames
    st = time.time()
    messages = [f.as_bytes() for f in mux.pop_all_frames()]
    print 'popping frames', time.time() - st

    st = time.time()
    # decoding
    for m in messages:
        packets = mux.decode(m)
        if packets:
            break
    print 'decoding frames', time.time() - st
    assert len(mux._decode_buffer) == 0
    assert packets[0].payload == packet1.payload
    assert packets[0] == packet1
    assert len(packets) == 1
Example #2
0
def test_chunked():
    mux = Multiplexer()
    p0, p1, p2 = 0, 1, 2
    mux.add_protocol(p0)
    mux.add_protocol(p1)
    mux.add_protocol(p2)

    # big packet
    print 'size', mux.max_window_size * 2
    packet1 = Packet(p1, cmd_id=0, payload='\x00' * mux.max_window_size * 2 + 'x')
    mux.add_packet(packet1)
    frames = mux.pop_all_frames()
    all_frames_length = sum(f.frame_size() for f in frames)
    assert sum(len(f.payload) for f in frames) == len(packet1.payload)
    for i, f, in enumerate(frames):
        print i, f.frame_size()
        print 'frame payload', len(f.payload)
        print f._frame_type()
    mux.add_packet(packet1)
    message = mux.pop_all_frames_as_bytes()
    assert len(message) == all_frames_length
    packets = mux.decode(message)
    assert len(mux._decode_buffer) == 0
    assert packets[0].payload == packet1.payload
    assert packets[0] == packet1
    assert len(packets) == 1