userver: samples/testsuite-support/tests/test_metrics.py
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
samples/testsuite-support/tests/test_metrics.py
1import pytest
2
3
4async def test_basic(service_client, monitor_client):
5 response = await service_client.get('/metrics')
6 assert response.status_code == 200
7 assert 'application/json' in response.headers['Content-Type']
8
9 metric = await monitor_client.single_metric('sample-metrics.foo')
10 assert metric.value > 0
11
12
13# /// [uservice_oneshot sample]
14@pytest.mark.uservice_oneshot
15async def test_initial_metrics(service_client, monitor_client):
16 metric = await monitor_client.single_metric('sample-metrics.foo')
17 assert metric.value == 0
18 # /// [uservice_oneshot sample]
19
20
21# /// [metrics reset]
22async def test_reset(service_client, monitor_client):
23 # Reset service metrics
24 await service_client.reset_metrics()
25 # Retrieve metrics
26 metric = await monitor_client.single_metric('sample-metrics.foo')
27 assert metric.value == 0
28 assert not metric.labels
29 # /// [metrics reset]
30
31 response = await service_client.get('/metrics')
32 assert response.status_code == 200
33 assert 'application/json' in response.headers['Content-Type']
34
35 metric = await monitor_client.single_metric('sample-metrics.foo')
36 assert metric.value == 1
37
38 await service_client.reset_metrics()
39 metric = await monitor_client.single_metric('sample-metrics.foo')
40 assert metric.value == 0
41
42
43# /// [metrics labels]
44async def test_engine_metrics(service_client, monitor_client):
45 metric = await monitor_client.single_metric(
46 'engine.task-processors.tasks.finished.v2',
47 labels={'task_processor': 'main-task-processor'},
48 )
49 assert metric.value > 0
50 assert metric.labels == {'task_processor': 'main-task-processor'}
51
52 metrics_dict = await monitor_client.metrics(
53 prefix='http.',
54 labels={'http_path': '/ping'},
55 )
56
57 assert metrics_dict
58 assert 'http.handler.cancelled-by-deadline' in metrics_dict
59
60 assert (
61 metrics_dict.value_at(
62 'http.handler.in-flight',
63 labels={
64 'http_path': '/ping',
65 'http_handler': 'handler-ping',
66 'version': '2',
67 },
68 )
69 == 0
70 )
71 # /// [metrics labels]