diff --git a/aurweb/testing/prometheus.py b/aurweb/testing/prometheus.py new file mode 100644 index 00000000..d04190f6 --- /dev/null +++ b/aurweb/testing/prometheus.py @@ -0,0 +1,8 @@ +from aurweb import prometheus + + +def clear_metrics(): + prometheus.PACKAGES.clear() + prometheus.REQUESTS.clear() + prometheus.SEARCH_REQUESTS.clear() + prometheus.USERS.clear() diff --git a/test/conftest.py b/test/conftest.py index c36f78dd..575e9b98 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -43,6 +43,7 @@ from multiprocessing import Lock import py import pytest +from prometheus_client import values from sqlalchemy import create_engine from sqlalchemy.engine import URL from sqlalchemy.engine.base import Engine @@ -54,12 +55,16 @@ import aurweb.db from aurweb import aur_logging, initdb, testing from aurweb.testing.email import Email from aurweb.testing.git import GitRepository +from aurweb.testing.prometheus import clear_metrics logger = aur_logging.get_logger(__name__) # Synchronization lock for database setup. setup_lock = Lock() +# Disable prometheus multiprocess mode for tests +values.ValueClass = values.MutexValue + def test_engine() -> Engine: """ @@ -206,3 +211,13 @@ def email_test() -> None: that we set them up to be used via aurweb.testing.email.Email. """ setup_email() + + +@pytest.fixture +def prometheus_test(): + """ + Prometheus test fixture + + Removes any existing values from our metrics + """ + clear_metrics() diff --git a/test/test_metrics.py b/test/test_metrics.py index 6f67d926..c9f3d617 100644 --- a/test/test_metrics.py +++ b/test/test_metrics.py @@ -8,7 +8,7 @@ from aurweb.models.user import User @pytest.fixture(autouse=True) -def setup(db_test): +def setup(db_test, prometheus_test): return diff --git a/test/test_statistics.py b/test/test_statistics.py index 4057f4a1..4859a2ce 100644 --- a/test/test_statistics.py +++ b/test/test_statistics.py @@ -1,7 +1,7 @@ import pytest from prometheus_client import REGISTRY, generate_latest -from aurweb import cache, db, prometheus, time +from aurweb import cache, db, time from aurweb.models import Package, PackageBase, PackageRequest from aurweb.models.account_type import PACKAGE_MAINTAINER_ID, USER_ID from aurweb.models.package_request import ( @@ -16,7 +16,7 @@ from aurweb.statistics import Statistics, update_prometheus_metrics @pytest.fixture(autouse=True) -def setup(db_test): +def setup(db_test, prometheus_test): return @@ -140,11 +140,6 @@ def test_get_count_change(stats: Statistics, test_data): def test_update_prometheus_metrics(test_data): - # Make sure any previous data is cleared - prometheus.USERS.clear() - prometheus.PACKAGES.clear() - prometheus.REQUESTS.clear() - metrics = str(generate_latest(REGISTRY)) assert "aur_users{" not in metrics