Exemple #1
0
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))
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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()
Exemple #5
0
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