You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2019/03/26 02:37:07 UTC

[incubator-skywalking] branch endpoint-group updated: Refactor for reduce string compare.

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

wusheng pushed a commit to branch endpoint-group
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git


The following commit(s) were added to refs/heads/endpoint-group by this push:
     new 49abf28  Refactor for reduce string compare.
49abf28 is described below

commit 49abf28f3a972085a8c46865a759ba5192d10b25
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Mon Mar 25 19:36:58 2019 -0700

    Refactor for reduce string compare.
---
 .../skywalking/apm/util/StringFormatGroup.java     | 24 +++++++++++++++++++---
 .../skywalking/apm/util/StringFormatGroupTest.java |  6 +++---
 .../server/receiver/mesh/EndpointNameFormater.java |  2 +-
 .../receiver/mesh/TelemetryDataDispatcher.java     |  7 ++++---
 4 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringFormatGroup.java b/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringFormatGroup.java
index 8c26de5..36d689b 100644
--- a/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringFormatGroup.java
+++ b/apm-commons/apm-util/src/main/java/org/apache/skywalking/apm/util/StringFormatGroup.java
@@ -54,13 +54,31 @@ public class StringFormatGroup {
      * @param string to be formatted
      * @return matched rule name, or original string.
      */
-    public String format(String string) {
+    public FormatResult format(String string) {
         for (PatternRule rule : rules) {
             if (rule.getPattern().matcher(string).matches()) {
-                return rule.getName();
+                return new FormatResult(true, rule.getName());
             }
         }
-        return string;
+        return new FormatResult(false, string);
+    }
+
+    public class FormatResult {
+        private boolean match;
+        private String name;
+
+        public FormatResult(boolean match, String name) {
+            this.match = match;
+            this.name = name;
+        }
+
+        public boolean isMatch() {
+            return match;
+        }
+
+        public String getName() {
+            return name;
+        }
     }
 
     private class PatternRule {
diff --git a/apm-commons/apm-util/src/test/java/org/apache/skywalking/apm/util/StringFormatGroupTest.java b/apm-commons/apm-util/src/test/java/org/apache/skywalking/apm/util/StringFormatGroupTest.java
index 1a4549a..4640220 100644
--- a/apm-commons/apm-util/src/test/java/org/apache/skywalking/apm/util/StringFormatGroupTest.java
+++ b/apm-commons/apm-util/src/test/java/org/apache/skywalking/apm/util/StringFormatGroupTest.java
@@ -30,11 +30,11 @@ public class StringFormatGroupTest {
     public void testMatch() {
         StringFormatGroup group = new StringFormatGroup();
         group.addRule("/name/*/add", "/name/.+/add");
-        Assert.assertEquals("/name/*/add", group.format("/name/test/add"));
+        Assert.assertEquals("/name/*/add", group.format("/name/test/add").getName());
 
         group = new StringFormatGroup();
         group.addRule("/name/*/add/{orderId}", "/name/.+/add/.*");
-        Assert.assertEquals("/name/*/add/{orderId}", group.format("/name/test/add/12323"));
+        Assert.assertEquals("/name/*/add/{orderId}", group.format("/name/test/add/12323").getName());
     }
 
     @Benchmark
@@ -45,7 +45,7 @@ public class StringFormatGroupTest {
         for (int i = 0; i < 100; i++) {
             group.addRule("/name/*/add/{orderId}" + "/" + 1, "/name/.+/add/.*" + "/abc");
         }
-        Assert.assertEquals("/name/*/add/{orderId}", group.format("/name/test/add/12323"));
+        Assert.assertEquals("/name/*/add/{orderId}", group.format("/name/test/add/12323").getName());
     }
 
     /**
diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/EndpointNameFormater.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/EndpointNameFormater.java
index f5456cd..22ac926 100644
--- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/EndpointNameFormater.java
+++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/EndpointNameFormater.java
@@ -50,7 +50,7 @@ public class EndpointNameFormater {
         });
     }
 
-    public static String format(String endpointName) {
+    public static StringFormatGroup.FormatResult format(String endpointName) {
         return ENDPOINT_FORMAT_RULE.format(endpointName);
     }
 }
diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java
index d70e4c0..eb4e38d 100644
--- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java
+++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java
@@ -21,6 +21,7 @@ package org.apache.skywalking.aop.server.receiver.mesh;
 import java.util.Objects;
 import org.apache.logging.log4j.util.Strings;
 import org.apache.skywalking.apm.network.servicemesh.*;
+import org.apache.skywalking.apm.util.StringFormatGroup;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.cache.*;
 import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
@@ -60,9 +61,9 @@ public class TelemetryDataDispatcher {
     }
 
     public static void preProcess(ServiceMeshMetric data) {
-        String format = EndpointNameFormater.format(data.getEndpoint());
-        if (!format.equals(data.getEndpoint())) {
-            data = data.toBuilder().setEndpoint(format).build();
+        StringFormatGroup.FormatResult formatResult = EndpointNameFormater.format(data.getEndpoint());
+        if (formatResult.isMatch()) {
+            data = data.toBuilder().setEndpoint(formatResult.getName()).build();
         }
 
         ServiceMeshMetricDataDecorator decorator = new ServiceMeshMetricDataDecorator(data);