- tests: make the transient-backoff progression assertion load-independent by bracketing the get_retry_decision call with before/after timestamps instead of measuring against a second datetime.now() (no freezegun dependency). - tests: use pytest.approx for the ingest-queue-depth gauge assertions — SonarCloud python:S1244 (float == ) was a MAJOR reliability finding that tripped the new_reliability_rating quality gate. - processor: tighten the EscalateError lazy-bind comment (file processing already imports the document stack via get_registry; the gating only spares the delete / text-doc paths and module-load time). Deck #323. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""Unit test for the per-tier ingest-queue-depth gauge (Deck #323).
|
|
|
|
Guards the round-2 fix: a queue that drains to empty (and so drops out of
|
|
procrastinate's ``list_queues_async``) must read 0, not its last non-zero value.
|
|
"""
|
|
|
|
import pytest
|
|
from pytest import approx
|
|
|
|
from nextcloud_mcp_server.observability.metrics import update_ingest_queue_depth
|
|
|
|
pytestmark = pytest.mark.unit
|
|
|
|
_METRIC = "astrolabe_ingest_queue_depth"
|
|
|
|
|
|
def test_drained_queue_zeroes_not_stale(metric_sample):
|
|
# ocr has a backlog this tick. (pytest.approx: the gauge sample is a float.)
|
|
update_ingest_queue_depth({"ingest-ocr": {"todo": 4}})
|
|
assert metric_sample(_METRIC, {"queue": "ingest-ocr", "status": "todo"}) == approx(
|
|
4
|
|
)
|
|
|
|
# Next tick ocr has drained → procrastinate omits it from by_queue entirely.
|
|
update_ingest_queue_depth({"ingest-fast": {"todo": 1}})
|
|
# The gauge must read 0 for the drained queue, not the stale 4.
|
|
assert metric_sample(_METRIC, {"queue": "ingest-ocr", "status": "todo"}) == approx(
|
|
0
|
|
)
|
|
assert metric_sample(_METRIC, {"queue": "ingest-fast", "status": "todo"}) == approx(
|
|
1
|
|
)
|
|
|
|
|
|
def test_none_is_noop(metric_sample):
|
|
update_ingest_queue_depth({"ingest-fast": {"doing": 2}})
|
|
# Memory backend passes None → must not wipe the last published values.
|
|
update_ingest_queue_depth(None)
|
|
assert metric_sample(
|
|
_METRIC, {"queue": "ingest-fast", "status": "doing"}
|
|
) == approx(2)
|