import pytest
async def test_basic(service_client, monitor_client):
response = await service_client.get('/metrics')
assert response.status_code == 200
assert 'application/json' in response.headers['Content-Type']
metric = await monitor_client.single_metric('sample-metrics.foo')
assert metric.value > 0
@pytest.mark.uservice_oneshot
async def test_initial_metrics(service_client, monitor_client):
metric = await monitor_client.single_metric('sample-metrics.foo')
assert metric.value == 0
await service_client.reset_metrics()
assert metric.value == 0
assert not metric.labels
response = await service_client.get('/metrics')
assert response.status_code == 200
assert 'application/json' in response.headers['Content-Type']
metric = await monitor_client.single_metric('sample-metrics.foo')
assert metric.value == 1
await service_client.reset_metrics()
metric = await monitor_client.single_metric('sample-metrics.foo')
assert metric.value == 0
async def test_engine_metrics(service_client, monitor_client: pytest_userver.client.ClientMonitor):
'engine.task-processors.tasks.finished.v2',
labels={'task_processor': 'main-task-processor'},
)
assert metric.value > 0
assert metric.labels == {'task_processor': 'main-task-processor'}
prefix='http.',
labels={'http_path': '/ping'},
)
assert metrics_dict
assert 'http.handler.cancelled-by-deadline' in metrics_dict
assert (
metrics_dict.value_at(
'http.handler.in-flight',
labels={
'http_path': '/ping',
'http_handler': 'handler-ping',
'version': '2',
},
)
== 0
)
async def test_engine_tasks_alive_metric(service_client, monitor_client: pytest_userver.client.ClientMonitor):
'engine.task-processors.tasks.alive',
labels={'task_processor': 'main-task-processor'},
)
assert metric.value > 0
assert metric.labels == {'task_processor': 'main-task-processor'}
async def test_some_optional_metric(service_client, monitor_client: pytest_userver.client.ClientMonitor):
'some.metric.error',
labels={'task_processor': 'main-task-processor'},
)
assert metric is None or metric.value == 0
async def test_diff_metrics(service_client, monitor_client: pytest_userver.client.ClientMonitor):
async with monitor_client.metrics_diff(prefix='sample-metrics') as differ:
response = await service_client.get('/metrics')
assert response.status == 200
assert differ.value_at('foo') == 1
async def test_engine_logger_metrics(service_client, monitor_client: pytest_userver.client.ClientMonitor):
prefix='logger.',
labels={'logger': 'default'},
)
assert metrics_dict
assert 'logger.total' in metrics_dict
assert metrics_dict.value_at('logger.total') > 0
assert (
metrics_dict.value_at(
'logger.dropped',
labels={
'logger': 'default',
'version': '2',
},
)
== 0
)