def test_pika_message_property_app_id(monkeypatch: MonkeyPatch): # setting it to some value results in that value as the App ID rasa_environment = "some-test-environment" monkeypatch.setenv("RASA_ENVIRONMENT", rasa_environment) pika_broker = PikaEventBroker("some host", "username", "password") assert pika_broker._message({}, None).app_id == rasa_environment
def test_pika_message_property_app_id_without_env_set( monkeypatch: MonkeyPatch): # unset RASA_ENVIRONMENT env var results in empty App ID monkeypatch.delenv("RASA_ENVIRONMENT", raising=False) pika_broker = PikaEventBroker("some host", "username", "password") assert not pika_broker._message({}, None).app_id
def test_pika_message_property_app_id(monkeypatch: MonkeyPatch): # patch PikaEventBroker so it doesn't try to connect to RabbitMQ on init monkeypatch.setattr(PikaEventBroker, "_run_pika", lambda _: None) pika_producer = PikaEventBroker("", "", "") # unset RASA_ENVIRONMENT env var results in empty App ID monkeypatch.delenv("RASA_ENVIRONMENT", raising=False) assert not pika_producer._get_message_properties().app_id # setting it to some value results in that value as the App ID rasa_environment = "some-test-environment" monkeypatch.setenv("RASA_ENVIRONMENT", rasa_environment) assert pika_producer._get_message_properties().app_id == rasa_environment
async def test_pika_event_broker_connect(): broker = PikaEventBroker( host=RABBITMQ_HOST, username=RABBITMQ_USER, password=RABBITMQ_PASSWORD, port=RABBITMQ_PORT, queues=[RABBITMQ_DEFAULT_QUEUE], ) try: await broker.connect() assert broker.is_ready() finally: await broker.close()
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
def test_pika_queues_from_args( queues_arg: Union[Text, List[Text], None], expected: List[Text], warning: Optional[Type[Warning]], monkeypatch: MonkeyPatch, ): # patch PikaEventBroker so it doesn't try to connect to RabbitMQ on init monkeypatch.setattr(PikaEventBroker, "_run_pika", lambda _: None) with pytest.warns(warning): pika_producer = PikaEventBroker("", "", "", queues=queues_arg) assert pika_producer.queues == expected
async def test_no_pika_logs_if_no_debug_mode(caplog: LogCaptureFixture): broker = PikaEventBroker("host", "username", "password", retry_delay_in_seconds=1, connection_attempts=1) with caplog.at_level(logging.INFO): with pytest.raises(Exception): await broker.connect() # Only Rasa Open Source logs, but logs from the library itself. assert all(record.name in ["rasa.core.brokers.pika", "asyncio"] for record in caplog.records)
def test_pika_queues_from_args( queues_arg: Union[Text, List[Text], None], expected: List[Text], warning: Optional[Type[Warning]], ): with pytest.warns(warning): pika_processor = PikaEventBroker( "host", "username", "password", queues=queues_arg, get_message=lambda: ("", None), ) assert pika_processor.queues == expected
def test_pika_invalid_queues_argument(monkeypatch: MonkeyPatch): # patch PikaEventBroker so it doesn't try to connect to RabbitMQ on init monkeypatch.setattr(PikaEventBroker, "_run_pika", lambda _: None) with pytest.raises(ValueError): PikaEventBroker("", "", "", queues=None, queue=None)