21 lines
1.1 KiB
Python
21 lines
1.1 KiB
Python
import unittest
|
|
from types import SimpleNamespace
|
|
from prometheus_client import REGISTRY, generate_latest
|
|
from backend.app.metrics import record_api, record_remote
|
|
|
|
|
|
class MetricsTests(unittest.TestCase):
|
|
def test_route_template_not_private_path(self):
|
|
request = SimpleNamespace(method='GET', scope={'route': SimpleNamespace(path='/requests/{request_id}')})
|
|
before = REGISTRY.get_sample_value('magent_api_requests_total', {'method': 'GET', 'route': '/requests/{request_id}', 'status': '200'}) or 0
|
|
record_api(request, 200, .1)
|
|
self.assertEqual(REGISTRY.get_sample_value('magent_api_requests_total', {'method': 'GET', 'route': '/requests/{request_id}', 'status': '200'}), before + 1)
|
|
|
|
def test_unknown_route_and_service_are_bounded(self):
|
|
record_api(SimpleNamespace(method='SECRET-USER-METHOD', scope={}), 404, .01)
|
|
record_remote('secret-service-name', 'GET', 'error', .1)
|
|
data = generate_latest().decode()
|
|
self.assertNotIn('secret-service-name', data)
|
|
self.assertNotIn('SECRET-USER-METHOD', data)
|
|
self.assertIn('route="unmatched"', data)
|