40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
|
|
"""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
|