You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/03/06 13:32:48 UTC

(camel) 03/07: CAMEL-20461: camel-micrometer - Add statistics for context level

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch mm
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 789d9578e70719e140b90505c79f1ff67a95e279
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Mar 6 09:44:25 2024 +0100

    CAMEL-20461: camel-micrometer - Add statistics for context level
---
 .../prometheus/MicrometerPrometheus.java           |  2 ++
 .../messagehistory/ManagedMessageHistoryTest.java  | 11 +++++++-
 .../AbstractMicrometerRoutePolicyTest.java         | 29 +++++++++++-----------
 .../ManagedMicrometerRoutePolicyTest.java          |  5 ++++
 .../routepolicy/MicrometerContextPolicyTest.java   |  5 ++--
 ....java => ZMicrometerContextOnlyPolicyTest.java} |  6 ++---
 6 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/components/camel-micrometer-prometheus/src/main/java/org/apache/camel/component/micrometer/prometheus/MicrometerPrometheus.java b/components/camel-micrometer-prometheus/src/main/java/org/apache/camel/component/micrometer/prometheus/MicrometerPrometheus.java
index e9a16feb5a6..7174f6c0831 100644
--- a/components/camel-micrometer-prometheus/src/main/java/org/apache/camel/component/micrometer/prometheus/MicrometerPrometheus.java
+++ b/components/camel-micrometer-prometheus/src/main/java/org/apache/camel/component/micrometer/prometheus/MicrometerPrometheus.java
@@ -264,6 +264,8 @@ public class MicrometerPrometheus extends ServiceSupport implements CamelMetrics
                 factory.getPolicyConfiguration().setRouteEnabled(true);
             }
             factory.setMeterRegistry(meterRegistry);
+            // ensure factory will be started and stopped
+            camelContext.addService(factory);
             camelContext.addRoutePolicyFactory(factory);
         }
 
diff --git a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/messagehistory/ManagedMessageHistoryTest.java b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/messagehistory/ManagedMessageHistoryTest.java
index 7125f9d5ab8..030b6a6cd08 100644
--- a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/messagehistory/ManagedMessageHistoryTest.java
+++ b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/messagehistory/ManagedMessageHistoryTest.java
@@ -63,6 +63,16 @@ public class ManagedMessageHistoryTest extends CamelTestSupport {
         meterRegistry.add(new JmxMeterRegistry(CamelJmxConfig.DEFAULT, Clock.SYSTEM, HierarchicalNameMapper.DEFAULT));
     }
 
+    @Override
+    public void tearDown() throws Exception {
+        super.tearDown();
+        if (meterRegistry != null) {
+            meterRegistry.clear();
+            meterRegistry.close();
+            meterRegistry = null;
+        }
+    }
+
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
@@ -71,7 +81,6 @@ public class ManagedMessageHistoryTest extends CamelTestSupport {
         factory.setPrettyPrint(true);
         factory.setMeterRegistry(meterRegistry);
         context.setMessageHistoryFactory(factory);
-
         return context;
     }
 
diff --git a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/AbstractMicrometerRoutePolicyTest.java b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/AbstractMicrometerRoutePolicyTest.java
index 14c39df7f17..ecd403d4c41 100644
--- a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/AbstractMicrometerRoutePolicyTest.java
+++ b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/AbstractMicrometerRoutePolicyTest.java
@@ -16,13 +16,9 @@
  */
 package org.apache.camel.component.micrometer.routepolicy;
 
-import io.micrometer.core.instrument.Clock;
-import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
+import io.micrometer.core.instrument.MeterRegistry;
 import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
-import io.micrometer.core.instrument.util.HierarchicalNameMapper;
-import io.micrometer.jmx.JmxMeterRegistry;
 import org.apache.camel.CamelContext;
-import org.apache.camel.component.micrometer.CamelJmxConfig;
 import org.apache.camel.component.micrometer.MicrometerConstants;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.slf4j.Logger;
