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 2022/10/26 13:53:51 UTC
[camel] branch main updated: CAMEL-18650: camel-micrometer - Add abilitiy to set metrics description.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new d36aebe1c2e CAMEL-18650: camel-micrometer - Add abilitiy to set metrics description.
d36aebe1c2e is described below
commit d36aebe1c2ece116a20c143cbb5ba3886ee43b45
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 26 15:53:34 2022 +0200
CAMEL-18650: camel-micrometer - Add abilitiy to set metrics description.
---
.../micrometer/MicrometerEndpointConfigurer.java | 6 ++
.../micrometer/MicrometerEndpointUriFactory.java | 3 +-
.../camel/component/micrometer/micrometer.json | 2 +
.../micrometer/AbstractMicrometerProducer.java | 15 ++--
.../component/micrometer/CounterProducer.java | 4 +-
.../micrometer/DistributionSummaryProducer.java | 4 +-
.../component/micrometer/MicrometerConsole.java | 37 +++++++++-
.../component/micrometer/MicrometerConstants.java | 2 +
.../component/micrometer/MicrometerEndpoint.java | 10 +++
.../camel/component/micrometer/TimerProducer.java | 12 +--
.../micrometer/MetricComponentSpringTest.java | 85 ----------------------
11 files changed, 77 insertions(+), 103 deletions(-)
diff --git a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java
index e0d2e1b4f1a..eefe7dcc654 100644
--- a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java
+++ b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java
@@ -26,6 +26,8 @@ public class MicrometerEndpointConfigurer extends PropertyConfigurerSupport impl
case "increment": target.setIncrement(property(camelContext, java.lang.String.class, value)); return true;
case "lazystartproducer":
case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+ case "metricsdescription":
+ case "metricsDescription": target.setMetricsDescription(property(camelContext, java.lang.String.class, value)); return true;
case "value": target.setValue(property(camelContext, java.lang.String.class, value)); return true;
default: return false;
}
@@ -39,6 +41,8 @@ public class MicrometerEndpointConfigurer extends PropertyConfigurerSupport impl
case "increment": return java.lang.String.class;
case "lazystartproducer":
case "lazyStartProducer": return boolean.class;
+ case "metricsdescription":
+ case "metricsDescription": return java.lang.String.class;
case "value": return java.lang.String.class;
default: return null;
}
@@ -53,6 +57,8 @@ public class MicrometerEndpointConfigurer extends PropertyConfigurerSupport impl
case "increment": return target.getIncrement();
case "lazystartproducer":
case "lazyStartProducer": return target.isLazyStartProducer();
+ case "metricsdescription":
+ case "metricsDescription": return target.getMetricsDescription();
case "value": return target.getValue();
default: return null;
}
diff --git a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java
index 7c0c4925c50..5f971497a7b 100644
--- a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java
+++ b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java
@@ -21,11 +21,12 @@ public class MicrometerEndpointUriFactory extends org.apache.camel.support.compo
private static final Set<String> SECRET_PROPERTY_NAMES;
private static final Set<String> MULTI_VALUE_PREFIXES;
static {
- Set<String> props = new HashSet<>(8);
+ Set<String> props = new HashSet<>(9);
props.add("action");
props.add("decrement");
props.add("increment");
props.add("lazyStartProducer");
+ props.add("metricsDescription");
props.add("metricsName");
props.add("metricsType");
props.add("tags");
diff --git a/components/camel-micrometer/src/generated/resources/org/apache/camel/component/micrometer/micrometer.json b/components/camel-micrometer/src/generated/resources/org/apache/camel/component/micrometer/micrometer.json
index 55e053463c3..8ffa980fb0e 100644
--- a/components/camel-micrometer/src/generated/resources/org/apache/camel/component/micrometer/micrometer.json
+++ b/components/camel-micrometer/src/generated/resources/org/apache/camel/component/micrometer/micrometer.json
@@ -32,6 +32,7 @@
"CamelMetricsCounterDecrement": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Override decrement value in URI", "constantName": "org.apache.camel.component.micrometer.MicrometerConstants#HEADER_COUNTER_DECREMENT" },
"CamelMetricsCounterIncrement": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Double", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Override increment value in URI", "constantName": "org.apache.camel.component.micrometer.MicrometerConstants#HEADER_COUNTER_INCREMENT" },
"CamelMetricsName": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Override name value in URI", "constantName": "org.apache.camel.component.micrometer.MicrometerConstants#HEADER_METRIC_NAME" },
+ "CamelMetricsDescription": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Override description value in URI", "constantName": "org.apache.camel.component.micrometer.MicrometerConstants#HEADER_METRIC_DESCRIPTION" },
"CamelMetricsTags": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "java.lang.Iterable<Tag>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "To augment meter tags defined as URI parameters", "constantName": "org.apache.camel.component.micrometer.MicrometerConstants#HEADER_METRIC_TAGS" }
},
"properties": {
@@ -41,6 +42,7 @@
"action": { "kind": "parameter", "displayName": "Action", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "start", "stop" ], "deprecated": false, "autowired": false, "secret": false, "description": "Action expression when using timer type" },
"decrement": { "kind": "parameter", "displayName": "Decrement", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Decrement value expression when using counter type" },
"increment": { "kind": "parameter", "displayName": "Increment", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Increment value expression when using counter type" },
+ "metricsDescription": { "kind": "parameter", "displayName": "Metrics Description", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Description of metrics" },
"value": { "kind": "parameter", "displayName": "Value", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Value expression when using histogram type" },
"lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
}
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java
index 3004bcf5f11..302abf2564a 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java
@@ -30,6 +30,7 @@ import org.apache.camel.support.DefaultProducer;
import org.apache.camel.util.ObjectHelper;
import static org.apache.camel.component.micrometer.MicrometerConstants.CAMEL_CONTEXT_TAG;
+import static org.apache.camel.component.micrometer.MicrometerConstants.HEADER_METRIC_DESCRIPTION;
import static org.apache.camel.component.micrometer.MicrometerConstants.HEADER_METRIC_NAME;
import static org.apache.camel.component.micrometer.MicrometerConstants.HEADER_METRIC_TAGS;
import static org.apache.camel.component.micrometer.MicrometerConstants.HEADER_PREFIX;
@@ -52,6 +53,8 @@ public abstract class AbstractMicrometerProducer<T extends Meter> extends Defaul
Message in = exchange.getIn();
String defaultMetricsName = simple(exchange, getEndpoint().getMetricsName(), String.class);
String finalMetricsName = getStringHeader(in, HEADER_METRIC_NAME, defaultMetricsName);
+ String defaultMetricsDescription = simple(exchange, getEndpoint().getMetricsDescription(), String.class);
+ String finalMetricsDescription = getStringHeader(in, HEADER_METRIC_DESCRIPTION, defaultMetricsDescription);
Iterable<Tag> defaultTags = getEndpoint().getTags();
Iterable<Tag> headerTags = getTagHeader(in, HEADER_METRIC_TAGS, Tags.empty());
Iterable<Tag> finalTags = Tags.concat(defaultTags, headerTags).stream()
@@ -62,7 +65,7 @@ public abstract class AbstractMicrometerProducer<T extends Meter> extends Defaul
.and(Tags.of(
CAMEL_CONTEXT_TAG, getEndpoint().getCamelContext().getName()));
try {
- doProcess(exchange, finalMetricsName, finalTags);
+ doProcess(exchange, finalMetricsName, finalMetricsDescription, finalTags);
} catch (Exception e) {
exchange.setException(e);
} finally {
@@ -70,15 +73,15 @@ public abstract class AbstractMicrometerProducer<T extends Meter> extends Defaul
}
}
- protected abstract Function<MeterRegistry, T> registrar(String name, Iterable<Tag> tags);
+ protected abstract Function<MeterRegistry, T> registrar(String name, String description, Iterable<Tag> tags);
- protected void doProcess(Exchange exchange, String name, Iterable<Tag> tags) {
- doProcess(exchange, getEndpoint(), getOrRegisterMeter(name, tags));
+ protected void doProcess(Exchange exchange, String name, String description, Iterable<Tag> tags) {
+ doProcess(exchange, getEndpoint(), getOrRegisterMeter(name, description, tags));
}
- protected T getOrRegisterMeter(String name, Iterable<Tag> tags) {
+ protected T getOrRegisterMeter(String name, String description, Iterable<Tag> tags) {
MeterRegistry registry = getEndpoint().getRegistry();
- return registrar(name, tags).apply(registry);
+ return registrar(name, description, tags).apply(registry);
}
protected abstract void doProcess(Exchange exchange, MicrometerEndpoint endpoint, T meter);
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/CounterProducer.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/CounterProducer.java
index ec1e3902f33..c50173042ff 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/CounterProducer.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/CounterProducer.java
@@ -34,8 +34,8 @@ public class CounterProducer extends AbstractMicrometerProducer<Counter> {
}
@Override
- protected Function<MeterRegistry, Counter> registrar(String name, Iterable<Tag> tags) {
- return meterRegistry -> meterRegistry.counter(name, tags);
+ protected Function<MeterRegistry, Counter> registrar(String name, String description, Iterable<Tag> tags) {
+ return meterRegistry -> Counter.builder(name).description(description).tags(tags).register(meterRegistry);
}
@Override
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/DistributionSummaryProducer.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/DistributionSummaryProducer.java
index 830f1009870..a06019bfd76 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/DistributionSummaryProducer.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/DistributionSummaryProducer.java
@@ -32,8 +32,8 @@ public class DistributionSummaryProducer extends AbstractMicrometerProducer<Dist
}
@Override
- protected Function<MeterRegistry, DistributionSummary> registrar(String name, Iterable<Tag> tags) {
- return meterRegistry -> meterRegistry.summary(name, tags);
+ protected Function<MeterRegistry, DistributionSummary> registrar(String name, String description, Iterable<Tag> tags) {
+ return meterRegistry -> DistributionSummary.builder(name).description(description).tags(tags).register(meterRegistry);
}
@Override
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java
index ad20e5a530b..d67a8bf8613 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java
@@ -27,6 +27,7 @@ import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.LongTaskTimer;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.Timer;
import org.apache.camel.impl.console.AbstractDevConsole;
import org.apache.camel.spi.annotations.DevConsole;
@@ -103,7 +104,8 @@ public class MicrometerConsole extends AbstractDevConsole {
long mean = Math.round(t.mean(TimeUnit.MILLISECONDS));
long max = Math.round(t.max(TimeUnit.MILLISECONDS));
long duration = Math.round(t.duration(TimeUnit.MILLISECONDS));
- sb.append(String.format(" %s: %d (duration: %dms mean: %dms max: %dms)\n", name, tasks, duration, mean, max));
+ sb.append(
+ String.format(" %s: %d (duration: %dms mean: %dms max: %dms)\n", name, tasks, duration, mean, max));
}
}
i = 0;
@@ -142,6 +144,10 @@ public class MicrometerConsole extends AbstractDevConsole {
i++;
JsonObject jo = new JsonObject();
jo.put("name", c.getId().getName());
+ if (c.getId().getDescription() != null) {
+ jo.put("description", c.getId().getDescription());
+ }
+ addTags(m, jo);
// strip decimal if counter is integer based
String cnt = String.valueOf(c.count());
if (cnt.endsWith(".0") || cnt.endsWith(",0")) {
@@ -165,6 +171,10 @@ public class MicrometerConsole extends AbstractDevConsole {
i++;
JsonObject jo = new JsonObject();
jo.put("name", g.getId().getName());
+ if (g.getId().getDescription() != null) {
+ jo.put("description", g.getId().getDescription());
+ }
+ addTags(m, jo);
jo.put("value", g.value());
list.add(jo);
}
@@ -180,6 +190,10 @@ public class MicrometerConsole extends AbstractDevConsole {
i++;
JsonObject jo = new JsonObject();
jo.put("name", t.getId().getName());
+ if (t.getId().getDescription() != null) {
+ jo.put("description", t.getId().getDescription());
+ }
+ addTags(m, jo);
jo.put("count", t.count());
jo.put("mean", Math.round(t.mean(TimeUnit.MILLISECONDS)));
jo.put("max", Math.round(t.max(TimeUnit.MILLISECONDS)));
@@ -198,6 +212,10 @@ public class MicrometerConsole extends AbstractDevConsole {
i++;
JsonObject jo = new JsonObject();
jo.put("name", t.getId().getName());
+ if (t.getId().getDescription() != null) {
+ jo.put("description", t.getId().getDescription());
+ }
+ addTags(m, jo);
jo.put("activeTasks", t.activeTasks());
jo.put("mean", Math.round(t.mean(TimeUnit.MILLISECONDS)));
jo.put("max", Math.round(t.max(TimeUnit.MILLISECONDS)));
@@ -216,6 +234,10 @@ public class MicrometerConsole extends AbstractDevConsole {
i++;
JsonObject jo = new JsonObject();
jo.put("name", d.getId().getName());
+ if (d.getId().getDescription() != null) {
+ jo.put("description", d.getId().getDescription());
+ }
+ addTags(m, jo);
jo.put("count", d.count());
jo.put("mean", d.mean());
jo.put("max", d.max());
@@ -227,6 +249,19 @@ public class MicrometerConsole extends AbstractDevConsole {
return root;
}
+ private void addTags(Meter m, JsonObject root) {
+ List<JsonObject> list = new ArrayList<>();
+ for (Tag t : m.getId().getTags()) {
+ JsonObject jo = new JsonObject();
+ jo.put("key", t.getKey());
+ jo.put("value", t.getValue());
+ list.add(jo);
+ }
+ if (!list.isEmpty()) {
+ root.put("tags", list);
+ }
+ }
+
private MeterRegistry lookupMeterRegistry() {
return MicrometerUtils.getOrCreateMeterRegistry(getCamelContext().getRegistry(),
MicrometerConstants.METRICS_REGISTRY_NAME);
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConstants.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConstants.java
index 175db436bcc..6efcc9e796a 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConstants.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConstants.java
@@ -35,6 +35,8 @@ public final class MicrometerConstants {
public static final String HEADER_COUNTER_INCREMENT = HEADER_PREFIX + "CounterIncrement";
@Metadata(description = "Override name value in URI", javaType = "String")
public static final String HEADER_METRIC_NAME = HEADER_PREFIX + "Name";
+ @Metadata(description = "Override description value in URI", javaType = "String")
+ public static final String HEADER_METRIC_DESCRIPTION = HEADER_PREFIX + "Description";
@Metadata(description = "To augment meter tags defined as URI parameters", javaType = "java.lang.Iterable<Tag>")
public static final String HEADER_METRIC_TAGS = HEADER_PREFIX + "Tags";
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java
index 1086d7166e6..b9b9f4e7325 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java
@@ -47,6 +47,8 @@ public class MicrometerEndpoint extends DefaultEndpoint {
@UriPath(description = "Name of metrics")
@Metadata(required = true)
protected final String metricsName;
+ @UriParam(description = "Description of metrics")
+ protected String metricsDescription;
@UriPath(description = "Tags of metrics")
protected final Iterable<Tag> tags;
@UriParam(description = "Action expression when using timer type", enums = "start,stop")
@@ -101,6 +103,14 @@ public class MicrometerEndpoint extends DefaultEndpoint {
return metricsType;
}
+ public String getMetricsDescription() {
+ return metricsDescription;
+ }
+
+ public void setMetricsDescription(String metricsDescription) {
+ this.metricsDescription = metricsDescription;
+ }
+
public String getAction() {
return action;
}
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/TimerProducer.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/TimerProducer.java
index cc7d05640fd..eb6702286fb 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/TimerProducer.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/TimerProducer.java
@@ -33,8 +33,8 @@ public class TimerProducer extends AbstractMicrometerProducer<Timer> {
}
@Override
- protected Function<MeterRegistry, Timer> registrar(String name, Iterable<Tag> tags) {
- return meterRegistry -> meterRegistry.timer(name, tags);
+ protected Function<MeterRegistry, Timer> registrar(String name, String description, Iterable<Tag> tags) {
+ return meterRegistry -> Timer.builder(name).description(description).tags(tags).register(meterRegistry);
}
@Override
@@ -46,7 +46,7 @@ public class TimerProducer extends AbstractMicrometerProducer<Timer> {
}
@Override
- protected void doProcess(Exchange exchange, String metricsName, Iterable<Tag> tags) {
+ protected void doProcess(Exchange exchange, String metricsName, String metricsDescription, Iterable<Tag> tags) {
MeterRegistry registry = getEndpoint().getRegistry();
Message in = exchange.getIn();
MicrometerTimerAction action = simple(exchange, getEndpoint().getAction(), MicrometerTimerAction.class);
@@ -54,13 +54,13 @@ public class TimerProducer extends AbstractMicrometerProducer<Timer> {
if (finalAction == MicrometerTimerAction.start) {
handleStart(exchange, registry, metricsName);
} else if (finalAction == MicrometerTimerAction.stop) {
- handleStop(exchange, metricsName, tags);
+ handleStop(exchange, metricsName, metricsDescription, tags);
}
}
- private void handleStop(Exchange exchange, String metricsName, Iterable<Tag> tags) {
+ private void handleStop(Exchange exchange, String metricsName, String metricsDescription, Iterable<Tag> tags) {
if (getTimerSampleFromExchange(exchange, getPropertyName(metricsName)) != null) {
- doProcess(exchange, getEndpoint(), getOrRegisterMeter(metricsName, tags));
+ doProcess(exchange, getEndpoint(), getOrRegisterMeter(metricsName, metricsDescription, tags));
}
}
diff --git a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MetricComponentSpringTest.java b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MetricComponentSpringTest.java
deleted file mode 100644
index da57d0b79be..00000000000
--- a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MetricComponentSpringTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.component.micrometer;
-
-import io.micrometer.core.instrument.Counter;
-import io.micrometer.core.instrument.MeterRegistry;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTest;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.junit.jupiter.api.Test;
-import org.mockito.InOrder;
-import org.mockito.Mockito;
-import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import org.springframework.context.support.AbstractApplicationContext;
-
-import static org.apache.camel.component.micrometer.MicrometerConstants.METRICS_REGISTRY_NAME;
-import static org.mockito.ArgumentMatchers.anyIterable;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.when;
-
-@CamelSpringTest
-public class MetricComponentSpringTest extends CamelSpringTestSupport {
-
- @EndpointInject("mock:out")
- private MockEndpoint endpoint;
-
- @Produce("direct:in")
- private ProducerTemplate producer;
-
- @BindToRegistry(METRICS_REGISTRY_NAME)
- private MeterRegistry registry = Mockito.mock(MeterRegistry.class);
-
- @Override
- protected AbstractApplicationContext createApplicationContext() {
- return new AnnotationConfigApplicationContext();
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:in")
- .to("micrometer:counter:A?increment=512")
- .to("mock:out");
- }
- };
- }
-
- @Test
- public void testMetricsRegistryFromCamelRegistry() throws Exception {
- MeterRegistry mockRegistry = endpoint.getCamelContext().getRegistry()
- .lookupByNameAndType(MicrometerConstants.METRICS_REGISTRY_NAME, MeterRegistry.class);
- Counter mockCounter = Mockito.mock(Counter.class);
- InOrder inOrder = Mockito.inOrder(mockRegistry, mockCounter);
- when(mockRegistry.counter(eq("A"), anyIterable())).thenReturn(mockCounter);
- endpoint.expectedMessageCount(1);
- producer.sendBody(new Object());
- endpoint.assertIsSatisfied();
- inOrder.verify(mockRegistry, times(1)).counter(eq("A"), anyIterable());
- inOrder.verify(mockCounter, times(1)).increment(512D);
- inOrder.verifyNoMoreInteractions();
- }
-}