Changeset View
Changeset View
Standalone View
Standalone View
swh/provenance/tests/conftest.py
# Copyright (C) 2021 The Software Heritage developers | # Copyright (C) 2021-2022 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from datetime import datetime, timedelta, timezone | from datetime import datetime, timedelta, timezone | ||||
from os import path | from os import path | ||||
from typing import Any, Dict, Generator, List | from typing import Any, Dict, Generator, Iterator, List | ||||
from _pytest.fixtures import SubRequest | from _pytest.fixtures import SubRequest | ||||
import mongomock.database | import mongomock.database | ||||
import msgpack | import msgpack | ||||
import psycopg2.extensions | import psycopg2.extensions | ||||
import pytest | import pytest | ||||
from pytest_postgresql.factories import postgresql | from pytest_postgresql.factories import postgresql | ||||
Show All 32 Lines | ) -> Dict[str, str]: | ||||
return postgresql.get_dsn_parameters() | return postgresql.get_dsn_parameters() | ||||
@pytest.fixture(params=["mongodb", "postgresql", "rabbitmq"]) | @pytest.fixture(params=["mongodb", "postgresql", "rabbitmq"]) | ||||
def provenance_storage( | def provenance_storage( | ||||
request: SubRequest, | request: SubRequest, | ||||
provenance_postgresqldb: Dict[str, str], | provenance_postgresqldb: Dict[str, str], | ||||
mongodb: mongomock.database.Database, | mongodb: mongomock.database.Database, | ||||
) -> Generator[ProvenanceStorageInterface, None, None]: | ) -> Iterator[ProvenanceStorageInterface]: | ||||
"""Return a working and initialized ProvenanceStorageInterface object""" | """Return a working and initialized ProvenanceStorageInterface object""" | ||||
if request.param == "mongodb": | if request.param == "mongodb": | ||||
mongodb_params = { | mongodb_params = { | ||||
"host": mongodb.client.address[0], | "host": mongodb.client.address[0], | ||||
"port": mongodb.client.address[1], | "port": mongodb.client.address[1], | ||||
"dbname": mongodb.name, | "dbname": mongodb.name, | ||||
} | } | ||||
Show All 15 Lines | elif request.param == "rabbitmq": | ||||
"db": provenance_postgresqldb, | "db": provenance_postgresqldb, | ||||
"raise_on_commit": True, | "raise_on_commit": True, | ||||
}, | }, | ||||
} | } | ||||
server = ProvenanceStorageRabbitMQServer( | server = ProvenanceStorageRabbitMQServer( | ||||
url=rabbitmq_params["url"], storage_config=rabbitmq_params["storage_config"] | url=rabbitmq_params["url"], storage_config=rabbitmq_params["storage_config"] | ||||
) | ) | ||||
server.start() | server.start() | ||||
with get_provenance_storage(cls=request.param, **rabbitmq_params) as storage: | with get_provenance_storage(cls="rabbitmq", **rabbitmq_params) as storage: | ||||
yield storage | yield storage | ||||
server.stop() | server.stop() | ||||
else: | else: | ||||
# in test sessions, we DO want to raise any exception occurring at commit time | # in test sessions, we DO want to raise any exception occurring at commit time | ||||
with get_provenance_storage( | with get_provenance_storage( | ||||
cls=request.param, db=provenance_postgresqldb, raise_on_commit=True | cls=request.param, db=provenance_postgresqldb, raise_on_commit=True | ||||
) as storage: | ) as storage: | ||||
yield storage | yield storage | ||||
storage.close() | |||||
provenance_postgresql = postgresql("postgresql_proc", dbname="provenance_tests") | provenance_postgresql = postgresql("postgresql_proc", dbname="provenance_tests") | ||||
@pytest.fixture | @pytest.fixture | ||||
def provenance( | def provenance( | ||||
provenance_postgresql: psycopg2.extensions.connection, | provenance_postgresql: psycopg2.extensions.connection, | ||||
) -> Generator[ProvenanceInterface, None, None]: | ) -> Generator[ProvenanceInterface, None, None]: | ||||
▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines |