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 <[email protected]>
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();
- }
-}