def test_stream_handler_decode_byte_by_byte(): payload = harness.encode_request(0, 1, b'this is a test') + harness.encode_request(5, 2, b'this is a test 2') for i in xrange(1, len(payload)): handler = LoquiStreamHandler() chunk_get = chunker(i, payload) responses = [] while True: chunk = chunk_get() if not chunk: break responses += handler.on_bytes_received(chunk) assert len(responses) == 2 response = responses[0] assert isinstance(response, Request) assert response.seq == 1 assert response.flags == 0 assert response.data == b'this is a test' response = responses[1] assert isinstance(response, Request) assert response.seq == 2 assert response.flags == 5 assert response.data == b'this is a test 2'
def test_stream_handler_encode_requests_interspersed(): for chunk_size in xrange(1, 500): handler = LoquiStreamHandler() expected_data = [] read_data = [] for i in xrange(1024): data = b'hello world - %i' % i assert handler.current_seq() == i seq = handler.send_request(5, data) assert handler.current_seq() == seq assert seq == i + 1 expected_data.append(harness.encode_request(5, seq, data)) if handler.write_buffer_len(): read_data.append(handler.write_buffer_get_bytes(min(handler.write_buffer_len(), chunk_size))) while handler.write_buffer_len(): read_data.append(handler.write_buffer_get_bytes(min(handler.write_buffer_len(), chunk_size))) assert b''.join(read_data) == b''.join(expected_data) assert handler.write_buffer_len() == 0
def test_decode_request(): request = _test_decoder( harness.encode_request(31, 1, "hello this is my data")) assert isinstance(request, opcodes.Request) assert request.flags == 31 assert request.seq == 1 assert request.data == "hello this is my data"
def test_stream_handler_decode_full(): payload = harness.encode_request(37, 1, b'this is a test') handler = LoquiStreamHandler() responses = handler.on_bytes_received(payload) assert len(responses) == 1 response = responses[0] assert isinstance(response, Request) assert response.seq == 1 assert response.flags == 37 assert response.data == b'this is a test'
def test_encode_request(): _test_encoder( lambda h: h.send_request(31, "hello this is my data"), harness.encode_request(31, 1, "hello this is my data") )