@@ -31,12 +27,7 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractMicrometerRoutePolicyTest extends CamelTestSupport {
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
-    protected CompositeMeterRegistry meterRegistry;
-
-    @Override
-    protected boolean useJmx() {
-        return true;
-    }
+    protected MeterRegistry meterRegistry;
 
     protected MicrometerRoutePolicyFactory createMicrometerRoutePolicyFactory() {
         MicrometerRoutePolicyFactory factory = new MicrometerRoutePolicyFactory();
@@ -44,22 +35,30 @@ public abstract class AbstractMicrometerRoutePolicyTest extends CamelTestSupport
         return factory;
     }
 
+    @Override
+    public void tearDown() throws Exception {
+        super.tearDown();
+        if (meterRegistry != null) {
+            meterRegistry.clear();
+            meterRegistry.close();
+            meterRegistry = null;
+        }
+    }
+
     protected String formatMetricName(String name) {
         return name;
     }
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
-        meterRegistry = new CompositeMeterRegistry();
-        meterRegistry.add(new SimpleMeterRegistry());
-        meterRegistry.add(new JmxMeterRegistry(CamelJmxConfig.DEFAULT, Clock.SYSTEM, HierarchicalNameMapper.DEFAULT));
-
+        meterRegistry = new SimpleMeterRegistry();
         CamelContext context = super.createCamelContext();
         MicrometerRoutePolicyFactory factory = createMicrometerRoutePolicyFactory();
         factory.setCamelContext(context);
         factory.setMeterRegistry(meterRegistry);
         context.addRoutePolicyFactory(factory);
         context.getRegistry().bind(MicrometerConstants.METRICS_REGISTRY_NAME, meterRegistry);
+        context.addService(factory);
         return context;
     }
 
diff --git a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/ManagedMicrometerRoutePolicyTest.java b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/ManagedMicrometerRoutePolicyTest.java
index 634ce915819..399655f58d0 100644
--- a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/ManagedMicrometerRoutePolicyTest.java
+++ b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/ManagedMicrometerRoutePolicyTest.java
@@ -33,6 +33,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class ManagedMicrometerRoutePolicyTest extends AbstractMicrometerRoutePolicyTest {
 
+    @Override
+    protected boolean useJmx() {
+        return true;
+    }
+
     protected MBeanServer getMBeanServer() {
         return context.getManagementStrategy().getManagementAgent().getMBeanServer();
     }
diff --git a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerContextPolicyTest.java b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerContextPolicyTest.java
index d5badf455a6..5ed646ffd70 100644
--- a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerContextPolicyTest.java
+++ b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerContextPolicyTest.java
@@ -34,7 +34,6 @@ public class MicrometerContextPolicyTest extends AbstractMicrometerRoutePolicyTe
     protected MicrometerRoutePolicyFactory createMicrometerRoutePolicyFactory() {
         MicrometerRoutePolicyFactory factory = super.createMicrometerRoutePolicyFactory();
         factory.getPolicyConfiguration().setContextEnabled(true);
-        factory.getPolicyConfiguration().setRouteEnabled(false);
         return factory;
     }
 
@@ -54,10 +53,10 @@ public class MicrometerContextPolicyTest extends AbstractMicrometerRoutePolicyTe
 
         MockEndpoint.assertIsSatisfied(context);
 
-        Timer fooTimer
+        Timer contextTimer
                 = meterRegistry.find(formatMetricName(DEFAULT_CAMEL_ROUTE_POLICY_METER_NAME)).tag(EVENT_TYPE_TAG, "context")
                         .timer();
-        assertEquals(count, fooTimer.count());
+        assertEquals(count, contextTimer.count());
     }
 
     @Override
diff --git a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerContextPolicyTest.java b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/ZMicrometerContextOnlyPolicyTest.java
similarity index 94%
copy from components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerContextPolicyTest.java
copy to components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/ZMicrometerContextOnlyPolicyTest.java
index d5badf455a6..360bfeff5aa 100644
--- a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/MicrometerContextPolicyTest.java
+++ b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/routepolicy/ZMicrometerContextOnlyPolicyTest.java
@@ -25,7 +25,7 @@ import static org.apache.camel.component.micrometer.MicrometerConstants.DEFAULT_
 import static org.apache.camel.component.micrometer.MicrometerConstants.EVENT_TYPE_TAG;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class MicrometerContextPolicyTest extends AbstractMicrometerRoutePolicyTest {
+public class ZMicrometerContextOnlyPolicyTest extends AbstractMicrometerRoutePolicyTest {
 
     private static final long DELAY_FOO = 20;
     private static final long DELAY_BAR = 50;
@@ -54,10 +54,10 @@ public class MicrometerContextPolicyTest extends AbstractMicrometerRoutePolicyTe
 
         MockEndpoint.assertIsSatisfied(context);
 
-        Timer fooTimer
+        Timer contextTimer
                 = meterRegistry.find(formatMetricName(DEFAULT_CAMEL_ROUTE_POLICY_METER_NAME)).tag(EVENT_TYPE_TAG, "context")
                         .timer();
-        assertEquals(count, fooTimer.count());
+        assertEquals(count, contextTimer.count());
     }
 
     @Override