jarvis / tests /test_runtime_telemetry.py
Jonathan Haas
refactor: extract observability status and telemetry refresh helpers
0291c72
Raw
History Blame Contribute Delete
1.94 kB
from __future__ import annotations
from types import SimpleNamespace
from jarvis.runtime_telemetry import refresh_tool_error_counters
def test_refresh_tool_error_counters_sets_service_storage_and_unknown_totals() -> None:
runtime = SimpleNamespace(
_telemetry={"service_errors": 0.0, "storage_errors": 0.0, "unknown_summary_details": 0.0},
_telemetry_error_counts={},
)
refresh_tool_error_counters(
runtime,
list_summaries_fn=lambda limit=200: [
{"status": "error", "detail": "timeout"},
{"status": "error", "detail": "storage_error"},
{"status": "error", "detail": "not_a_real_code"},
{"status": "ok", "detail": "timeout"},
],
tool_service_error_codes={"timeout", "unknown_error"},
storage_error_details={"storage_error"},
service_error_details={"timeout", "http_error"},
)
assert runtime._telemetry["service_errors"] == 1.0
assert runtime._telemetry["storage_errors"] == 1.0
assert runtime._telemetry["unknown_summary_details"] == 1.0
assert runtime._telemetry_error_counts == {"timeout": 1.0}
def test_refresh_tool_error_counters_noop_when_summary_listing_fails() -> None:
runtime = SimpleNamespace(
_telemetry={"service_errors": 2.0, "storage_errors": 1.0, "unknown_summary_details": 3.0},
_telemetry_error_counts={"timeout": 2.0},
)
def _raise(**_kwargs):
raise RuntimeError("boom")
refresh_tool_error_counters(
runtime,
list_summaries_fn=_raise,
tool_service_error_codes={"timeout"},
storage_error_details={"storage_error"},
service_error_details={"timeout"},
)
assert runtime._telemetry["service_errors"] == 2.0
assert runtime._telemetry["storage_errors"] == 1.0
assert runtime._telemetry["unknown_summary_details"] == 3.0
assert runtime._telemetry_error_counts == {"timeout": 2.0}