change: log out details about PROMETHEUS_MULTIPROC_DIR

Additionally, respond with a 503 if the var is not set when
/metrics is requested.

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2022-02-19 11:28:16 -08:00
parent 388e64d0af
commit c83c5cdc42
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
4 changed files with 35 additions and 5 deletions

View file

@ -104,6 +104,17 @@ async def test_asgi_app_unsupported_backends():
await aurweb.asgi.app_startup()
@pytest.mark.asyncio
async def test_asgi_app_disabled_metrics(caplog: pytest.LogCaptureFixture):
env = {"PROMETHEUS_MULTIPROC_DIR": str()}
with mock.patch.dict(os.environ, env):
await aurweb.asgi.app_startup()
expected = ("$PROMETHEUS_MULTIPROC_DIR is not set, the /metrics "
"endpoint is disabled.")
assert expected in caplog.text
@pytest.fixture
def use_traceback():
config_getboolean = aurweb.config.getboolean

View file

@ -160,12 +160,23 @@ def test_archive_sig_404(client: TestClient):
def test_metrics(client: TestClient):
with client as request:
resp = request.get("/metrics")
with tempfile.TemporaryDirectory() as tmpdir:
env = {"PROMETHEUS_MULTIPROC_DIR": tmpdir}
with mock.patch.dict(os.environ, env):
with client as request:
resp = request.get("/metrics")
assert resp.status_code == int(HTTPStatus.OK)
assert resp.headers.get("Content-Type").startswith("text/plain")
def test_disabled_metrics(client: TestClient):
env = {"PROMETHEUS_MULTIPROC_DIR": str()}
with mock.patch.dict(os.environ, env):
with client as request:
resp = request.get("/metrics")
assert resp.status_code == int(HTTPStatus.SERVICE_UNAVAILABLE)
def test_rtl(client: TestClient):
responses = {}
expected = [