This is an automated email from the ASF dual-hosted git repository.
xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 25fb2263f [ISSUE 4228] fixed generate mock data in multithreading
(#4229)
25fb2263f is described below
commit 25fb2263ff632a74ca43ce8975a501bb3daf857f
Author: 愿凌飞 <[email protected]>
AuthorDate: Fri Dec 2 17:26:52 2022 +0800
[ISSUE 4228] fixed generate mock data in multithreading (#4229)
Co-authored-by: xiaoyu <[email protected]>
---
.../plugin/mock/generator/ArrayGenerator.java | 28 +++-----
.../plugin/mock/generator/BoolGenerator.java | 4 +-
.../mock/generator/CurrentTimeGenerator.java | 23 +++----
.../plugin/mock/generator/EmailGenerator.java | 4 +-
.../plugin/mock/generator/EnStringGenerator.java | 16 ++---
.../plugin/mock/generator/ExpressionGenerator.java | 13 ++--
.../shenyu/plugin/mock/generator/Generator.java | 76 ++++++++++++----------
.../plugin/mock/generator/GeneratorFactory.java | 4 +-
.../plugin/mock/generator/PhoneGenerator.java | 4 +-
.../mock/generator/RandomDoubleGenerator.java | 25 +++----
.../plugin/mock/generator/RandomIntGenerator.java | 16 ++---
.../plugin/mock/generator/RangeDataGenerator.java | 17 ++---
.../plugin/mock/generator/ZhStringGenerator.java | 17 ++---
.../plugin/mock/generator/ArrayGeneratorTest.java | 9 +--
.../plugin/mock/generator/BoolGeneratorTest.java | 19 +++---
.../mock/generator/CurrentTimeGeneratorTest.java | 12 ++--
.../plugin/mock/generator/EmailGeneratorTest.java | 13 ++--
.../mock/generator/EnStringGeneratorTest.java | 13 ++--
.../mock/generator/ExpressionGeneratorTest.java | 45 ++++++-------
.../plugin/mock/generator/PhoneGeneratorTest.java | 19 +++---
.../mock/generator/RandomDoubleGeneratorTest.java | 18 +++--
.../mock/generator/RandomIntGeneratorTest.java | 17 ++---
.../mock/generator/RangeDataGeneratorTest.java | 23 ++++---
.../mock/generator/ZhStringGeneratorTest.java | 15 ++---
24 files changed, 195 insertions(+), 255 deletions(-)
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ArrayGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ArrayGenerator.java
index ac686eceb..923a5ed0b 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ArrayGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ArrayGenerator.java
@@ -28,43 +28,35 @@ import java.util.stream.IntStream;
*/
@Join
public class ArrayGenerator implements Generator<String> {
-
- private Integer length;
-
- private String repeatContent;
-
+
@Override
public String getName() {
return "array";
}
-
+
@Override
- public String generate() {
- String replaceContentCopy = repeatContent;
+ public String doGenerate(final List<String> params, final String rule) {
+ int length = Integer.parseInt(rule.substring(rule.lastIndexOf("|") +
1));
+
+ String replaceContentCopy = rule.substring(rule.indexOf("|") + 1,
rule.lastIndexOf("|"));
return IntStream.rangeClosed(0, length - 1)
.mapToObj(i -> GeneratorFactory.dealRule(replaceContentCopy))
.collect(Collectors.joining(","));
}
-
+
@Override
public int getParamSize() {
return 0;
}
-
- @Override
- public void initParam(final List<String> params, final String rule) {
- length = Integer.parseInt(rule.substring(rule.lastIndexOf("|") + 1));
- repeatContent = rule.substring(rule.indexOf("|") + 1,
rule.lastIndexOf("|"));
- }
-
+
@Override
public boolean match(final String rule) {
return rule.matches("^array\\|.+\\|\\d+$");
}
-
+
@Override
public String[] getPrefixAndSuffix() {
return new String[]{"[", "]"};
}
-
+
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/BoolGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/BoolGenerator.java
index 5149e9f05..3d3618911 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/BoolGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/BoolGenerator.java
@@ -20,6 +20,8 @@ package org.apache.shenyu.plugin.mock.generator;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
+import java.util.List;
+
/**
* Boolean Generator.
*/
@@ -32,7 +34,7 @@ public class BoolGenerator implements Generator<Boolean> {
}
@Override
- public Boolean generate() {
+ public Boolean doGenerate(final List<String> params, final String rule) {
return MockUtil.bool();
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGenerator.java
index bba44f180..df0418725 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGenerator.java
@@ -28,35 +28,30 @@ import java.util.List;
@Join
public class CurrentTimeGenerator implements Generator<String> {
- private String format;
-
@Override
public String getName() {
return "current";
}
-
+
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
+ String format = null;
+ if (params.size() >= 1) {
+ format = params.get(0);
+ }
return MockUtil.current(format);
}
-
+
@Override
public int getParamSize() {
return 0;
}
-
- @Override
- public void initParam(final List<String> params, final String rule) {
- if (params.size() >= 1) {
- format = params.get(0);
- }
- }
-
+
@Override
public boolean match(final String rule) {
return rule.matches("^current(\\|.+)?");
}
-
+
@Override
public String[] getPrefixAndSuffix() {
return new String[]{"\"", "\""};
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EmailGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EmailGenerator.java
index 4e3ea7513..2d981843b 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EmailGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EmailGenerator.java
@@ -20,6 +20,8 @@ package org.apache.shenyu.plugin.mock.generator;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
+import java.util.List;
+
/**
* Random email address generator.
*/
@@ -32,7 +34,7 @@ public class EmailGenerator implements Generator<String> {
}
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
return MockUtil.email();
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EnStringGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EnStringGenerator.java
index 1dc7bcdab..2c47b3eca 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EnStringGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/EnStringGenerator.java
@@ -28,17 +28,16 @@ import java.util.List;
@Join
public class EnStringGenerator implements Generator<String> {
- private int min;
-
- private int max;
-
@Override
public String getName() {
return "zh";
}
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
+ String[] range = params.get(0).split("-");
+ int min = Integer.parseInt(range[0]);
+ int max = Integer.parseInt(range[1]);
return MockUtil.en(min, max);
}
@@ -47,13 +46,6 @@ public class EnStringGenerator implements Generator<String> {
return 1;
}
- @Override
- public void initParam(final List<String> params, final String rule) {
- String[] range = params.get(0).split("-");
- min = Integer.parseInt(range[0]);
- max = Integer.parseInt(range[1]);
- }
-
@Override
public boolean match(final String rule) {
return rule.matches("^en\\|\\d+-\\d+$");
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ExpressionGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ExpressionGenerator.java
index 8cdcc5364..9dc00d02e 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ExpressionGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ExpressionGenerator.java
@@ -38,16 +38,18 @@ public class ExpressionGenerator implements
Generator<String> {
private static final EvaluationContext CONTEXT = initContext();
- private String expression;
-
@Override
public String getName() {
return "expression";
}
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
+
+ String expression = params.get(0);
+
Object val = PARSER.parseExpression(expression).getValue(CONTEXT);
+
if (val instanceof MockUtil.FormatDouble) {
return val.toString();
}
@@ -59,11 +61,6 @@ public class ExpressionGenerator implements
Generator<String> {
return 1;
}
- @Override
- public void initParam(final List<String> params, final String rule) {
- expression = params.get(0);
- }
-
@Override
public boolean match(final String rule) {
return rule.matches("^expression\\|.+");
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/Generator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/Generator.java
index 53c38d988..bc60d14d0 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/Generator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/Generator.java
@@ -29,55 +29,41 @@ import java.util.stream.Collectors;
*/
@SPI
public interface Generator<T> {
-
+
/**
* rule name.
*
* @return name
*/
String getName();
-
+
+ /**
+ * generate mock data.
+ * @param rule rule
+ * @return mock data
+ */
+ default T generate(String rule) {
+ List<String> params = extractParams(rule);
+ return doGenerate(params, rule);
+ }
+
/**
* generate mock data.
*
- * @return random data
+ * @param params params
+ * @param rule rule
+ * @return mock data
*/
- T generate();
-
+ T doGenerate(List<String> params, String rule);
+
/**
* get size of rule params.
*
* @return params size
*/
int getParamSize();
-
- /**
- * init generator.
- *
- * @param rule rule
- */
- default void parseRule(final String rule) {
- List<String> params = new ArrayList<>();
- String[] split = rule.split("(?<!\\\\)\\|");
- if (split.length >= getParamSize() + 1) {
- params.addAll(Arrays.stream(split)
- .map(p -> p.replaceAll("\\\\\\|", "|"))
- .skip(1)
- .collect(Collectors.toList()));
- }
- initParam(params, rule);
- }
-
- /**
- * param from rule.
- *
- * @param params rule params.
- * @param rule source rule content
- */
- default void initParam(List<String> params, String rule) {
-
- }
-
+
+
/**
* Determine whether the rule meets the format requirements.
*
@@ -85,8 +71,8 @@ public interface Generator<T> {
* @return if match return true.
*/
boolean match(String rule);
-
-
+
+
/**
* return prefix and suffix for generate data.
*
@@ -95,5 +81,23 @@ public interface Generator<T> {
default String[] getPrefixAndSuffix() {
return new String[]{"", ""};
}
-
+
+ /**
+ * extract params from rule.
+ *
+ * @param rule rule
+ * @return params
+ */
+ default List<String> extractParams(final String rule) {
+ List<String> params = new ArrayList<>();
+ String[] split = rule.split("(?<!\\\\)\\|");
+ if (split.length >= getParamSize() + 1) {
+ params.addAll(Arrays.stream(split)
+ .map(p -> p.replaceAll("\\\\\\|", "|"))
+ .skip(1)
+ .collect(Collectors.toList()));
+ }
+ return params;
+ }
+
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/GeneratorFactory.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/GeneratorFactory.java
index 45154d9b2..69a2221ce 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/GeneratorFactory.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/GeneratorFactory.java
@@ -78,8 +78,7 @@ public final class GeneratorFactory {
String[] prefixAndSuffix = generator.getPrefixAndSuffix();
try {
- generator.parseRule(ruleContent);
- Object generateData = generator.generate();
+ Object generateData = generator.generate(ruleContent);
return String.join("", prefixAndSuffix[0],
generateData.toString(), prefixAndSuffix[1]);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
@@ -128,4 +127,5 @@ public final class GeneratorFactory {
}
return null;
}
+
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/PhoneGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/PhoneGenerator.java
index 4edcd1f30..e6d00dc75 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/PhoneGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/PhoneGenerator.java
@@ -20,6 +20,8 @@ package org.apache.shenyu.plugin.mock.generator;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
+import java.util.List;
+
/**
* 11-digit mobile number generator.
*/
@@ -32,7 +34,7 @@ public class PhoneGenerator implements Generator<String> {
}
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
return MockUtil.phone();
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGenerator.java
index 82e4fe6b5..6f0d643f9 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGenerator.java
@@ -29,19 +29,20 @@ import java.util.Objects;
@Join
public class RandomDoubleGenerator implements Generator<String> {
- private Double min;
-
- private Double max;
-
- private String format;
-
@Override
public String getName() {
return "double";
}
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
+ String[] range = params.get(0).split("-");
+ double min = Double.parseDouble(range[0]);
+ double max = Double.parseDouble(range[1]);
+ String format = null;
+ if (params.size() == 2) {
+ format = Objects.equals(params.get(1), "") ? null : params.get(1);
+ }
return MockUtil.randomDouble(min, max, format).toString();
}
@@ -50,16 +51,6 @@ public class RandomDoubleGenerator implements
Generator<String> {
return 1;
}
- @Override
- public void initParam(final List<String> params, final String rule) {
- String[] range = params.get(0).split("-");
- min = Double.parseDouble(range[0]);
- max = Double.parseDouble(range[1]);
- if (params.size() == 2) {
- format = Objects.equals(params.get(1), "") ? null : params.get(1);
- }
- }
-
@Override
public boolean match(final String rule) {
return rule.matches("^double\\|\\d+(?:\\.\\d+)?-\\d+(?:\\.\\d+)?.*");
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomIntGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomIntGenerator.java
index d48502c42..a192b5588 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomIntGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RandomIntGenerator.java
@@ -28,17 +28,16 @@ import java.util.List;
@Join
public class RandomIntGenerator implements Generator<Integer> {
- private int min;
-
- private int max;
-
@Override
public String getName() {
return "int";
}
@Override
- public Integer generate() {
+ public Integer doGenerate(final List<String> params, final String rule) {
+ String[] range = params.get(0).split("-");
+ int min = Integer.parseInt(range[0]);
+ int max = Integer.parseInt(range[1]);
return MockUtil.randomInt(min, max);
}
@@ -47,13 +46,6 @@ public class RandomIntGenerator implements
Generator<Integer> {
return 1;
}
- @Override
- public void initParam(final List<String> params, final String rule) {
- String[] range = params.get(0).split("-");
- min = Integer.parseInt(range[0]);
- max = Integer.parseInt(range[1]);
- }
-
@Override
public boolean match(final String rule) {
return rule.matches("^int\\|\\d+-\\d+$");
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RangeDataGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RangeDataGenerator.java
index 60cbbbb09..98ee2fdb7 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RangeDataGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/RangeDataGenerator.java
@@ -29,15 +29,18 @@ import java.util.List;
@Join
public class RangeDataGenerator implements Generator<String> {
- private String[] data;
-
@Override
public String getName() {
return "list";
}
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
+ String rangeData = params.get(0).replaceAll("\\[(.+)]", "$1");
+ String[] data = Arrays.stream(rangeData.split("(?<!\\\\),"))
+ .map(_data -> _data.replace("\\,", ","))
+ .toArray(String[]::new);
+
return MockUtil.oneOf(data).toString();
}
@@ -46,14 +49,6 @@ public class RangeDataGenerator implements Generator<String>
{
return 0;
}
- @Override
- public void initParam(final List<String> params, final String rule) {
- String rangeData = params.get(0).replaceAll("\\[(.+)]", "$1");
- data = Arrays.stream(rangeData.split("(?<!\\\\),"))
- .map(data -> data.replace("\\,", ","))
- .toArray(String[]::new);
- }
-
@Override
public boolean match(final String rule) {
boolean matches = rule.matches("^list\\|\\[.+]$");
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ZhStringGenerator.java
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ZhStringGenerator.java
index 9f6e00668..9f19e512a 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ZhStringGenerator.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/generator/ZhStringGenerator.java
@@ -28,17 +28,17 @@ import java.util.List;
@Join
public class ZhStringGenerator implements Generator<String> {
- private int min;
-
- private int max;
-
@Override
public String getName() {
return "zh";
}
@Override
- public String generate() {
+ public String doGenerate(final List<String> params, final String rule) {
+ String[] range = params.get(0).split("-");
+ int min = Integer.parseInt(range[0]);
+ int max = Integer.parseInt(range[1]);
+
return MockUtil.zh(min, max);
}
@@ -47,13 +47,6 @@ public class ZhStringGenerator implements Generator<String> {
return 1;
}
- @Override
- public void initParam(final List<String> params, final String rule) {
- String[] range = params.get(0).split("-");
- min = Integer.parseInt(range[0]);
- max = Integer.parseInt(range[1]);
- }
-
@Override
public boolean match(final String rule) {
return rule.matches("^zh\\|\\d+-\\d+$");
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ArrayGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ArrayGeneratorTest.java
index 451510ccb..6f75ab0b8 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ArrayGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ArrayGeneratorTest.java
@@ -32,19 +32,16 @@ public final class ArrayGeneratorTest {
@Test
public void testGenerate() {
- arrayGenerator.parseRule("array|\"test\"|3");
- String generate = arrayGenerator.generate();
+ String generate = arrayGenerator.generate("array|\"test\"|3");
assertEquals("\"test\",\"test\",\"test\"", generate);
}
@Test
public void testNestRuleGenerate() {
- arrayGenerator.parseRule("array|{\"ints\":${array|10|3}}|3");
- String generate = arrayGenerator.generate();
+ String generate =
arrayGenerator.generate("array|{\"ints\":${array|10|3}}|3");
assertEquals("{\"ints\":[10,10,10]},{\"ints\":[10,10,10]},{\"ints\":[10,10,10]}",
generate);
- arrayGenerator.parseRule("array|{\"int\":${expression|#oneOf(10)}}|3");
- generate = arrayGenerator.generate();
+ generate =
arrayGenerator.generate("array|{\"int\":${expression|#oneOf(10)}}|3");
assertEquals("{\"int\":10},{\"int\":10},{\"int\":10}", generate);
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/BoolGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/BoolGeneratorTest.java
index 4da962ceb..6ca2816f0 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/BoolGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/BoolGeneratorTest.java
@@ -17,31 +17,30 @@
package org.apache.shenyu.plugin.mock.generator;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
/**
* The test case for {@link BoolGenerator}.
*/
public final class BoolGeneratorTest {
-
+
private final BoolGenerator boolGenerator = new BoolGenerator();
-
+
@Test
public void testGenerate() {
- boolGenerator.parseRule("bool");
- Boolean generate = boolGenerator.generate();
+ Boolean generate = boolGenerator.generate("bool");
Assertions.assertNotNull(generate);
-
+
}
-
+
@Test
public void testMatch() {
assertTrue(boolGenerator.match("bool"));
assertFalse(boolGenerator.match("boolean"));
-
+
}
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGeneratorTest.java
index 0d0e8fdb7..ebe0fbb26 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/CurrentTimeGeneratorTest.java
@@ -24,17 +24,15 @@ import org.junit.jupiter.api.Test;
* The test case for {@link CurrentTimeGenerator}.
*/
public final class CurrentTimeGeneratorTest {
-
+
private final CurrentTimeGenerator generator = new CurrentTimeGenerator();
-
+
@Test
public void testGenerate() {
- generator.parseRule("${current}");
-
Assertions.assertTrue(generator.generate().matches("^\\d{4}(-\\d{2}){2}
\\d{2}(:\\d{2}){2}$"));
- generator.parseRule("current|YYYY-MM-dd");
-
Assertions.assertTrue(generator.generate().matches("^\\d{4}(-\\d{2}){2}$"));
+
Assertions.assertTrue(generator.generate("current").matches("^\\d{4}(-\\d{2}){2}
\\d{2}(:\\d{2}){2}$"));
+
Assertions.assertTrue(generator.generate("current|YYYY-MM-dd").matches("^\\d{4}(-\\d{2}){2}$"));
}
-
+
@Test
public void testMatch() {
Assertions.assertTrue(generator.match("current"));
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EmailGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EmailGeneratorTest.java
index 7e299bb76..ee22fcb22 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EmailGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EmailGeneratorTest.java
@@ -17,26 +17,25 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.junit.jupiter.api.Test;
+
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
/**
* The test case for {@link EmailGenerator}.
*/
public final class EmailGeneratorTest {
-
+
private final EmailGenerator generator = new EmailGenerator();
-
+
@Test
public void testGenerate() {
- generator.parseRule("email");
- String email = generator.generate();
+ String email = generator.generate("email");
assertNotNull(email);
}
-
+
@Test
public void match() {
assertTrue(generator.match("email"));
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EnStringGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EnStringGeneratorTest.java
index cad289806..04dd738eb 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EnStringGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/EnStringGeneratorTest.java
@@ -17,27 +17,26 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.junit.jupiter.api.Test;
+
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
/**
* The test case for {@link EnStringGenerator}.
*/
public final class EnStringGeneratorTest {
-
+
private final EnStringGenerator generator = new EnStringGenerator();
-
+
@Test
public void testGenerate() {
int max = 10;
int min = 5;
- generator.parseRule("en|" + min + "-" + max);
- String enString = generator.generate();
+ String enString = generator.generate("en|" + min + "-" + max);
assertTrue(enString.matches("[a-zA-Z]{" + min + "," + max + "}"));
}
-
+
@Test
public void testMatch() {
assertTrue(generator.match("en|10-12"));
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ExpressionGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ExpressionGeneratorTest.java
index 1a0df96c8..499ad962b 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ExpressionGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ExpressionGeneratorTest.java
@@ -42,48 +42,46 @@ public class ExpressionGeneratorTest {
@Test
public void testGenerate() {
- generator.parseRule("expression|T(java.time.LocalDate).now()");
- assertThat(generator.generate(),
is(JsonUtils.toJson(LocalDate.now().toString())));
+
assertThat(generator.generate("expression|T(java.time.LocalDate).now()"),
+ is(JsonUtils.toJson(LocalDate.now().toString())));
- generator.parseRule("expression|1==1");
- assertThat(generator.generate(), is("true"));
+ assertThat(generator.generate("expression|1==1"),
+ is("true"));
}
@Test
public void testBoolGenerate() {
- generator.parseRule("expression|#bool()");
- String generate = generator.generate();
+ String generate = generator.generate("expression|#bool()");
assertThat(generate, in(Arrays.asList("true", "false")));
}
@Test
public void testCurrentTimeGenerate() {
- generator.parseRule("expression|#current()");
- assertTrue(generator.generate().matches("^\"\\d{4}(-\\d{2}){2}
\\d{2}(:\\d{2}){2}\"$"));
- generator.parseRule("expression|#current('YYYY-MM-dd')");
- assertTrue(generator.generate().matches("^\"\\d{4}(-\\d{2}){2}\"$"));
+ assertThat(generator.generate("expression|#current()"),
+ matchesRegex("^\"\\d{4}(-\\d{2}){2} \\d{2}(:\\d{2}){2}\"$"));
+
+ generator.generate("expression|#current('YYYY-MM-dd')");
+ assertThat(generator.generate("expression|#current('YYYY-MM-dd')"),
+ matchesRegex("^\"\\d{4}(-\\d{2}){2}\"$"));
}
@Test
public void testEmailTimeGenerate() {
- generator.parseRule("expression|#email()");
- assertNotNull(generator.generate());
+ assertNotNull(generator.generate("expression|#email()"));
}
@Test
public void testEnStringGenerate() {
int max = 10;
int min = 5;
- generator.parseRule(String.format("expression|#en(%d,%d)", min, max));
- String enString = generator.generate();
+ String enString =
generator.generate(String.format("expression|#en(%d,%d)", min, max));
assertThat(enString, matchesRegex("\"[a-zA-Z]{" + min + "," + max +
"}\""));
}
@Test
public void testPhoneGenerate() {
- generator.parseRule("expression|#phone()");
- String phone = generator.generate();
+ String phone = generator.generate("expression|#phone()");
assertTrue(phone.matches("^\"1[3-9]\\d{9}\"$"));
}
@@ -91,12 +89,10 @@ public class ExpressionGeneratorTest {
public void testRandomDoubleGenerate() {
double min = 10.5;
double max = 12.0;
- generator.parseRule(String.format("expression|#double(%f,%f)", min,
max));
- String doubleValue = generator.generate();
+ String doubleValue =
generator.generate(String.format("expression|#double(%f,%f)", min, max));
assertThat(Double.valueOf(doubleValue),
allOf(greaterThanOrEqualTo(min), lessThanOrEqualTo(max)));
- generator.parseRule("expression|#double(10.5,12.0,'¥%.2f')");
- doubleValue = generator.generate();
+ doubleValue =
generator.generate("expression|#double(10.5,12.0,'¥%.2f')");
assertThat(Double.valueOf(doubleValue.substring(1)),
allOf(greaterThanOrEqualTo(min), lessThanOrEqualTo(max)));
assertThat(doubleValue, matchesRegex("^¥\\d+.\\d{2}$"));
}
@@ -105,16 +101,14 @@ public class ExpressionGeneratorTest {
public void testRandomIntGenerate() {
int min = 10;
int max = 15;
- generator.parseRule(String.format("expression|#int(%d,%d)", min, max));
- String val = generator.generate();
+ String val =
generator.generate(String.format("expression|#int(%d,%d)", min, max));
assertThat(Integer.valueOf(val), allOf(greaterThanOrEqualTo(min),
lessThanOrEqualTo(max)));
}
@Test
public void testRandomDataGenerate() {
- generator.parseRule("expression|#oneOf('shenyu','number',1)");
- String val = generator.generate();
+ String val =
generator.generate("expression|#oneOf('shenyu','number',1)");
assertThat(val, oneOf("\"shenyu\"", "\"number\"", "1"));
}
@@ -123,8 +117,7 @@ public class ExpressionGeneratorTest {
int minLength = 10;
int maxLength = 20;
- generator.parseRule(String.format("expression|#zh(%d,%d)", minLength,
maxLength));
- String val = generator.generate();
+ String val = generator.generate(String.format("expression|#zh(%d,%d)",
minLength, maxLength));
assertThat(val.length(), allOf(greaterThanOrEqualTo(minLength),
lessThanOrEqualTo(maxLength)));
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/PhoneGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/PhoneGeneratorTest.java
index 9efb52ce4..1ed10c8c7 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/PhoneGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/PhoneGeneratorTest.java
@@ -17,31 +17,32 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.matchesRegex;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
/**
* The test case for {@link PhoneGenerator }.
*
* @date 2022/6/20 14:48
*/
public final class PhoneGeneratorTest {
-
+
private final PhoneGenerator generator = new PhoneGenerator();
-
+
@Test
void testGenerate() {
- generator.parseRule("phone");
- String phone = generator.generate();
- assertTrue(phone.matches("^1[3-9]\\d{9}$"));
+ String phone = generator.generate("phone");
+ assertThat(phone, matchesRegex("^1[3-9]\\d{9}$"));
}
-
+
@Test
void match() {
assertTrue(generator.match("phone"));
assertFalse(generator.match("mobile"));
-
+
}
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGeneratorTest.java
index e64630de4..ed1105bfd 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomDoubleGeneratorTest.java
@@ -17,34 +17,32 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.junit.jupiter.api.Test;
+
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
/**
* The test case for {@link RandomDoubleGenerator}.
*/
public final class RandomDoubleGeneratorTest {
-
+
private final RandomDoubleGenerator generator = new
RandomDoubleGenerator();
-
+
@Test
public void generate() {
- generator.parseRule("double|10.5-12.0");
- String doubleValue = generator.generate();
+ String doubleValue = generator.generate("double|10.5-12.0");
assertNotNull(doubleValue);
- generator.parseRule("double|10.5-12.0|¥%.2f");
- String formated = generator.generate();
+ String formated = generator.generate("double|10.5-12.0|¥%.2f");
assertAll(
() -> assertNotNull(formated),
() -> assertTrue(formated.matches("^¥\\d+.\\d{2}$"))
);
-
+
}
-
+
@Test
public void match() {
assertTrue(generator.match("double|10-15"));
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomIntGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomIntGeneratorTest.java
index ef1248658..22b3d0bbe 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomIntGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RandomIntGeneratorTest.java
@@ -17,27 +17,28 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.junit.jupiter.api.Test;
+
+import java.util.Objects;
+
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
/**
* The test case for {@link RandomIntGenerator}.
*/
public final class RandomIntGeneratorTest {
-
+
private final RandomIntGenerator generator = new RandomIntGenerator();
-
+
@Test
public void generate() {
int min = 10;
int max = 15;
- generator.parseRule(String.format("int|%d-%d", min, max));
- Integer generate = generator.generate();
- assertTrue(generate != null && generate >= min && generate <= max);
+ Integer generate = generator.generate(String.format("int|%d-%d", min,
max));
+ assertTrue(Objects.nonNull(generate) && generate >= min && generate <=
max);
}
-
+
@Test
public void match() {
assertTrue(generator.match("int|10-15"));
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RangeDataGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RangeDataGeneratorTest.java
index e39b37bad..6925a16eb 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RangeDataGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/RangeDataGeneratorTest.java
@@ -17,33 +17,32 @@
package org.apache.shenyu.plugin.mock.generator;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.Test;
import java.util.Objects;
-import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* The test case for {@link RangeDataGenerator}.
*/
public final class RangeDataGeneratorTest {
-
+
private final RangeDataGenerator generator = new RangeDataGenerator();
-
+
@Test
public void generate() {
- generator.parseRule("list|[shenyu,gateway]");
- String rangeData = generator.generate();
+ String rangeData = generator.generate("list|[shenyu,gateway]");
assertTrue(Objects.equals("shenyu", rangeData) ||
Objects.equals("gateway", rangeData));
}
-
+
@Test
public void testListDataContainComma() {
- generator.parseRule("list|[shen\\,yu,gate\\,way]");
- String rangeData = generator.generate();
+ String rangeData = generator.generate("list|[shen\\,yu,gate\\,way]");
assertTrue(Objects.equals("shen,yu", rangeData) ||
Objects.equals("gate,way", rangeData));
}
-
+
@Test
public void match() {
assertTrue(generator.match("list|[shen\\,yu,gate\\,way]"));
@@ -51,6 +50,6 @@ public final class RangeDataGeneratorTest {
assertFalse(generator.match("list|[shenyu,gateway"));
assertFalse(generator.match("list|[]"));
assertFalse(generator.match("list|[ ]"));
-
+
}
}
diff --git
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ZhStringGeneratorTest.java
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ZhStringGeneratorTest.java
index 45a3478b1..aa91a18ff 100644
---
a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ZhStringGeneratorTest.java
+++
b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/ZhStringGeneratorTest.java
@@ -17,30 +17,29 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.junit.jupiter.api.Test;
+
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
/**
* The test case for {@link ZhStringGenerator}.
*
* @date 2022/6/20 15:44
*/
public final class ZhStringGeneratorTest {
-
+
private final ZhStringGenerator generator = new ZhStringGenerator();
-
+
@Test
public void generate() {
int minLength = 10;
int maxLength = 20;
- generator.parseRule(String.format("zh|%d-%d", minLength, maxLength));
- String generate = generator.generate();
+ String generate = generator.generate(String.format("zh|%d-%d",
minLength, maxLength));
assertTrue(
- generate != null && generate.length() >= minLength &&
generate.length() <= maxLength);
+ generate != null && generate.length() >= minLength &&
generate.length() <= maxLength);
}
-
+
@Test
public void match() {
assertTrue(generator.match("zh|10-15"));