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 2900625 Support `start with` and `end with` (#47)
2900625 is described below
commit 2900625c6af6379fa16543e42478974de608f662
Author: Stephen Ni <[email protected]>
AuthorDate: Thu Nov 17 15:08:53 2022 +0800
Support `start with` and `end with` (#47)
* Introduce the enum ExpressOperator to refactor ExpressParser
* Support start with and end with operators
* Fix wrong spelling
---
.../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/expectedData.yaml | 4 +-
6 files changed, 101 insertions(+), 40 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..258d0e3
--- /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/expectedData.yaml
b/validator/src/test/resources/expectedData.yaml
index e3a4d69..9b08843 100644
--- a/validator/src/test/resources/expectedData.yaml
+++ b/validator/src/test/resources/expectedData.yaml
@@ -100,7 +100,7 @@ logItems:
body:
type: ''
content:
- text: "something text to log"
+ text: "start with something text"
tags:
data:
- key: foo
@@ -128,7 +128,7 @@ logItems:
body:
type: ''
content:
- yaml: "something yaml to log"
+ yaml: "end with to log"
traceContext: {}
tags: {}
layer: ''