This is an automated email from the ASF dual-hosted git repository.

songxiaosheng pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new c9f8ae90d9 Add test for metadata metrics (#12162)
c9f8ae90d9 is described below

commit c9f8ae90d9cd1bf51d39f616ebe4b2638ae9ee59
Author: namelessssssssssss 
<[email protected]>
AuthorDate: Tue Apr 25 19:15:03 2023 +0800

    Add test for metadata metrics (#12162)
    
    Co-authored-by: songxiaosheng <[email protected]>
---
 .../metadata/MetadataMetricsCollectorTest.java     | 78 +++++++++++++++++-----
 1 file changed, 61 insertions(+), 17 deletions(-)

diff --git 
a/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
 
b/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
index dd2662db64..1496d427e4 100644
--- 
a/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
+++ 
b/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
@@ -22,14 +22,13 @@ import org.apache.dubbo.metrics.event.MetricsDispatcher;
 import org.apache.dubbo.metrics.event.MetricsEventBus;
 import org.apache.dubbo.metrics.metadata.collector.MetadataMetricsCollector;
 import org.apache.dubbo.metrics.metadata.event.MetadataEvent;
+import org.apache.dubbo.metrics.model.TimePair;
 import org.apache.dubbo.metrics.model.key.MetricsKey;
 import org.apache.dubbo.metrics.model.key.MetricsKeyWrapper;
-import org.apache.dubbo.metrics.model.TimePair;
 import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
 import org.apache.dubbo.metrics.model.sample.MetricSample;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.FrameworkModel;
-
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -37,19 +36,20 @@ import org.junit.jupiter.api.Test;
 
 import java.util.List;
 import java.util.Map;
+import java.util.NoSuchElementException;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
 import static 
org.apache.dubbo.common.constants.MetricsConstants.TAG_APPLICATION_NAME;
-import static 
org.apache.dubbo.metrics.metadata.MetadataMetricsConstants.OP_TYPE_PUSH;
-import static 
org.apache.dubbo.metrics.metadata.MetadataMetricsConstants.OP_TYPE_STORE_PROVIDER_INTERFACE;
-import static 
org.apache.dubbo.metrics.metadata.MetadataMetricsConstants.OP_TYPE_SUBSCRIBE;
+import static org.apache.dubbo.metrics.metadata.MetadataMetricsConstants.*;
 
 
 class MetadataMetricsCollectorTest {
 
     private ApplicationModel applicationModel;
 
+    private MetadataMetricsCollector collector;
+
     @BeforeEach
     public void setup() {
         FrameworkModel frameworkModel = FrameworkModel.defaultModel();
@@ -58,7 +58,10 @@ class MetadataMetricsCollectorTest {
         config.setName("MockMetrics");
 
         applicationModel.getApplicationConfigManager().setApplication(config);
+        
applicationModel.getBeanFactory().getOrRegisterBean(MetricsDispatcher.class);
 
+        collector = 
applicationModel.getBeanFactory().getOrRegisterBean(MetadataMetricsCollector.class);
+        collector.setCollectEnabled(true);
     }
 
     @AfterEach
@@ -68,10 +71,7 @@ class MetadataMetricsCollectorTest {
 
     @Test
     void testPushMetrics() {
-
-        
applicationModel.getBeanFactory().getOrRegisterBean(MetricsDispatcher.class);
-        MetadataMetricsCollector collector = 
applicationModel.getBeanFactory().getOrRegisterBean(MetadataMetricsCollector.class);
-        collector.setCollectEnabled(true);
+//        MetadataMetricsCollector collector = getCollector();
 
         MetadataEvent pushEvent = MetadataEvent.toPushEvent(applicationModel);
         MetricsEventBus.post(pushEvent,
@@ -129,10 +129,7 @@ class MetadataMetricsCollectorTest {
 
     @Test
     void testSubscribeMetrics() {
-
-        
applicationModel.getBeanFactory().getOrRegisterBean(MetricsDispatcher.class);
-        MetadataMetricsCollector collector = 
applicationModel.getBeanFactory().getOrRegisterBean(MetadataMetricsCollector.class);
-        collector.setCollectEnabled(true);
+//        MetadataMetricsCollector collector = getCollector();
 
         MetadataEvent subscribeEvent = 
MetadataEvent.toSubscribeEvent(applicationModel);
         MetricsEventBus.post(subscribeEvent,
@@ -191,10 +188,7 @@ class MetadataMetricsCollectorTest {
 
     @Test
     void testStoreProviderMetadataMetrics() {
-
-        
applicationModel.getBeanFactory().getOrRegisterBean(MetricsDispatcher.class);
-        MetadataMetricsCollector collector = 
applicationModel.getBeanFactory().getOrRegisterBean(MetadataMetricsCollector.class);
-        collector.setCollectEnabled(true);
+//        MetadataMetricsCollector collector = getCollector();
 
         String serviceKey = "store.provider.test";
         MetadataEvent metadataEvent = 
MetadataEvent.toServiceSubscribeEvent(applicationModel, serviceKey);
@@ -252,4 +246,54 @@ class MetadataMetricsCollectorTest {
         Assertions.assertEquals(sampleMap.get(new 
MetricsKeyWrapper(MetricsKey.METRIC_RT_SUM, 
OP_TYPE_STORE_PROVIDER_INTERFACE).targetKey()), c1 + c2);
     }
 
+    @Test
+    void testMetadataPushNum() {
+
+        for (int i = 0; i < 10; i++) {
+            MetadataEvent event = MetadataEvent.toPushEvent(applicationModel);
+            if(i %2 ==0 ) {
+                MetricsEventBus.post(event,() -> true, r -> r);
+            }else {
+                MetricsEventBus.post(event,() -> false, r -> r);
+            }
+        }
+
+        List<MetricSample> samples = collector.collect();
+
+        GaugeMetricSample<?> totalNum = 
getSample(MetricsKey.METADATA_PUSH_METRIC_NUM.getName(), samples);
+        GaugeMetricSample<?> succeedNum = 
getSample(MetricsKey.METADATA_PUSH_METRIC_NUM_SUCCEED.getName(), samples);
+        GaugeMetricSample<?> failedNum = 
getSample(MetricsKey.METADATA_PUSH_METRIC_NUM_FAILED.getName(), samples);
+
+        Assertions.assertEquals(10,totalNum.applyAsLong());
+        Assertions.assertEquals(5,succeedNum.applyAsLong());
+        Assertions.assertEquals(5,failedNum.applyAsLong());
+    }
+
+    @Test
+    void testSubscribeSum(){
+
+        for (int i = 0; i < 10; i++) {
+            MetadataEvent event = 
MetadataEvent.toSubscribeEvent(applicationModel);
+            if(i %2 ==0 ) {
+                MetricsEventBus.post(event,() -> true, r -> r);
+            }else {
+                MetricsEventBus.post(event,() -> false, r -> r);
+            }
+        }
+
+        List<MetricSample> samples = collector.collect();
+
+        GaugeMetricSample<?> totalNum = 
getSample(MetricsKey.METADATA_SUBSCRIBE_METRIC_NUM.getName(), samples);
+        GaugeMetricSample<?> succeedNum = 
getSample(MetricsKey.METADATA_SUBSCRIBE_METRIC_NUM_SUCCEED.getName(), samples);
+        GaugeMetricSample<?> failedNum = 
getSample(MetricsKey.METADATA_SUBSCRIBE_METRIC_NUM_FAILED.getName(), samples);
+
+        Assertions.assertEquals(10,totalNum.applyAsLong());
+        Assertions.assertEquals(5,succeedNum.applyAsLong());
+        Assertions.assertEquals(5,failedNum.applyAsLong());
+    }
+
+    GaugeMetricSample<?> getSample(String name, List<MetricSample> samples) {
+        return (GaugeMetricSample<?>) samples.stream().filter(metricSample -> 
metricSample.getName().equals(name)).findFirst().orElseThrow(NoSuchElementException::new);
+    }
+
 }

Reply via email to