"""Tests for the metrics collector.""" from fusionagi.api.metrics import MetricsCollector class TestMetricsCollector: def test_counter(self) -> None: m = MetricsCollector() m.inc("requests") m.inc("requests") snap = m.snapshot() assert snap["counters"]["requests"] == 2 def test_counter_with_labels(self) -> None: m = MetricsCollector() m.inc("http_requests", labels={"method": "GET"}) m.inc("http_requests", labels={"method": "POST"}) snap = m.snapshot() assert snap["counters"]["http_requests{method=GET}"] == 1 assert snap["counters"]["http_requests{method=POST}"] == 1 def test_histogram(self) -> None: m = MetricsCollector() for v in [0.1, 0.2, 0.3, 0.4, 0.5]: m.observe("latency", v) snap = m.snapshot() assert snap["histograms"]["latency"]["count"] == 5 assert 0.2 < snap["histograms"]["latency"]["mean"] < 0.4 def test_gauge(self) -> None: m = MetricsCollector() m.set_gauge("active_sessions", 5.0) snap = m.snapshot() assert snap["gauges"]["active_sessions"] == 5.0 def test_uptime(self) -> None: m = MetricsCollector() snap = m.snapshot() assert snap["uptime_seconds"] >= 0