Exemple #1
0
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'
Exemple #2
0
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
Exemple #3
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"
Exemple #4
0
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")
    )