def test_parse_messages(self): """ Tests Json lines message parser. """ parser = JsonMessageParser() msg1 = b'{"msg": "hello world"}\n' msg2 = b'{"x": 42}\n' parser.push(msg1) self.assertEquals([{'msg': 'hello world'}], list(parser.messages())) parser.push(msg2) self.assertEquals([{'x': 42}], list(parser.messages()))
def test_parse_partial_msgs(self): """ Tests that Json lines message parser accepts partial messages. """ parser = JsonMessageParser() msg = b''.join([ b'{"msg": "hello world"}\n', b'{"x": 42}\n', ]) chunk_size = 8 actual_messages = [] for pos in range(0, len(msg), chunk_size): parser.push(msg[pos:pos+chunk_size]) for parsed_message in parser.messages(): actual_messages.append(parsed_message) self.assertEquals([{'msg': 'hello world'}, {'x': 42}], actual_messages)