Ejemplo n.º 1
0
def test_read_message():

    bufsize = 1024
    input_bytes = ''.join(
        bytes for case in encoded_messages for bytes in
                (create_frame_header(case['encoded']), case['encoded']))

    mock = mox.Mox()
    mock_sock = mock.CreateMock(Socket)

    collected_chunks = []
    for chunk in chop_bytes(input_bytes, 5):
        collected_chunks.append(chunk)
        mock_sock.recv(bufsize).AndReturn(chunk)
    else:
        # This does in fact test chop_bytes and nothing more.
        assert input_bytes == ''.join(collected_chunks)

        mock_sock.recv(bufsize).AndReturn('')

    mock.ReplayAll()
    channel = Channel(socket=mock_sock)
    channel.receive_bufsize = bufsize

    for case in encoded_messages:
        message = channel.receive()
        assert message is not None
        assert dict_message(message) == case['pythonized']

    assert channel.receive() is None
    assert channel.receive() is None
    assert channel.receive() is None

    mock.VerifyAll()
Ejemplo n.º 2
0
def _unpack_contents(contents, change_length=False, change_crc=False,
        extend_contents=False):
    header = create_frame_header(contents)
    length, crc = header[:4], header[4:]
    assert len(length) == len(crc)
    if change_length:
        length = chr(ord(length[0]) + 1) + length[1:]
    if change_crc:
        crc = chr(ord(crc[0]) + 1) + crc[1:]
    if extend_contents:
        contents += '\x01'
    return unpack_frame_contents(length + crc + contents)
Ejemplo n.º 3
0
 def _genrate_chunks():
     input_bytes = ''.join(
         bytes for contents in frame_contents for bytes in
             (create_frame_header(contents), contents))
     return chop_bytes(input_bytes, min_length=min_chunk_length,
             max_length=max_chunk_length)
Ejemplo n.º 4
0
def test_frame_creation():
    for contens, frame in full_frames:
        assert create_frame_header(contens) + contens == frame