def test_listen_for_messages(self, mock_process_message): """Test to listen for kafka messages.""" mock_process_message.return_value = True test_matrix = [{ "test_value": { "account": "10001", "category": "tar", "metadata": { "reporter": "", "stale_timestamp": "0001-01-01T00:00:00Z" }, }, "expected_process": True, }] for test in test_matrix: msg = MockMessage( topic="platform.upload.hccm", offset=5, url="https://insights-quarantine.s3.amazonaws.com/myfile", value_dict=test.get("test_value"), ) mock_consumer = MockKafkaConsumer([msg]) msg_handler.listen_for_messages(msg, mock_consumer) if test.get("expected_process"): mock_process_message.assert_called() else: mock_process_message.assert_not_called()
def test_listen_for_messages_error(self, mock_process_message): """Test to listen for kafka messages with errors.""" mock_process_message.return_value = False test_matrix = [ { "test_value": { "account": "10001", "category": "tar", "metadata": { "reporter": "", "stale_timestamp": "0001-01-01T00:00:00Z" }, }, "side_effect": KafkaMsgHandlerError, }, { "test_value": { "account": "10001", "category": "tar", "metadata": { "reporter": "", "stale_timestamp": "0001-01-01T00:00:00Z" }, }, "side_effect": ReportProcessorError, }, ] for test in test_matrix: msg = MockMessage( topic="platform.upload.hccm", offset=5, url="https://insights-quarantine.s3.amazonaws.com/myfile", value_dict=test.get("test_value"), ) mock_consumer = MockKafkaConsumer([msg]) mock_process_message.side_effect = test.get("side_effect") with patch( "masu.external.kafka_msg_handler.close_and_set_db_connection" ) as close_mock: with patch.object(Config, "RETRY_SECONDS", 0): msg_handler.listen_for_messages(msg, mock_consumer) close_mock.assert_not_called()
def test_listen_for_messages_error(self, mock_process_message): """Test to listen for kafka messages with errors.""" future_mock = asyncio.Future() future_mock.set_result("test result") mock_process_message.return_value = future_mock run_loop = asyncio.new_event_loop() test_matrix = [ { "test_value": json.dumps({ "account": "10001", "category": "tar", "metadata": { "reporter": "", "stale_timestamp": "0001-01-01T00:00:00Z" }, }), "side_effect": KafkaMsgHandlerError, }, { "test_value": json.dumps({ "account": "10001", "category": "tar", "metadata": { "reporter": "", "stale_timestamp": "0001-01-01T00:00:00Z" }, }), "side_effect": ReportProcessorError, }, ] for test in test_matrix: msg = ConsumerRecord( topic="platform.upload.hccm", offset=5, url="https://insights-quarantine.s3.amazonaws.com/myfile", value=bytes(test.get("test_value"), encoding="utf-8"), ) mock_consumer = MockKafkaConsumer([msg]) mock_process_message.side_effect = test.get("side_effect") with patch("masu.external.kafka_msg_handler.connection.close" ) as close_mock: with patch.object(Config, "RETRY_SECONDS", 0): run_loop.run_until_complete( msg_handler.listen_for_messages(mock_consumer)) close_mock.assert_not_called()
def test_listen_for_messages(self, mock_process_message): """Test to listen for kafka messages.""" future_mock = asyncio.Future() future_mock.set_result("test result") mock_process_message.return_value = future_mock run_loop = asyncio.new_event_loop() test_matrix = [{ "test_value": json.dumps({ "account": "10001", "category": "tar", "metadata": { "reporter": "", "stale_timestamp": "0001-01-01T00:00:00Z" }, }), "expected_process": True, }] for test in test_matrix: msg = ConsumerRecord( topic="platform.upload.hccm", offset=5, url="https://insights-quarantine.s3.amazonaws.com/myfile", value=bytes(test.get("test_value"), encoding="utf-8"), ) mock_consumer = MockKafkaConsumer([msg]) run_loop.run_until_complete( msg_handler.listen_for_messages(mock_consumer)) if test.get("expected_process"): mock_process_message.assert_called() else: mock_process_message.assert_not_called()