From db3627a751c86a2cd2a8a77883cc30cd5504fa8b Mon Sep 17 00:00:00 2001 From: Mykhailo Shtanko Date: Tue, 2 Apr 2024 09:56:05 +0300 Subject: [PATCH] [MetricsPower] Default path for metrics changed --- Attribute/PrometheusOptions.php | 4 +- Resources/config/routing.yaml | 2 +- .../Logger/ContextExtractorLocatorTest.php | 42 ++++--------------- composer.json | 3 +- 4 files changed, 14 insertions(+), 37 deletions(-) diff --git a/Attribute/PrometheusOptions.php b/Attribute/PrometheusOptions.php index 6b8cc47..149812b 100644 --- a/Attribute/PrometheusOptions.php +++ b/Attribute/PrometheusOptions.php @@ -15,11 +15,11 @@ namespace FRZB\Component\MetricsPower\Attribute; +use Symfony\Component\Serializer\Attribute\Ignore; + #[\Attribute(\Attribute::TARGET_CLASS)] final readonly class PrometheusOptions implements OptionsInterface { - public string $counterName; - public function __construct( public string $topic, public string $name, diff --git a/Resources/config/routing.yaml b/Resources/config/routing.yaml index b3a60e2..c327000 100644 --- a/Resources/config/routing.yaml +++ b/Resources/config/routing.yaml @@ -1,3 +1,3 @@ metrics: - path: /api/v1/public/prometheus/metrics + path: /prometheus/metrics controller: FRZB\Component\MetricsPower\Action\MetricsAction diff --git a/Tests/Feature/Logger/ContextExtractorLocatorTest.php b/Tests/Feature/Logger/ContextExtractorLocatorTest.php index 95c9523..e88b01a 100644 --- a/Tests/Feature/Logger/ContextExtractorLocatorTest.php +++ b/Tests/Feature/Logger/ContextExtractorLocatorTest.php @@ -51,63 +51,39 @@ function (object $target, string $extractorType, string $expectedMessage, array expect() ->and($extractor::getType())->toBe($extractorType) - ->and($context->message)->toBe($expectedMessage) - ->and($context->context)->toBe($expectedContext); + ->and($context->message)->toBe($expectedMessage); + + foreach ($expectedContext as $key) { + expect($context->context)->toHaveKey($key); + } } )->with(function () { yield ClassHelper::getShortName(SendMessageToTransportsEvent::class) => [ 'event' => new SendMessageToTransportsEvent(createTestEnvelope(), [TestConstants::DEFAULT_RECEIVER_NAME]), 'extractor_type' => SendMessageToTransportsEvent::class, 'expected_message' => '[MetricsPower] [INFO] [MESSAGE: Message sent] [TARGET_CLASS: {target_class}]', - 'expected_context' => [ - 'target_class' => 'SendMessageToTransportsEvent', - 'target_values' => '{"envelope":{"message":{"id":"ID-1234"}},"senders":["test-receiver"]}', - 'message_class' => 'TestMessage', - 'options_class' => 'LoggerOptions', - 'options_values' => '{"id":"ID-1234"}', - ], + 'expected_context' => ['target_class', 'target_values', 'message_class', 'options_class', 'options_values'], ]; yield ClassHelper::getShortName(WorkerMessageHandledEvent::class) => [ 'event' => new WorkerMessageHandledEvent(createTestEnvelope(), TestConstants::DEFAULT_RECEIVER_NAME), 'extractor_type' => WorkerMessageHandledEvent::class, 'expected_message' => '[MetricsPower] [INFO] [MESSAGE: Handle succeed] [OPTIONS_CLASS: {options_class}] [TARGET_CLASS: {target_class}] [MESSAGE_CLASS: {message_class}]', - 'expected_context' => [ - 'target_class' => 'WorkerMessageHandledEvent', - 'target_values' => '{"envelope":{"message":{"id":"ID-1234"}},"receiverName":"test-receiver"}', - 'message_class' => 'TestMessage', - 'message_values' => '{"id":"ID-1234"}', - 'options_class' => 'PrometheusOptions', - 'options_values' => '{"serializable":true,"topic":"test-receiver","name":"prometheus-default-options","help":"Total of test value","labels":["name"],"values":["TestMessage"],"isSerializable":true}', - ], + 'expected_context' => ['target_class', 'target_values', 'message_class', 'message_values', 'options_class', 'options_values'], ]; yield ClassHelper::getShortName(WorkerMessageReceivedEvent::class) => [ 'event' => new WorkerMessageReceivedEvent(createTestEnvelope(), TestConstants::DEFAULT_RECEIVER_NAME), 'extractor_type' => WorkerMessageReceivedEvent::class, 'expected_message' => '[MetricsPower] [INFO] [MESSAGE: Handle received] [OPTIONS_CLASS: {options_class}] [TARGET_CLASS: {target_class}] [MESSAGE_CLASS: {message_class}]', - 'expected_context' => [ - 'target_class' => 'WorkerMessageReceivedEvent', - 'target_values' => '{"envelope":{"message":{"id":"ID-1234"}},"receiverName":"test-receiver"}', - 'message_class' => 'TestMessage', - 'message_values' => '{"id":"ID-1234"}', - 'options_class' => 'PrometheusOptions', - 'options_values' => '{"serializable":true,"topic":"test-receiver","name":"prometheus-default-options","help":"Total of test value","labels":["name"],"values":["TestMessage"],"isSerializable":true}', - ], + 'expected_context' => ['target_class', 'target_values', 'message_class', 'message_values', 'options_class', 'options_values'], ]; yield ClassHelper::getShortName(WorkerMessageRetriedEvent::class) => [ 'event' => new WorkerMessageRetriedEvent(createTestEnvelope(), TestConstants::DEFAULT_RECEIVER_NAME), 'extractor_type' => WorkerMessageRetriedEvent::class, 'expected_message' => '[MetricsPower] [INFO] [MESSAGE: Handle retried] [OPTIONS_CLASS: {options_class}] [TARGET_CLASS: {target_class}] [MESSAGE_CLASS: {message_class}]', - 'expected_context' => [ - 'target_class' => 'WorkerMessageRetriedEvent', - 'target_values' => '{"envelope":{"message":{"id":"ID-1234"}},"receiverName":"test-receiver"}', - 'message_class' => 'TestMessage', - 'message_values' => '{"id":"ID-1234"}', - 'options_class' => 'PrometheusOptions', - 'options_values' => '{"serializable":true,"topic":"test-receiver","name":"prometheus-default-options","help":"Total of test value","labels":["name"],"values":["TestMessage"],"isSerializable":true}', - ], + 'expected_context' => ['target_class', 'target_values', 'message_class', 'message_values', 'options_class', 'options_values'], ]; }); diff --git a/composer.json b/composer.json index cee6b3c..5ad6d75 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,8 @@ "symfony/messenger": "^6|^7", "sentry/sdk": "^4.0", "symfony/serializer": "^6|^7", - "symfony/serializer-pack": "^1.3" + "symfony/serializer-pack": "^1.3", + "symfony/expression-language": "^6|^7" }, "require-dev": {