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);