This commit is contained in:
63
tests/test_ai_automation_metrics.py
Normal file
63
tests/test_ai_automation_metrics.py
Normal file
@@ -0,0 +1,63 @@
|
||||
def test_ai_automation_metrics_snapshot_records_event_router_and_autoheal():
|
||||
from services import ai_automation_metrics as metrics
|
||||
|
||||
metrics.reset_for_tests()
|
||||
|
||||
metrics.record_event_router_dispatch(
|
||||
tier="L2",
|
||||
event_type="scheduler_task_failure",
|
||||
delivered=False,
|
||||
queued=True,
|
||||
latency_ms=123,
|
||||
)
|
||||
metrics.record_event_router_safe_action("retry_task", "ok")
|
||||
metrics.record_event_router_replay(attempted=2, sent=1, failed=1)
|
||||
metrics.record_autoheal_action(
|
||||
action="ALERT_ONLY",
|
||||
error_type="DB_UNREACHABLE",
|
||||
success=True,
|
||||
duration_ms=45,
|
||||
)
|
||||
|
||||
snap = metrics.snapshot()
|
||||
counters = {
|
||||
(metric, dict(labels).get("outcome") or dict(labels).get("status") or dict(labels).get("result")): value
|
||||
for (metric, labels), value in snap["counters"].items()
|
||||
}
|
||||
|
||||
assert counters[("event_router_dispatch_total", "queued")] == 1
|
||||
assert counters[("event_router_safe_action_total", "ok")] == 1
|
||||
assert counters[("event_router_replay_total", "attempted")] == 2
|
||||
assert counters[("event_router_replay_total", "sent")] == 1
|
||||
assert counters[("autoheal_action_total", "success")] == 1
|
||||
|
||||
latency = next(
|
||||
values for (metric, _labels), values in snap["latency"].items()
|
||||
if metric == "event_router_latency_ms"
|
||||
)
|
||||
assert latency["count"] == 1
|
||||
assert latency["sum"] == 123
|
||||
assert latency["max"] == 123
|
||||
|
||||
|
||||
def test_system_metrics_exports_ai_automation_metrics():
|
||||
from prometheus_client import CollectorRegistry, Gauge, generate_latest
|
||||
from routes.system_public_routes import _register_ai_automation_metrics
|
||||
from services import ai_automation_metrics as metrics
|
||||
|
||||
metrics.reset_for_tests()
|
||||
metrics.record_event_router_dispatch(
|
||||
tier="L1",
|
||||
event_type="crawler_timeout",
|
||||
delivered=True,
|
||||
latency_ms=7,
|
||||
)
|
||||
|
||||
registry = CollectorRegistry()
|
||||
_register_ai_automation_metrics(registry, Gauge, metrics.snapshot())
|
||||
output = generate_latest(registry).decode("utf-8")
|
||||
|
||||
assert "momo_ai_event_router_dispatch_total" in output
|
||||
assert 'event_type="crawler_timeout"' in output
|
||||
assert 'outcome="delivered"' in output
|
||||
assert "momo_ai_event_router_latency_ms_count" in output
|
||||
Reference in New Issue
Block a user