def test_read_message_with_no_sd(self): validator = MissingSDValidator(self) parser = Parser(validator) chunk_message(NO_STRUCTURED_DATA, parser) self.assertEqual(0, parser.cparser._lexer().remaining()) self.assertTrue(validator.called) validator.validate()
def test_read_message_with_missing_fields(self): validator = MissingFieldsValidator(self) parser = Parser(validator) chunk_message(MISSING_FIELDS, parser) self.assertEqual(0, parser.cparser._lexer().remaining()) self.assertTrue(validator.called) validator.validate()
def test_read_message_head(self): validator = HappyPathValidator(self) parser = Parser(validator) chunk_message(HAPPY_PATH_MESSAGE, parser) self.assertEqual(0, parser.cparser._lexer().remaining()) self.assertTrue(validator.called) validator.validate()
def test_read_actual_message(self): validator = ActualValidator(self) parser = Parser(validator) parser.read(ACTUAL_MESSAGE) self.assertEqual(0, parser.cparser._lexer().remaining()) self.assertTrue(validator.called) validator.validate()
def test_short_octet_count(self): validator = MessageValidator(self) parser = Parser(validator) parser.read(SHORT_OCTET_COUNT) self.assertTrue(validator.called) self.assertIsNotNone(validator.caught_exception) self.assertEqual(ParsingError, type(validator.caught_exception))
def performance(duration=10, print_output=True): validator = MessageValidator(None) parser = Parser(validator) runs = 0 then = time.time() while time.time() - then < duration: chunk_message(HAPPY_PATH_MESSAGE, parser, 263) runs += 1 if print_output: print('Ran {} times in {} seconds for {} runs per second.'.format( runs, duration, runs / float(duration)))
def test_read_messages_back_to_back(self): validator = ActualValidator(self) parser = Parser(validator) chunk_message(ACTUAL_MESSAGE, parser) self.assertEqual(0, parser.cparser._lexer().remaining()) chunk_message(ACTUAL_MESSAGE, parser) self.assertEqual(0, parser.cparser._lexer().remaining()) chunk_message(ACTUAL_MESSAGE, parser) self.assertEqual(0, parser.cparser._lexer().remaining()) chunk_message(ACTUAL_MESSAGE, parser) self.assertEqual(0, parser.cparser._lexer().remaining()) self.assertEqual(4, validator.times_called)
def handle_stream(self, stream, address): TornadoConnection(Parser(self.msg_delegate), stream, address)