From 1386d421b2ea62810439a765d1f160aed3f178cc Mon Sep 17 00:00:00 2001 From: JiriOndrusek Date: Fri, 1 Sep 2023 14:08:18 +0200 Subject: [PATCH] Micrometer: Router policy should be disabled by default (to be consistent with Camel) #5028 --- .../ROOT/pages/migration-guide/3.0.0.adoc | 16 +++++ .../reference/extensions/micrometer.adoc | 2 +- .../MicrometerMetricsConfigDefaultsTest.java | 4 +- ...icrometerMetricsConfigRoutePolicyTest.java | 71 +++++++++++++++++++ .../micrometer/CamelMicrometerConfig.java | 2 +- .../src/main/resources/application.properties | 4 +- 6 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigRoutePolicyTest.java diff --git a/docs/modules/ROOT/pages/migration-guide/3.0.0.adoc b/docs/modules/ROOT/pages/migration-guide/3.0.0.adoc index 7745a45347c0..39dc95d319b9 100644 --- a/docs/modules/ROOT/pages/migration-guide/3.0.0.adoc +++ b/docs/modules/ROOT/pages/migration-guide/3.0.0.adoc @@ -36,3 +36,19 @@ The following extensions have been removed. | camel-quarkus-vm | camel-quarkus-seda | camel-quarkus-xstream | camel-quarkus-jacksonxml |=== + + +== Change to default values of `camel.metrics.enableRoutePolicy` configuration + +The Micrometer extension's route policy was enabled by default in previous releases. + +Current behaviour has changed to reflect the default behavior of Camel. +`MicrometerRoutePolicyFactory` is now disabled by default. + +You can enable `MicrometerRoutePolicyFactory` using configuration property. + +``` +quarkus.camel.metrics.enable-route-policy = true +``` + +For more information, refer to the xref:reference/extensions/micrometer.adoc[Camel Quarkus Micrometer Extension] documentation. diff --git a/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc b/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc index 70911002fdb6..a0afb3f2ad15 100644 --- a/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc @@ -95,7 +95,7 @@ get created for you. Set whether to enable the MicrometerRoutePolicyFactory for capturing metrics on route processing times. | `boolean` -| `true` +| `false` |icon:lock[title=Fixed at build time] [[quarkus.camel.metrics.enable-message-history]]`link:#quarkus.camel.metrics.enable-message-history[quarkus.camel.metrics.enable-message-history]` diff --git a/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java index cf0612ee4328..54fe916e24d7 100644 --- a/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java +++ b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java @@ -22,7 +22,6 @@ import io.quarkus.test.QuarkusUnitTest; import jakarta.inject.Inject; import org.apache.camel.CamelContext; -import org.apache.camel.component.micrometer.routepolicy.MicrometerRoutePolicyFactory; import org.apache.camel.component.micrometer.spi.InstrumentedThreadPoolFactory; import org.apache.camel.impl.engine.DefaultMessageHistoryFactory; import org.apache.camel.spi.EventNotifier; @@ -51,8 +50,7 @@ public class MicrometerMetricsConfigDefaultsTest { @Test public void testMicrometerMetricsConfiguration() { List routePolicyFactories = context.getRoutePolicyFactories(); - assertEquals(1, routePolicyFactories.size()); - assertTrue(routePolicyFactories.get(0) instanceof MicrometerRoutePolicyFactory); + assertEquals(0, routePolicyFactories.size()); MessageHistoryFactory messageHistoryFactory = context.getMessageHistoryFactory(); assertNotNull(messageHistoryFactory); diff --git a/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigRoutePolicyTest.java b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigRoutePolicyTest.java new file mode 100644 index 000000000000..d4db0a5c1663 --- /dev/null +++ b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigRoutePolicyTest.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.quarkus.component.micrometer.deployment; + +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.List; +import java.util.Properties; + +import io.quarkus.test.QuarkusUnitTest; +import jakarta.inject.Inject; +import org.apache.camel.CamelContext; +import org.apache.camel.component.micrometer.routepolicy.MicrometerRoutePolicyFactory; +import org.apache.camel.spi.RoutePolicyFactory; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.Asset; +import org.jboss.shrinkwrap.api.asset.StringAsset; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class MicrometerMetricsConfigRoutePolicyTest { + + @RegisterExtension + static final QuarkusUnitTest CONFIG = new QuarkusUnitTest() + .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) + .addAsResource(applicationProperties(), "application.properties")); + + @Inject + CamelContext context; + + @Test + public void testRouteConfigEnabledConfiguration() { + List routePolicyFactories = context.getRoutePolicyFactories(); + assertEquals(1, routePolicyFactories.size()); + assertTrue(routePolicyFactories.get(0) instanceof MicrometerRoutePolicyFactory); + } + + public static final Asset applicationProperties() { + Writer writer = new StringWriter(); + + Properties props = new Properties(); + props.setProperty("quarkus.camel.metrics.enable-route-policy", "true"); + + try { + props.store(writer, ""); + } catch (IOException e) { + throw new RuntimeException(e); + } + + return new StringAsset(writer.toString()); + } +} diff --git a/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java b/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java index e283580286e4..3f9c8bd52d3b 100644 --- a/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java +++ b/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java @@ -27,7 +27,7 @@ public class CamelMicrometerConfig { * Set whether to enable the MicrometerRoutePolicyFactory for capturing metrics * on route processing times. */ - @ConfigItem(defaultValue = "true") + @ConfigItem(defaultValue = "false") public boolean enableRoutePolicy; /** diff --git a/integration-tests/micrometer/src/main/resources/application.properties b/integration-tests/micrometer/src/main/resources/application.properties index 38a64cd1465a..00a07b60bd5d 100644 --- a/integration-tests/micrometer/src/main/resources/application.properties +++ b/integration-tests/micrometer/src/main/resources/application.properties @@ -19,4 +19,6 @@ camel.context.name = quarkus-camel-micrometer quarkus.camel.metrics.enable-message-history = true -quarkus.camel.metrics.enable-instrumented-thread-pool-factory = true \ No newline at end of file +quarkus.camel.metrics.enable-instrumented-thread-pool-factory = true + +quarkus.camel.metrics.enable-route-policy = true \ No newline at end of file