From ec792a3d379c911165038d8da5b339df6ca3fccd Mon Sep 17 00:00:00 2001 From: TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> Date: Wed, 1 Apr 2026 16:09:06 +0900 Subject: feat(shared): add health checks and Prometheus metrics --- shared/tests/test_metrics.py | 51 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 shared/tests/test_metrics.py (limited to 'shared/tests/test_metrics.py') diff --git a/shared/tests/test_metrics.py b/shared/tests/test_metrics.py new file mode 100644 index 0000000..079f01c --- /dev/null +++ b/shared/tests/test_metrics.py @@ -0,0 +1,51 @@ +"""Tests for Prometheus metrics utilities.""" +import pytest +from prometheus_client import CollectorRegistry + + +def make_metrics(service_name="test-service", registry=None): + from shared.metrics import ServiceMetrics + return ServiceMetrics(service_name, registry=registry) + + +def test_metrics_creates_with_prefix(): + """ServiceMetrics stores sanitized service name prefix.""" + registry = CollectorRegistry() + m = make_metrics("my-service", registry=registry) + assert m.service_name == "my_service" + + +def test_errors_total_increment(): + """errors_total counter can be incremented with labels.""" + registry = CollectorRegistry() + m = make_metrics("test-svc", registry=registry) + m.errors_total.labels(service="test_svc", error_type="timeout").inc() + assert m.errors_total.labels(service="test_svc", error_type="timeout")._value.get() == 1.0 + + +def test_events_processed_increment(): + """events_processed counter can be incremented with labels.""" + registry = CollectorRegistry() + m = make_metrics("test-svc", registry=registry) + m.events_processed.labels(service="test_svc", event_type="candle").inc(5) + assert m.events_processed.labels(service="test_svc", event_type="candle")._value.get() == 5.0 + + +def test_processing_seconds_observe(): + """processing_seconds histogram can observe values.""" + registry = CollectorRegistry() + m = make_metrics("test-svc", registry=registry) + m.processing_seconds.labels(service="test_svc").observe(0.5) + m.processing_seconds.labels(service="test_svc").observe(1.5) + # Sum should be 2.0 + assert m.processing_seconds.labels(service="test_svc")._sum.get() == 2.0 + + +def test_service_up_gauge(): + """service_up gauge can be set.""" + registry = CollectorRegistry() + m = make_metrics("test-svc", registry=registry) + m.service_up.labels(service="test_svc").set(1) + assert m.service_up.labels(service="test_svc")._value.get() == 1.0 + m.service_up.labels(service="test_svc").set(0) + assert m.service_up.labels(service="test_svc")._value.get() == 0.0 -- cgit v1.2.3