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
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