def test_get_tracker_store_from_endpoint_config_error_exit(tmp_path: Path): # write config without event broker to file endpoints_path = write_endpoint_config_to_yaml(tmp_path, {}) available_endpoints = rasa_core_utils.read_endpoints_from_path(endpoints_path) with pytest.raises(SystemExit): # noinspection PyProtectedMember assert export._get_tracker_store(available_endpoints)
def test_get_event_broker_from_endpoint_config_error_exit(tmp_path: Path): # write config without event broker to file endpoints_path = write_endpoint_config_to_yaml( tmp_path, {"tracker_store": {"type": "sql"}} ) available_endpoints = rasa_core_utils.read_endpoints_from_path(endpoints_path) with pytest.raises(SystemExit): assert export._get_event_broker(available_endpoints)
def test_read_endpoints_from_wrong_path(): # noinspection PyProtectedMember available_endpoints = utils.read_endpoints_from_path("/some/wrong/path") # endpoint config is still initialised but does not contain anything assert not all(( available_endpoints.lock_store, available_endpoints.nlg, available_endpoints.event_broker, available_endpoints.tracker_store, available_endpoints.action, available_endpoints.model, available_endpoints.nlu, ))
def test_get_event_broker_and_tracker_store_from_endpoint_config( tmp_path: Path): # write valid config to file endpoints_path = write_endpoint_config_to_yaml(tmp_path, { "event_broker": { "type": "sql" }, "tracker_store": { "type": "sql" } }) available_endpoints = rasa_core_utils.read_endpoints_from_path( endpoints_path) # fetching the event broker is successful assert export._get_event_broker(available_endpoints) assert export._get_tracker_store(available_endpoints)
def export_trackers(args: argparse.Namespace) -> None: """Export events for a connected tracker store using an event broker. Args: args: Command-line arguments to process. """ _assert_max_timestamp_is_greater_than_min_timestamp(args) endpoints = rasa_core_utils.read_endpoints_from_path(args.endpoints) tracker_store = _get_tracker_store(endpoints) event_broker = _get_event_broker(endpoints) _prepare_event_broker(event_broker) requested_conversation_ids = _get_requested_conversation_ids(args.conversation_ids) from rasa.core.exporter import Exporter exporter = Exporter( tracker_store, event_broker, args.endpoints, requested_conversation_ids, args.minimum_timestamp, args.maximum_timestamp, ) try: published_events = exporter.publish_events() cli_utils.print_success( f"Done! Successfully published {published_events} events 🎉" ) except PublishingError as e: command = _get_continuation_command(exporter, e.timestamp) cli_utils.print_error_and_exit( f"Encountered error while publishing event with timestamp '{e}'. To " f"continue where I left off, run the following command:" f"\n\n\t{command}\n\nExiting." ) except RasaException as e: cli_utils.print_error_and_exit(str(e))
def test_read_endpoints_from_path(tmp_path: Path): # write valid config to file endpoints_path = write_endpoint_config_to_yaml( tmp_path, {"event_broker": {"type": "pika"}, "tracker_store": {"type": "sql"}} ) # noinspection PyProtectedMember available_endpoints = utils.read_endpoints_from_path(endpoints_path) # assert event broker and tracker store are valid, others are not assert available_endpoints.tracker_store and available_endpoints.event_broker assert not all( ( available_endpoints.lock_store, available_endpoints.nlg, available_endpoints.action, available_endpoints.model, available_endpoints.nlu, ) )