def test_db_url_with_query_from_endpoint_config(): endpoint_config = """ tracker_store: dialect: postgresql url: localhost port: 5123 username: user password: pw login_db: login-db query: driver: my-driver another: query """ with tempfile.NamedTemporaryFile("w+", suffix="_tmp_config_file.yml") as f: f.write(endpoint_config) f.flush() store_config = read_endpoint_config(f.name, "tracker_store") url = SQLTrackerStore.get_db_url(**store_config.kwargs) import itertools # order of query dictionary in yaml is random, test against both permutations connection_url = "postgresql://*****:*****@:5123/login-db?" assert any( str(url) == connection_url + "&".join(permutation) for permutation in (itertools.permutations(("another=query", "driver=my-driver"))))
def test_db_url_with_query_from_endpoint_config(tmp_path: Path): endpoint_config = """ tracker_store: dialect: postgresql url: localhost port: 5123 username: user password: pw login_db: login-db query: driver: my-driver another: query """ f = tmp_path / "tmp_config_file.yml" f.write_text(endpoint_config) store_config = read_endpoint_config(str(f), "tracker_store") url = SQLTrackerStore.get_db_url(**store_config.kwargs) import itertools # order of query dictionary in yaml is random, test against both permutations connection_url = "postgresql://*****:*****@:5123/login-db?" assert any( str(url) == connection_url + "&".join(permutation) for permutation in ( itertools.permutations(("another=query", "driver=my-driver")) ) )
def test_get_db_url_with_correct_host(): expected = "postgresql://localhost:5005/mydb" assert (str( SQLTrackerStore.get_db_url(dialect="postgresql", host="localhost", port=5005, db="mydb")) == expected)
def test_get_db_url_with_port_in_host(): host = "localhost:1234" dialect = "postgresql" db = "mydb" expected = f"{dialect}://{host}/{db}" assert (str(SQLTrackerStore.get_db_url(dialect=dialect, host=host, db=db)) == expected)
def test_get_db_url_with_port_in_host(): host = "localhost:1234" dialect = "postgresql" db = "mydb" expected = "{}://{}/{}".format(dialect, host, db) assert (str( SQLTrackerStore.get_db_url(dialect="postgresql", host=host, db=db)) == expected)
def test_get_db_url_with_query(): expected = "postgresql://localhost:5005/mydb?driver=my-driver" assert (str( SQLTrackerStore.get_db_url( dialect="postgresql", host="localhost", port=5005, db="mydb", query={"driver": "my-driver"}, )) == expected)
def __init__( self, dialect: Text = "sqlite", host: Optional[Text] = None, port: Optional[int] = None, db: Text = "events.db", username: Optional[Text] = None, password: Optional[Text] = None, ): from rasa.core.tracker_store import SQLTrackerStore import sqlalchemy.orm engine_url = SQLTrackerStore.get_db_url(dialect, host, port, db, username, password) logger.debug(f"SQLProducer: Connecting to database: '{engine_url}'.") self.engine = sqlalchemy.create_engine(engine_url) self.Base.metadata.create_all(self.engine) self.sessionmaker = sqlalchemy.orm.sessionmaker(bind=self.engine)
def test_db_get_url_with_sqlite(): expected = "sqlite:///rasa.db" assert str(SQLTrackerStore.get_db_url(dialect="sqlite", db="rasa.db")) == expected
def test_get_db_url_with_fully_specified_url(full_url: Text): assert SQLTrackerStore.get_db_url(host=full_url) == full_url