This is an automated email from the ASF dual-hosted git repository.
zrlw pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-integration-cases.git
The following commit(s) were added to refs/heads/main by this push:
new e378b049 Wait for dubbo_consumer_rt_milliseconds_avg to be registered
at dubbo-samples-test-13580 (#69)
e378b049 is described below
commit e378b049dd14f5213484a135577697f5473fa417
Author: zrlw <[email protected]>
AuthorDate: Fri Jun 27 14:49:26 2025 +0800
Wait for dubbo_consumer_rt_milliseconds_avg to be registered at
dubbo-samples-test-13580 (#69)
---
.../dubbo/samples/client/GreetingServiceIT.java | 25 ++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git
a/99-integration/dubbo-samples-test-13580/src/test/java/org/apache/dubbo/samples/client/GreetingServiceIT.java
b/99-integration/dubbo-samples-test-13580/src/test/java/org/apache/dubbo/samples/client/GreetingServiceIT.java
index 6fd75ccb..fe6e3328 100644
---
a/99-integration/dubbo-samples-test-13580/src/test/java/org/apache/dubbo/samples/client/GreetingServiceIT.java
+++
b/99-integration/dubbo-samples-test-13580/src/test/java/org/apache/dubbo/samples/client/GreetingServiceIT.java
@@ -17,6 +17,10 @@
package org.apache.dubbo.samples.client;
+import io.micrometer.prometheus.PrometheusMeterRegistry;
+import io.prometheus.client.Collector;
+import io.prometheus.client.CollectorRegistry;
+import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetricsConfig;
import org.apache.dubbo.config.ReferenceConfig;
@@ -27,6 +31,7 @@ import
org.apache.dubbo.metrics.collector.DefaultMetricsCollector;
import org.apache.dubbo.metrics.data.BaseStatComposite;
import org.apache.dubbo.metrics.data.RtStatComposite;
import org.apache.dubbo.metrics.model.container.LongContainer;
+import org.apache.dubbo.metrics.prometheus.PrometheusMetricsReporter;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.samples.api.GreetingsService;
@@ -40,11 +45,15 @@ import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
+import static org.awaitility.Awaitility.await;
+
public class GreetingServiceIT {
private static String zookeeperHost =
System.getProperty("zookeeper.address", "127.0.0.1");
+ @SuppressWarnings("unchecked")
@Test
public void test1() throws NoSuchMethodException,
InvocationTargetException, IllegalAccessException, NoSuchFieldException {
ApplicationConfig applicationConfig = new
ApplicationConfig("first-dubbo-consumer");
@@ -70,6 +79,19 @@ public class GreetingServiceIT {
message = greetingsService.echo2("hello");
Assertions.assertEquals("hello", message);
+ // wait for dubbo_consumer_rt_milliseconds_avg to be registered by
metric collector sync job thread.
+ ScopeBeanFactory scopeBeanFactory =
FrameworkModel.defaultModel().defaultApplication().getBeanFactory();
+ Object reporter =
scopeBeanFactory.getBean(PrometheusMetricsReporter.class);
+ Field prometheusRegistryField =
reporter.getClass().getDeclaredField("prometheusRegistry");
+ prometheusRegistryField.setAccessible(true);
+ PrometheusMeterRegistry prometheusRegistry = (PrometheusMeterRegistry)
prometheusRegistryField.get(reporter);
+ CollectorRegistry collectorRegistry =
prometheusRegistry.getPrometheusRegistry();
+ Field namesToCollectorsField =
collectorRegistry.getClass().getDeclaredField("namesToCollectors");
+ namesToCollectorsField.setAccessible(true);
+ Map<String, Collector> collector = (Map<String, Collector>)
namesToCollectorsField.get(collectorRegistry);
+ await().atMost(5, TimeUnit.SECONDS).untilAsserted(
+ () ->
Assertions.assertTrue(collector.containsKey("dubbo_consumer_rt_milliseconds_avg")));
+
for (int i = 0; i < 10; i++) {
String result = HttpUtil.get("http://127.0.0.1:22333/metrics");
Map<String, String> data = new HashMap<>();
@@ -82,13 +104,12 @@ public class GreetingServiceIT {
}
}
}
- // TODO sometimes there are no dubbo_consumer_rt_milliseconds_avg
in the result.
Assertions.assertEquals(2, data.size(), "FAIL result: " + result);
Assertions.assertTrue(Double.parseDouble(data.get("echo1")) > 0);
Assertions.assertTrue(Double.parseDouble(data.get("echo2")) > 0);
}
- DefaultMetricsCollector metricsCollector =
FrameworkModel.defaultModel().defaultApplication().getBeanFactory().getBean(DefaultMetricsCollector.class);
+ DefaultMetricsCollector metricsCollector =
scopeBeanFactory.getBean(DefaultMetricsCollector.class);
Method getStatsMethod =
CombMetricsCollector.class.getDeclaredMethod("getStats");
getStatsMethod.setAccessible(true);
BaseStatComposite stats = (BaseStatComposite)
getStatsMethod.invoke(metricsCollector);