Part of https://github.com/element-hq/synapse/issues/18592 Separated out of https://github.com/element-hq/synapse/pull/18656 because it's a bigger, unique piece of the refactor ### Testing strategy 1. Add the `metrics` listener in your `homeserver.yaml` ```yaml listeners: # This is just showing how to configure metrics either way # # `http` `metrics` resource - port: 9322 type: http bind_addresses: ['127.0.0.1'] resources: - names: [metrics] compress: false # `metrics` listener - port: 9323 type: metrics bind_addresses: ['127.0.0.1'] ``` 1. Start the homeserver: `poetry run synapse_homeserver --config-path homeserver.yaml` 1. Fetch `http://localhost:9322/_synapse/metrics` and/or `http://localhost:9323/metrics` 1. Observe response includes the background processs metrics (`synapse_background_process_start_count`, `synapse_background_process_db_txn_count_total`, etc) with the `server_name` label
22 lines
832 B
Python
22 lines
832 B
Python
from unittest import TestCase as StdlibTestCase
|
|
from unittest.mock import Mock
|
|
|
|
from synapse.logging.context import ContextResourceUsage, LoggingContext
|
|
from synapse.metrics.background_process_metrics import _BackgroundProcess
|
|
|
|
|
|
class TestBackgroundProcessMetrics(StdlibTestCase):
|
|
def test_update_metrics_with_negative_time_diff(self) -> None:
|
|
"""We should ignore negative reported utime and stime differences"""
|
|
usage = ContextResourceUsage()
|
|
usage.ru_stime = usage.ru_utime = -1.0
|
|
|
|
mock_logging_context = Mock(spec=LoggingContext)
|
|
mock_logging_context.get_resource_usage.return_value = usage
|
|
|
|
process = _BackgroundProcess(
|
|
desc="test process", server_name="test_server", ctx=mock_logging_context
|
|
)
|
|
# Should not raise
|
|
process.update_metrics()
|