This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-agent-test-tool.git
The following commit(s) were added to refs/heads/master by this push:
new 1c0bef2 Support string operators `start with` and `end with` (#49)
1c0bef2 is described below
commit 1c0bef2dd1d828e07889302bea980b24900b0db5
Author: Stephen Ni <[email protected]>
AuthorDate: Sat Nov 19 14:57:04 2022 +0800
Support string operators `start with` and `end with` (#49)
---
.../tool/validator/assertor/ExpressOperator.java | 61 ++++++++++++++++
.../tool/validator/assertor/ExpressParser.java | 56 +++++++--------
...reetEqualAssertor.java => EndWithAssertor.java} | 8 +--
...tEqualAssertor.java => GreatEqualAssertor.java} | 4 +-
...etEqualAssertor.java => StartWithAssertor.java} | 8 +--
validator/src/test/resources/actualData.yaml | 83 +++++++++++++++++++++-
validator/src/test/resources/expectedData.yaml | 57 ++++++++++++++-
7 files changed, 235 insertions(+), 42 deletions(-)
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/ExpressOperator.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/ExpressOperator.java
new file mode 100644
index 0000000..66d2774
--- /dev/null
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/ExpressOperator.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.skywalking.plugin.test.agent.tool.validator.assertor;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum ExpressOperator {
+ NULL("null", false),
+ NOT_NULL("not null", false),
+ NOT_BLANK("not blank", false),
+ NOT_EQUALS("nq ",true),
+ EQUALS("eq ",true),
+ GREAT_THAN("gt ",true),
+ GREAT_EQUAL("ge ",true),
+ START_WITH("start with ",true),
+ END_WITH("end with ",true),
+ ;
+ private final String prefix;
+ private final boolean hasValue;
+
+ public static ExpressOperator parse(String express) {
+ if (express == null) {
+ return null;
+ }
+
+ String expressTrim = express.trim();
+ for (ExpressOperator operator : ExpressOperator.values()) {
+ if (expressTrim.startsWith(operator.getPrefix())) {
+ return operator;
+ }
+ }
+
+ return null;
+ }
+
+ public static String getExpectedValue(ExpressOperator operator, String
express) {
+ if (operator.hasValue) {
+ return express.substring(operator.prefix.length()).trim();
+ }
+ return null;
+ }
+}
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/ExpressParser.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/ExpressParser.java
index 40c105d..b22d002 100644
---
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/ExpressParser.java
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/ExpressParser.java
@@ -19,13 +19,15 @@ package
org.apache.skywalking.plugin.test.agent.tool.validator.assertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.ElementAssertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.EqualsAssertor;
+import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.EndWithAssertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.GreatThanAssertor;
-import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.GreetEqualAssertor;
+import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.GreatEqualAssertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.NoopAssertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.NotBlankAssertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.NotEqualsAssertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.NotNullAssertor;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.NullAssertor;
+import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element.StartWithAssertor;
public class ExpressParser {
public static ElementAssertor parse(String express) {
@@ -33,36 +35,34 @@ public class ExpressParser {
return new NoopAssertor();
}
- String expressTrim = express.trim();
- if (expressTrim.equals("not null")) {
- return new NotNullAssertor();
+ ExpressOperator expressOperator = ExpressOperator.parse(express);
+ if (expressOperator == null) {
+ return new EqualsAssertor(express);
}
- if (expressTrim.equals("not blank")) {
- return new NotBlankAssertor();
- }
-
- if (expressTrim.equals("null")) {
- return new NullAssertor();
- }
+ String expectedValue =
ExpressOperator.getExpectedValue(expressOperator, express);
- String[] expressSegment = expressTrim.split(" ");
- if (expressSegment.length == 1) {
- return new EqualsAssertor(expressSegment[0]);
- } else if (expressSegment.length == 2) {
- String exceptedValue = expressSegment[1];
- switch (expressSegment[0].trim()) {
- case "nq":
- return new NotEqualsAssertor(exceptedValue);
- case "eq":
- return new EqualsAssertor(exceptedValue);
- case "gt":
- return new GreatThanAssertor(exceptedValue);
- case "ge":
- return new GreetEqualAssertor(exceptedValue);
- }
+ switch (expressOperator) {
+ case NULL:
+ return new NullAssertor();
+ case NOT_NULL:
+ return new NotNullAssertor();
+ case NOT_BLANK:
+ return new NotBlankAssertor();
+ case EQUALS:
+ return new EqualsAssertor(expectedValue);
+ case NOT_EQUALS:
+ return new NotEqualsAssertor(expectedValue);
+ case GREAT_THAN:
+ return new GreatThanAssertor(expectedValue);
+ case GREAT_EQUAL:
+ return new GreatEqualAssertor(expectedValue);
+ case START_WITH:
+ return new StartWithAssertor(expectedValue);
+ case END_WITH:
+ return new EndWithAssertor(expectedValue);
+ default:
+ return new EqualsAssertor(express);
}
-
- return new EqualsAssertor(express);
}
}
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/EndWithAssertor.java
similarity index 79%
copy from
validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
copy to
validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/EndWithAssertor.java
index 0aae8c6..03b4934 100644
---
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/EndWithAssertor.java
@@ -20,15 +20,15 @@ package
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.exception.ValueAssertFailedException;
-public class GreetEqualAssertor extends ElementAssertor {
- public GreetEqualAssertor(String exceptedValue) {
+public class EndWithAssertor extends ElementAssertor {
+ public EndWithAssertor(String exceptedValue) {
super(exceptedValue);
}
@Override
public void assertValue(String desc, String actualValue) {
- if (Double.parseDouble(actualValue) <
Double.parseDouble(exceptedValue)) {
- throw new ValueAssertFailedException(desc, " ge " + exceptedValue,
actualValue);
+ if (actualValue == null || !actualValue.endsWith(exceptedValue)) {
+ throw new ValueAssertFailedException(desc, " end with " +
exceptedValue, actualValue);
}
}
}
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreatEqualAssertor.java
similarity index 92%
copy from
validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
copy to
validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreatEqualAssertor.java
index 0aae8c6..655fa06 100644
---
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreatEqualAssertor.java
@@ -20,8 +20,8 @@ package
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.exception.ValueAssertFailedException;
-public class GreetEqualAssertor extends ElementAssertor {
- public GreetEqualAssertor(String exceptedValue) {
+public class GreatEqualAssertor extends ElementAssertor {
+ public GreatEqualAssertor(String exceptedValue) {
super(exceptedValue);
}
diff --git
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/StartWithAssertor.java
similarity index 79%
rename from
validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
rename to
validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/StartWithAssertor.java
index 0aae8c6..d14fd1e 100644
---
a/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/GreetEqualAssertor.java
+++
b/validator/src/main/java/org/apache/skywalking/plugin/test/agent/tool/validator/assertor/element/StartWithAssertor.java
@@ -20,15 +20,15 @@ package
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.element;
import
org.apache.skywalking.plugin.test.agent.tool.validator.assertor.exception.ValueAssertFailedException;
-public class GreetEqualAssertor extends ElementAssertor {
- public GreetEqualAssertor(String exceptedValue) {
+public class StartWithAssertor extends ElementAssertor {
+ public StartWithAssertor(String exceptedValue) {
super(exceptedValue);
}
@Override
public void assertValue(String desc, String actualValue) {
- if (Double.parseDouble(actualValue) <
Double.parseDouble(exceptedValue)) {
- throw new ValueAssertFailedException(desc, " ge " + exceptedValue,
actualValue);
+ if (actualValue == null || !actualValue.startsWith(exceptedValue)) {
+ throw new ValueAssertFailedException(desc, " start with " +
exceptedValue, actualValue);
}
}
}
diff --git a/validator/src/test/resources/actualData.yaml
b/validator/src/test/resources/actualData.yaml
index fcc24ed..cb5deb3 100644
--- a/validator/src/test/resources/actualData.yaml
+++ b/validator/src/test/resources/actualData.yaml
@@ -90,7 +90,88 @@ segmentItems:
tags:
- {key: url, value:
'http://localhost:8080/jettyclient-case/case/jettyclient-case'}
- {key: http.method, value: GET}
-
+meterItems:
+- serviceName: dubbo-2.7.x-scenario
+ meterSize: 13
+ meters:
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: core_pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 200.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: queue_size}
+ - {name: pool_name, value: tomcat_execute_pool}
+ singleValue: 0.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: pool_size}
+ - {name: pool_name, value: tomcat_execute_pool}
+ singleValue: 10.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: max_pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 200.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: queue_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 0.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: largest_pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 2.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: active_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 0.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: task_count}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 2.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: active_size}
+ - {name: pool_name, value: tomcat_execute_pool}
+ singleValue: 0.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 2.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: core_pool_size}
+ - {name: pool_name, value: tomcat_execute_pool}
+ singleValue: 10.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: completed_task_count}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: 2.0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: max_pool_size}
+ - {name: pool_name, value: tomcat_execute_pool}
+ singleValue: 200.0
logItems:
- serviceName: foo
logSize: 2
diff --git a/validator/src/test/resources/expectedData.yaml
b/validator/src/test/resources/expectedData.yaml
index e3a4d69..8fa2f89 100644
--- a/validator/src/test/resources/expectedData.yaml
+++ b/validator/src/test/resources/expectedData.yaml
@@ -90,7 +90,58 @@ segmentItems:
tags:
- {key: url, value:
'http://localhost:8080/jettyclient-case/case/jettyclient-case'}
- {key: http.method, value: GET}
-
+meterItems:
+ - serviceName: dubbo-2.7.x-scenario
+ meterSize: ge 8
+ meters:
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: core_pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 1
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: max_pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 1
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: largest_pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 1
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: pool_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: queue_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: active_size}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: task_count}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 0
+ - meterId:
+ name: thread_pool
+ tags:
+ - {name: metric_type, value: completed_task_count}
+ - {name: pool_name, value: DubboServerHandler-20880}
+ singleValue: ge 0
logItems:
- serviceName: foo
logSize: 2
@@ -100,7 +151,7 @@ logItems:
body:
type: ''
content:
- text: "something text to log"
+ text: "start with something text"
tags:
data:
- key: foo
@@ -128,7 +179,7 @@ logItems:
body:
type: ''
content:
- yaml: "something yaml to log"
+ yaml: "end with to log"
traceContext: {}
tags: {}
layer: ''