You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2019/10/08 08:04:24 UTC

[camel-quarkus] branch master updated: Auto configure MicroProfile metrics Camel context event notifier

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

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/master by this push:
     new b440acb  Auto configure MicroProfile metrics Camel context event notifier
b440acb is described below

commit b440acb712c09402999e30bdb254021c332fb107
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Oct 8 07:23:57 2019 +0100

    Auto configure MicroProfile metrics Camel context event notifier
    
    fixes #240
---
 .../runtime/CamelMicroProfileMetricsConfig.java    |  7 +++++
 .../runtime/CamelMicroProfileMetricsRecorder.java  |  5 ++++
 .../metrics/it/MicroProfileMetricsResource.java    | 15 ++++++++---
 .../it/MicroProfileMetricsRouteBuilder.java        | 13 ++++++---
 .../metrics/it/MicroProfileMetricsTest.java        | 31 ++++++++++++++++------
 5 files changed, 55 insertions(+), 16 deletions(-)

diff --git a/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsConfig.java b/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsConfig.java
index 6a5c06c..c14ed50 100644
--- a/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsConfig.java
+++ b/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsConfig.java
@@ -53,4 +53,11 @@ public final class CamelMicroProfileMetricsConfig {
      */
     @ConfigItem(defaultValue = "true")
     public boolean enableRouteEventNotifier;
+
+    /**
+     * Set whether to enable the MicroProfileMetricsCamelContextEventNotifier for capturing metrics
+     * about the CamelContext, such as status and uptime.
+     */
+    @ConfigItem(defaultValue = "true")
+    public boolean enableCamelContextEventNotifier;
 }
diff --git a/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsRecorder.java b/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsRecorder.java
index 7546cc9..9150cdc 100644
--- a/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsRecorder.java
+++ b/extensions/microprofile-metrics/runtime/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/runtime/CamelMicroProfileMetricsRecorder.java
@@ -22,6 +22,7 @@ import io.quarkus.runtime.annotations.Recorder;
 import io.smallrye.metrics.MetricRegistries;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.component.microprofile.metrics.event.notifier.context.MicroProfileMetricsCamelContextEventNotifier;
 import org.apache.camel.component.microprofile.metrics.event.notifier.exchange.MicroProfileMetricsExchangeEventNotifier;
 import org.apache.camel.component.microprofile.metrics.event.notifier.route.MicroProfileMetricsRouteEventNotifier;
 import org.apache.camel.component.microprofile.metrics.message.history.MicroProfileMetricsMessageHistoryFactory;
@@ -56,5 +57,9 @@ public class CamelMicroProfileMetricsRecorder {
         if (config.enableRouteEventNotifier) {
             managementStrategy.addEventNotifier(new MicroProfileMetricsRouteEventNotifier());
         }
+
+        if (config.enableCamelContextEventNotifier) {
+            managementStrategy.addEventNotifier(new MicroProfileMetricsCamelContextEventNotifier());
+        }
     }
 }
diff --git a/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsResource.java b/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsResource.java
index 9cf9c3e..0b8a90d 100644
--- a/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsResource.java
+++ b/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsResource.java
@@ -39,17 +39,24 @@ public class MicroProfileMetricsResource {
         return Response.ok().build();
     }
 
-    @Path("/gauge/increment")
+    @Path("/gauge/concurrent/increment")
     @GET
     public Response gaugeIncrement() throws Exception {
-        template.sendBody("direct:gaugeIncrement", null);
+        template.sendBody("direct:concurrentGaugeIncrement", null);
         return Response.ok().build();
     }
 
-    @Path("/gauge/decrement")
+    @Path("/gauge/concurrent/decrement")
     @GET
     public Response gaugeDecrement() throws Exception {
-        template.sendBody("direct:gaugeDecrement", null);
+        template.sendBody("direct:concurrentGaugeDecrement", null);
+        return Response.ok().build();
+    }
+
+    @Path("/gauge")
+    @GET
+    public Response gaugeSetValue(@QueryParam("value") int value) throws Exception {
+        template.sendBody("direct:gauge", value);
         return Response.ok().build();
     }
 
diff --git a/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsRouteBuilder.java b/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsRouteBuilder.java
index e3d76fd..8f2a0aa 100644
--- a/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsRouteBuilder.java
+++ b/integration-tests/microprofile-metrics/src/main/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsRouteBuilder.java
@@ -17,6 +17,7 @@
 package org.apache.camel.quarkus.component.microprofile.metrics.it;
 
 import org.apache.camel.builder.RouteBuilder;
+import static org.apache.camel.component.microprofile.metrics.MicroProfileMetricsConstants.HEADER_GAUGE_VALUE;
 import static org.apache.camel.component.microprofile.metrics.MicroProfileMetricsConstants.HEADER_HISTOGRAM_VALUE;
 import static org.apache.camel.component.microprofile.metrics.MicroProfileMetricsConstants.HEADER_METER_MARK;
 
