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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new ce3d69e7c [SCB-2813]fix net meter not correct (#4093)
ce3d69e7c is described below

commit ce3d69e7c3020953845c0eb909b51d5445f5d733
Author: liubao68 <[email protected]>
AuthorDate: Tue Dec 5 20:13:48 2023 +0800

    [SCB-2813]fix net meter not correct (#4093)
---
 .../metrics/core/meter/os/net/InterfaceUsage.java  |  2 +-
 .../metrics/core/publish/PublishModelFactory.java  |  3 +-
 .../metrics/core/meter/os/TestNetMeter.java        | 33 +++++++++++++++++++++-
 3 files changed, 35 insertions(+), 3 deletions(-)

diff --git 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java
 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java
index e5b30fa73..b3d40a1bb 100644
--- 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java
+++ 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java
@@ -42,7 +42,7 @@ public class InterfaceUsage {
 
   public InterfaceUsage(MeterRegistry meterRegistry, String name, Tags tags, 
String interfaceName) {
     this.interfaceName = interfaceName;
-    tags = tags.and(Tag.of(INTERFACE, name));
+    tags = tags.and(Tag.of(INTERFACE, interfaceName));
 
     // recv/Bps
     receive = new NetStat(0);
diff --git 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java
 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java
index 5baa2917e..7fb9ad43c 100644
--- 
a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java
+++ 
b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java
@@ -66,7 +66,8 @@ public class PublishModelFactory {
 
     groupConfig.addGroup(OsMeter.OS_NAME,
         OsMeter.OS_TYPE,
-        new DefaultTagFinder(NetMeter.INTERFACE, true));
+        new DefaultTagFinder(NetMeter.INTERFACE, true),
+        new DefaultTagFinder(NetMeter.STATISTIC, true));
 
     groupConfig.addGroup(VertxMetersInitializer.VERTX_ENDPOINTS,
         VertxMetersInitializer.ENDPOINTS_TYPE,
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java
index c81aaba8d..721ca1062 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java
@@ -16,6 +16,9 @@
  */
 package org.apache.servicecomb.metrics.core.meter.os;
 
+import static org.apache.servicecomb.metrics.core.meter.os.OsMeter.OS_TYPE;
+import static org.apache.servicecomb.metrics.core.meter.os.OsMeter.OS_TYPE_NET;
+
 import java.io.File;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
@@ -23,7 +26,9 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.servicecomb.foundation.metrics.publish.DefaultTagFinder;
 import 
org.apache.servicecomb.foundation.metrics.publish.MeasurementGroupConfig;
+import org.apache.servicecomb.foundation.metrics.publish.MeasurementNode;
 import org.apache.servicecomb.foundation.metrics.publish.MeasurementTree;
 import org.apache.servicecomb.metrics.core.meter.os.net.InterfaceUsage;
 import org.junit.Test;
@@ -50,10 +55,12 @@ public class TestNetMeter {
       }
     };
     MeterRegistry meterRegistry = new SimpleMeterRegistry();
-    NetMeter netMeter = new NetMeter(meterRegistry, "net", Tags.empty());
+    NetMeter netMeter = new NetMeter(meterRegistry, "os", Tags.of(OS_TYPE, 
OS_TYPE_NET));
     list.remove(2);
     list.add("eth0: 1 1    0    0    0     0          0          1         1 1 
   1      0     0     0    0    0");
     netMeter.refreshNet(1);
+
+
     Map<String, InterfaceUsage> meterInterfaceInfoMap = 
netMeter.getInterfaceUsageMap();
     Assertions.assertTrue(meterInterfaceInfoMap.containsKey("eth0"));
 
@@ -79,6 +86,30 @@ public class TestNetMeter {
     Assertions.assertEquals(1L, eth0.getPacketsSend().getLastValue());
     Assertions.assertEquals(1, eth0.getPacketsSend().getRate(), 0.0);
     Assertions.assertEquals(9, eth0.getPacketsSend().getIndex());
+
+    // measurement tree test
+    MeasurementGroupConfig group = new MeasurementGroupConfig();
+    group.addGroup(OsMeter.OS_NAME,
+        OS_TYPE,
+        new DefaultTagFinder(NetMeter.INTERFACE, true),
+        new DefaultTagFinder(NetMeter.STATISTIC, true));
+
+    MeasurementTree tree = new MeasurementTree();
+    tree.from(meterRegistry.getMeters().iterator(), group);
+    MeasurementNode osNode = tree.findChild(OsMeter.OS_NAME);
+    MeasurementNode netNode = osNode.findChild(OS_TYPE_NET);
+    Assertions.assertEquals(1, netNode.getChildren().size());
+    for (MeasurementNode interfaceNode : netNode.getChildren().values()) {
+      double sendRate = 
interfaceNode.findChild(NetMeter.TAG_SEND.getValue()).summary();
+      double sendPacketsRate = 
interfaceNode.findChild(NetMeter.TAG_PACKETS_SEND.getValue()).summary();
+      double receiveRate = 
interfaceNode.findChild(NetMeter.TAG_RECEIVE.getValue()).summary();
+      double receivePacketsRate = 
interfaceNode.findChild(NetMeter.TAG_PACKETS_RECEIVE.getValue()).summary();
+      Assertions.assertEquals(1, sendRate, 0);
+      Assertions.assertEquals(1, sendPacketsRate, 0);
+      Assertions.assertEquals(1, receiveRate, 0);
+      Assertions.assertEquals(1, receivePacketsRate, 0);
+    }
+
   }
 
 

Reply via email to