SuperAI_Forecast / backend /test_observability_utils.py
Thang6822
Update Kronos Platform v6.1.0: Complete backend refactor and frontend UI optimization
a721dfa
from __future__ import annotations
import unittest
from backend.observability_utils import RequestMetricsRegistry, elapsed_ms, make_request_id
class ObservabilityUtilsTests(unittest.TestCase):
def test_make_request_id_returns_short_hex_token(self) -> None:
request_id = make_request_id()
self.assertEqual(len(request_id), 12)
int(request_id, 16)
def test_request_metrics_registry_tracks_counts_and_errors(self) -> None:
registry = RequestMetricsRegistry()
registry.record("/api/ping", 200, 10.0)
registry.record("/api/ping", 503, 30.0)
snapshot = registry.snapshot()
self.assertEqual(snapshot["total_requests"], 2)
self.assertEqual(snapshot["total_errors"], 1)
self.assertEqual(snapshot["routes"]["/api/ping"]["avg_duration_ms"], 20.0)
self.assertEqual(snapshot["routes"]["/api/ping"]["last_status_code"], 503)
def test_elapsed_ms_is_non_negative(self) -> None:
value = elapsed_ms(0.0)
self.assertGreaterEqual(value, 0.0)
if __name__ == "__main__":
unittest.main()