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
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
19
20
21
22async def test_reset(service_client, monitor_client):
23
24 await service_client.reset_metrics()
25
26 metric = await monitor_client.single_metric('sample-metrics.foo')
27 assert metric.value == 0
28 assert not metric.labels
29
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
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