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 2023/03/13 06:31:18 UTC
[camel] branch camel-3.x updated: Favor CompositeMeterRegistry instances in Camel registry before looking for MeterRegistry instances. (#9513)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.x by this push:
new 6e51d8c6879 Favor CompositeMeterRegistry instances in Camel registry before looking for MeterRegistry instances. (#9513)
6e51d8c6879 is described below
commit 6e51d8c6879b0f1d79606a3c86230548d490c2a1
Author: Adriano Machado <60...@users.noreply.github.com>
AuthorDate: Mon Mar 13 02:31:11 2023 -0400
Favor CompositeMeterRegistry instances in Camel registry before looking for MeterRegistry instances. (#9513)
Co-authored-by: Adriano Machado <ad...@redhat.com>
---
.../component/micrometer/MicrometerUtils.java | 27 ++++++++---
.../micrometer/MicrometerComponentTest.java | 53 +++++++++++++++++++++-
2 files changed, 72 insertions(+), 8 deletions(-)
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerUtils.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerUtils.java
index 84c62179918..3a43725818b 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerUtils.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerUtils.java
@@ -20,6 +20,7 @@ import java.util.Set;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.spi.Registry;
@@ -74,19 +75,31 @@ public final class MicrometerUtils {
}
public static MeterRegistry getMeterRegistryFromCamelRegistry(Registry camelRegistry, String registryName) {
- MeterRegistry registry = camelRegistry.lookupByNameAndType(registryName, MeterRegistry.class);
+ MeterRegistry registry = getMeterRegistryFromCamelRegistry(camelRegistry, registryName,
+ CompositeMeterRegistry.class);
if (registry != null) {
return registry;
- } else {
- Set<MeterRegistry> registries = camelRegistry.findByType(MeterRegistry.class);
- if (registries.size() == 1) {
- return registries.iterator().next();
- }
}
- return null;
+
+ return getMeterRegistryFromCamelRegistry(camelRegistry, registryName, MeterRegistry.class);
}
public static MeterRegistry createMeterRegistry() {
return new SimpleMeterRegistry();
}
+
+ private static MeterRegistry getMeterRegistryFromCamelRegistry(
+ Registry camelRegistry, String registryName,
+ Class<? extends MeterRegistry> registryType) {
+ MeterRegistry registry = camelRegistry.lookupByNameAndType(registryName, registryType);
+ if (registry != null) {
+ return registry;
+ } else {
+ Set<? extends MeterRegistry> registries = camelRegistry.findByType(registryType);
+ if (registries != null && registries.size() == 1) {
+ return registryType.cast(registries.iterator().next());
+ }
+ }
+ return null;
+ }
}
diff --git a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java
index db3a7f5003c..e26f78d0621 100644
--- a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java
+++ b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java
@@ -21,6 +21,8 @@ import java.util.Collections;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tags;
+import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
+import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.RuntimeCamelException;
@@ -37,6 +39,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.isA;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.times;
@@ -57,6 +60,9 @@ public class MicrometerComponentTest {
@Mock
private MeterRegistry metricRegistry;
+ @Mock
+ private CompositeMeterRegistry compositeMeterRegistry;
+
private InOrder inOrder;
private MicrometerComponent component;
@@ -110,36 +116,81 @@ public class MicrometerComponentTest {
@Test
public void testGetOrCreateMetricRegistryFoundInCamelRegistry() {
+ when(camelRegistry.lookupByNameAndType("name", CompositeMeterRegistry.class)).thenReturn(null);
+ when(camelRegistry.findByType(CompositeMeterRegistry.class)).thenReturn(null);
when(camelRegistry.lookupByNameAndType("name", MeterRegistry.class)).thenReturn(metricRegistry);
MeterRegistry result = MicrometerUtils.getOrCreateMeterRegistry(camelRegistry, "name");
assertThat(result, is(metricRegistry));
+ inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", CompositeMeterRegistry.class);
+ inOrder.verify(camelRegistry, times(1)).findByType(CompositeMeterRegistry.class);
inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", MeterRegistry.class);
inOrder.verifyNoMoreInteractions();
}
+ @Test
+ public void testGetOrCreateCompositeMetricRegistryFoundInCamelRegistry() {
+ when(camelRegistry.lookupByNameAndType("name", CompositeMeterRegistry.class))
+ .thenReturn(compositeMeterRegistry);
+ MeterRegistry result = MicrometerUtils.getOrCreateMeterRegistry(camelRegistry, "name");
+ assertThat(result, is(compositeMeterRegistry));
+ inOrder.verify(camelRegistry, times(1))
+ .lookupByNameAndType("name", CompositeMeterRegistry.class);
+ inOrder.verifyNoMoreInteractions();
+ }
+
@Test
public void testGetOrCreateMetricRegistryFoundInCamelRegistryByType() {
+ when(camelRegistry.lookupByNameAndType("name", CompositeMeterRegistry.class)).thenReturn(null);
+ when(camelRegistry.findByType(CompositeMeterRegistry.class)).thenReturn(Collections.singleton(null));
when(camelRegistry.lookupByNameAndType("name", MeterRegistry.class)).thenReturn(null);
when(camelRegistry.findByType(MeterRegistry.class)).thenReturn(Collections.singleton(metricRegistry));
MeterRegistry result = MicrometerUtils.getOrCreateMeterRegistry(camelRegistry, "name");
assertThat(result, is(metricRegistry));
+ inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", CompositeMeterRegistry.class);
+ inOrder.verify(camelRegistry, times(1)).findByType(CompositeMeterRegistry.class);
inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", MeterRegistry.class);
inOrder.verify(camelRegistry, times(1)).findByType(MeterRegistry.class);
inOrder.verifyNoMoreInteractions();
}
+ @Test
+ public void testGetOrCreateCompositeMetricRegistryFoundInCamelRegistryByType() {
+ when(camelRegistry.lookupByNameAndType("name", CompositeMeterRegistry.class)).thenReturn(null);
+ when(camelRegistry.findByType(CompositeMeterRegistry.class))
+ .thenReturn(Collections.singleton(compositeMeterRegistry));
+ MeterRegistry result = MicrometerUtils.getOrCreateMeterRegistry(camelRegistry, "name");
+ assertThat(result, is(compositeMeterRegistry));
+ inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", CompositeMeterRegistry.class);
+ inOrder.verify(camelRegistry, times(1)).findByType(CompositeMeterRegistry.class);
+ inOrder.verifyNoMoreInteractions();
+ }
+
@Test
public void testGetMetricRegistryFromCamelRegistry() {
+ when(camelRegistry.lookupByNameAndType("name", CompositeMeterRegistry.class)).thenReturn(null);
+ when(camelRegistry.findByType(CompositeMeterRegistry.class)).thenReturn(null);
when(camelRegistry.lookupByNameAndType("name", MeterRegistry.class)).thenReturn(metricRegistry);
MeterRegistry result = MicrometerUtils.getMeterRegistryFromCamelRegistry(camelRegistry, "name");
assertThat(result, is(metricRegistry));
+ inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", CompositeMeterRegistry.class);
+ inOrder.verify(camelRegistry, times(1)).findByType(CompositeMeterRegistry.class);
inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", MeterRegistry.class);
inOrder.verifyNoMoreInteractions();
}
+ @Test
+ public void testGetCompositeMetricRegistryFromCamelRegistry() {
+ when(camelRegistry.lookupByNameAndType("name", CompositeMeterRegistry.class))
+ .thenReturn(compositeMeterRegistry);
+ MeterRegistry result = MicrometerUtils.getMeterRegistryFromCamelRegistry(camelRegistry, "name");
+ assertThat(result, is(compositeMeterRegistry));
+ inOrder.verify(camelRegistry, times(1)).lookupByNameAndType("name", CompositeMeterRegistry.class);
+ inOrder.verifyNoMoreInteractions();
+ }
+
@Test
public void testCreateMetricRegistry() {
MeterRegistry registry = MicrometerUtils.createMeterRegistry();
- assertThat(registry, is(notNullValue()));
+ assertThat(registry, isA(SimpleMeterRegistry.class));
}
}