@@ -26,11 +27,15 @@ public class MicroProfileMetricsRouteBuilder extends RouteBuilder {
         from("direct:counter")
             .to("microprofile-metrics:counter:camel-quarkus-counter");
 
-        from("direct:gaugeIncrement")
-            .to("microprofile-metrics:concurrent gauge:camel-quarkus-gauge?gaugeIncrement=true");
+        from("direct:concurrentGaugeIncrement")
+            .to("microprofile-metrics:concurrent gauge:camel-quarkus-concurrent-gauge?gaugeIncrement=true");
 
-        from("direct:gaugeDecrement")
-            .to("microprofile-metrics:concurrent gauge:camel-quarkus-gauge?gaugeDecrement=true");
+        from("direct:concurrentGaugeDecrement")
+            .to("microprofile-metrics:concurrent gauge:camel-quarkus-concurrent-gauge?gaugeDecrement=true");
+
+        from("direct:gauge")
+            .setHeader(HEADER_GAUGE_VALUE, simple("${body}"))
+            .to("microprofile-metrics:gauge:camel-quarkus-gauge");
 
         from("direct:histogram")
             .setHeader(HEADER_HISTOGRAM_VALUE, simple("${body}"))
diff --git a/integration-tests/microprofile-metrics/src/test/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsTest.java b/integration-tests/microprofile-metrics/src/test/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsTest.java
index 7ace97a..3a785e2 100644
--- a/integration-tests/microprofile-metrics/src/test/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsTest.java
+++ b/integration-tests/microprofile-metrics/src/test/java/org/apache/camel/quarkus/component/microprofile/metrics/it/MicroProfileMetricsTest.java
@@ -22,6 +22,7 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.path.json.JsonPath;
 
+import org.apache.camel.ServiceStatus;
 import org.junit.jupiter.api.Test;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -40,20 +41,28 @@ class MicroProfileMetricsTest {
     }
 
     @Test
-    public void testMicroProfileMetricsGauge() {
+    public void testMicroProfileMetricsConcurrentGauge() {
         for (int i = 0; i < 10; i++) {
-            RestAssured.get("/microprofile-metrics/gauge/increment")
+            RestAssured.get("/microprofile-metrics/gauge/concurrent/increment")
                 .then()
                 .statusCode(200);
         }
-        assertEquals(10, getMetricIntValue("camel-quarkus-gauge.current"));
+        assertEquals(10, getMetricIntValue("camel-quarkus-concurrent-gauge.current"));
 
         for (int i = 0; i < 3; i++) {
-            RestAssured.get("/microprofile-metrics/gauge/decrement")
+            RestAssured.get("/microprofile-metrics/gauge/concurrent/decrement")
                 .then()
                 .statusCode(200);
         }
-        assertEquals(7, getMetricIntValue("camel-quarkus-gauge.current"));
+        assertEquals(7, getMetricIntValue("camel-quarkus-concurrent-gauge.current"));
+    }
+
+    @Test
+    public void testMicroProfileMetricsGauge() {
+        RestAssured.get("/microprofile-metrics/gauge?value=10")
+            .then()
+            .statusCode(200);
+        assertEquals(10, getMetricIntValue("camel-quarkus-gauge"));
     }
 
     @Test
@@ -85,7 +94,7 @@ class MicroProfileMetricsTest {
         RestAssured.get("/microprofile-metrics/timer")
             .then()
             .statusCode(200);
-        assertTrue(getMetricIntValue("camel.route.exchanges.total", CAMEL_CONTEXT_METRIC_TAG, "routeId=route6") > 0);
+        assertTrue(getMetricIntValue("camel.route.exchanges.total", CAMEL_CONTEXT_METRIC_TAG, "routeId=route7") > 0);
     }
 
     @Test
@@ -104,8 +113,8 @@ class MicroProfileMetricsTest {
 
     @Test
     public void testMicroProfileMetricsRouteEventNotifier() throws InterruptedException {
-        assertEquals(6, getMetricIntValue("camel.route.count"));
-        assertEquals(6, getMetricIntValue("camel.route.running.count"));
+        assertEquals(7, getMetricIntValue("camel.route.count"));
+        assertEquals(7, getMetricIntValue("camel.route.running.count"));
     }
 
     @Test
@@ -116,6 +125,12 @@ class MicroProfileMetricsTest {
         assertTrue(getMetricIntValue("camel.context.exchanges.total") > 0);
     }
 
+    @Test
+    public void testMicroProfileMetricsCamelContextEventNotifier() {
+        assertEquals(ServiceStatus.Started.ordinal(), getMetricIntValue("camel.context.status"));
+        assertTrue(getMetricIntValue("camel.context.uptime") > 0);
+    }
+
     private int getMetricIntValue(String metricName, String... tags) {
         return getApplicationMetrics().getInt(sanitizeMetricName(metricName, tags));
     }