async def test_kafka_broker_convert_intent_id_to_string(): user_event = { "timestamp": 1517821726.200036, "metadata": {}, "parse_data": { "entities": [], "intent": { "confidence": 0.54, "name": "greet", "id": 7703045398849936579 }, "message_id": "987654321", "metadata": {}, "text": "/greet", "intent_ranking": [ { "confidence": 0.54, "name": "greet", "id": 7703045398849936579 }, { "confidence": 0.31, "name": "goodbye", "id": -5127945386715371244 }, { "confidence": 0.15, "name": "default", "id": 1699173715362944540 }, ], }, "event": "user", "text": "/greet", "input_channel": "rest", "message_id": "987654321", } actual = KafkaEventBroker( "localhost", sasl_username="******", sasl_password="******", sasl_mechanism="PLAIN", topic="topic", partition_by_sender=True, security_protocol="SASL_PLAINTEXT", convert_intent_id_to_string=True, ) converted_user_event = actual._convert_intent_id_to_string(user_event) intent_ranking = user_event["parse_data"]["intent_ranking"] converted_intent_ranking = converted_user_event["parse_data"][ "intent_ranking"] assert converted_user_event["parse_data"]["intent"]["id"] == str( user_event["parse_data"]["intent"]["id"]) assert all(converted_parse_data["id"] == str(parse_data["id"]) for parse_data, converted_parse_data in zip( intent_ranking, converted_intent_ranking))
def _create_from_endpoint_config( endpoint_config: Optional[EndpointConfig], ) -> Optional["EventBroker"]: """Instantiate an event broker based on its configuration.""" if endpoint_config is None: broker = None elif endpoint_config.type is None or endpoint_config.type.lower() == "pika": from rasa.core.brokers.pika import PikaEventBroker # default broker if no type is set broker = PikaEventBroker.from_endpoint_config(endpoint_config) elif endpoint_config.type.lower() == "sql": from rasa.core.brokers.sql import SQLEventBroker broker = SQLEventBroker.from_endpoint_config(endpoint_config) elif endpoint_config.type.lower() == "file": from rasa.core.brokers.file import FileEventBroker broker = FileEventBroker.from_endpoint_config(endpoint_config) elif endpoint_config.type.lower() == "kafka": from rasa.core.brokers.kafka import KafkaEventBroker broker = KafkaEventBroker.from_endpoint_config(endpoint_config) else: broker = _load_from_module_string(endpoint_config) if broker: logger.debug(f"Instantiated event broker to '{broker.__class__.__name__}'.") return broker
async def test_kafka_broker_from_config(): endpoints_path = ( "data/test_endpoints/event_brokers/kafka_sasl_plaintext_endpoint.yml") cfg = read_endpoint_config(endpoints_path, "event_broker") actual = await KafkaEventBroker.from_endpoint_config(cfg) expected = KafkaEventBroker( "localhost", sasl_username="******", sasl_password="******", sasl_mechanism="PLAIN", topic="topic", partition_by_sender=True, security_protocol="SASL_PLAINTEXT", convert_intent_id_to_string=True, ) assert actual.url == expected.url assert actual.sasl_username == expected.sasl_username assert actual.sasl_password == expected.sasl_password assert actual.sasl_mechanism == expected.sasl_mechanism assert actual.topic == expected.topic assert actual.partition_by_sender == expected.partition_by_sender assert actual.convert_intent_id_to_string == expected.convert_intent_id_to_string
def test_kafka_broker_security_protocols(file: Text, exception: Exception): endpoints_path = f"data/test_endpoints/event_brokers/{file}" cfg = read_endpoint_config(endpoints_path, "event_broker") actual = KafkaEventBroker.from_endpoint_config(cfg) with pytest.raises(exception): # noinspection PyProtectedMember actual._create_producer()
def test_kafka_broker_from_config(): endpoints_path = "data/test_endpoints/event_brokers/kafka_plaintext_endpoint.yml" cfg = read_endpoint_config(endpoints_path, "event_broker") actual = KafkaEventBroker.from_endpoint_config(cfg) expected = KafkaEventBroker( "localhost", "username", "password", topic="topic", security_protocol="SASL_PLAINTEXT", ) assert actual.host == expected.host assert actual.sasl_username == expected.sasl_username assert actual.sasl_password == expected.sasl_password assert actual.topic == expected.topic