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()
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)
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)
def test_frame_creation(): for contens, frame in full_frames: assert create_frame_header(contens) + contens == frame