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));
}