You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by xi...@apache.org on 2022/12/10 02:42:16 UTC
[shenyu] branch master updated: [ISSUE #4235]supports generation of mock data on request (#4236)
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 fbf8da7ed [ISSUE #4235]supports generation of mock data on request (#4236)
fbf8da7ed is described below
commit fbf8da7eda774759567ce060a2638b7cc284893c
Author: 愿凌飞 <ti...@foxmail.com>
AuthorDate: Sat Dec 10 10:42:05 2022 +0800
[ISSUE #4235]supports generation of mock data on request (#4236)
* [ISSUE 4228] fixed generate mock data in multithreading
* [ISSUE #4235]supports generation of mock data on request
* fixed unsafe
* fix
Co-authored-by: xiaoyu <xi...@apache.org>
---
.../org/apache/shenyu/plugin/mock/MockPlugin.java | 44 ++++-
.../apache/shenyu/plugin/mock/api/MockRequest.java | 204 +++++++++++++++++++++
.../plugin/mock/generator/ArrayGenerator.java | 5 +-
.../plugin/mock/generator/BoolGenerator.java | 3 +-
.../mock/generator/CurrentTimeGenerator.java | 3 +-
.../plugin/mock/generator/EmailGenerator.java | 3 +-
.../plugin/mock/generator/EnStringGenerator.java | 3 +-
.../plugin/mock/generator/ExpressionGenerator.java | 7 +-
.../shenyu/plugin/mock/generator/Generator.java | 10 +-
.../plugin/mock/generator/GeneratorFactory.java | 12 +-
.../plugin/mock/generator/PhoneGenerator.java | 3 +-
.../mock/generator/RandomDoubleGenerator.java | 3 +-
.../plugin/mock/generator/RandomIntGenerator.java | 3 +-
.../plugin/mock/generator/RangeDataGenerator.java | 3 +-
.../plugin/mock/generator/ZhStringGenerator.java | 3 +-
.../plugin/mock/generator/ArrayGeneratorTest.java | 6 +-
.../plugin/mock/generator/BoolGeneratorTest.java | 2 +-
.../mock/generator/CurrentTimeGeneratorTest.java | 4 +-
.../plugin/mock/generator/EmailGeneratorTest.java | 2 +-
.../mock/generator/EnStringGeneratorTest.java | 2 +-
.../mock/generator/ExpressionGeneratorTest.java | 80 ++++++--
.../mock/generator/GeneratorFactoryTest.java | 4 +-
.../plugin/mock/generator/PhoneGeneratorTest.java | 2 +-
.../mock/generator/RandomDoubleGeneratorTest.java | 4 +-
.../mock/generator/RandomIntGeneratorTest.java | 2 +-
.../mock/generator/RangeDataGeneratorTest.java | 4 +-
.../mock/generator/ZhStringGeneratorTest.java | 2 +-
27 files changed, 363 insertions(+), 60 deletions(-)
diff --git a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/MockPlugin.java b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/MockPlugin.java
index 9f7f03f59..4e563e369 100644
--- a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/MockPlugin.java
+++ b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/MockPlugin.java
@@ -24,10 +24,15 @@ import org.apache.shenyu.common.enums.PluginEnum;
import org.apache.shenyu.plugin.api.ShenyuPluginChain;
import org.apache.shenyu.plugin.base.AbstractShenyuPlugin;
import org.apache.shenyu.plugin.base.utils.CacheKeyUtils;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.generator.GeneratorFactory;
import org.apache.shenyu.plugin.mock.handler.MockPluginHandler;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.core.io.buffer.DataBufferUtils;
+import org.springframework.core.io.buffer.DefaultDataBufferFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
@@ -37,28 +42,49 @@ import java.nio.charset.StandardCharsets;
* MockPlugin.
*/
public class MockPlugin extends AbstractShenyuPlugin {
-
+
@Override
protected Mono<Void> doExecute(final ServerWebExchange exchange, final ShenyuPluginChain chain,
final SelectorData selector, final RuleData rule) {
+
MockHandle mockHandle = MockPluginHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(rule));
- String replaceContent = GeneratorFactory.dealRule(mockHandle.getResponseContent());
exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON);
exchange.getResponse().setStatusCode(HttpStatus.valueOf(mockHandle.getHttpStatusCode()));
- final byte[] bytes = replaceContent.getBytes(StandardCharsets.UTF_8);
- return exchange.getResponse().writeWith(Mono.just(exchange.getResponse()
- .bufferFactory().wrap(bytes))
- .doOnNext(data -> exchange.getResponse().getHeaders()
- .setContentLength(data.readableByteCount())));
+
+ return DataBufferUtils.join(exchange.getRequest().getBody())
+ .switchIfEmpty(Mono.just(DefaultDataBufferFactory.sharedInstance.allocateBuffer(0)))
+ .map(dataBuffer -> dealRule(dataBuffer, mockHandle.getResponseContent(), exchange.getRequest()))
+ .flatMap(bytes -> exchange.getResponse().writeWith(Mono.just(exchange.getResponse()
+ .bufferFactory().wrap(bytes))
+ .doOnNext(data -> exchange.getResponse().getHeaders()
+ .setContentLength(data.readableByteCount()))));
}
-
+
@Override
public int getOrder() {
return PluginEnum.MOCK.getCode();
}
-
+
@Override
public String named() {
return PluginEnum.MOCK.getName();
}
+
+ private byte[] dealRule(final DataBuffer requestBodyBuffer, final String response, final ServerHttpRequest serverHttpRequest) {
+ byte[] originalBody = new byte[requestBodyBuffer.readableByteCount()];
+ requestBodyBuffer.read(originalBody);
+ DataBufferUtils.release(requestBodyBuffer);
+ MockRequest mockRequest = buildMockRequest(originalBody, serverHttpRequest);
+ return GeneratorFactory.dealRule(response, mockRequest).getBytes(StandardCharsets.UTF_8);
+ }
+
+ private MockRequest buildMockRequest(final byte[] originalBody, final ServerHttpRequest serverHttpRequest) {
+
+ return MockRequest.Builder.builder()
+ .headers(serverHttpRequest.getHeaders().toSingleValueMap())
+ .method(serverHttpRequest.getMethodValue())
+ .queries(serverHttpRequest.getQueryParams().toSingleValueMap())
+ .uri(serverHttpRequest.getURI().toString())
+ .body(originalBody).build();
+ }
}
diff --git a/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/api/MockRequest.java b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/api/MockRequest.java
new file mode 100644
index 000000000..0543e2f66
--- /dev/null
+++ b/shenyu-plugin/shenyu-plugin-mock/src/main/java/org/apache/shenyu/plugin/mock/api/MockRequest.java
@@ -0,0 +1,204 @@
+/*
+ * 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.shenyu.plugin.mock.api;
+
+import org.apache.shenyu.common.utils.JsonUtils;
+
+import java.util.Map;
+import java.util.Objects;
+
+public final class MockRequest {
+
+ private Map<String, String> headers;
+
+ private String uri;
+
+ private String method;
+
+ private Map<String, String> queries;
+
+ private byte[] body;
+
+ private Object json;
+
+ private MockRequest() {
+ }
+
+ /**
+ * Gets headers.
+ *
+ * @return headers
+ */
+ public Map<String, String> getHeaders() {
+ return headers;
+ }
+
+ /**
+ * Gets uri.
+ *
+ * @return uri
+ */
+ public String getUri() {
+ return uri;
+ }
+
+ /**
+ * Gets Method.
+ *
+ * @return method
+ */
+ public String getMethod() {
+ return method;
+ }
+
+ /**
+ * Get queries.
+ *
+ * @return queries
+ */
+ public Map<String, String> getQueries() {
+ return queries;
+ }
+
+ /**
+ * Get json-body.
+ *
+ * @return json body
+ */
+ public Object getJson() {
+ if (Objects.isNull(json)) {
+ json = JsonUtils.jsonToMap(new String(body));
+ }
+ return json;
+ }
+
+ /**
+ * Gets form-body,not support now.
+ *
+ * @return form-body
+ */
+ public Map<String, String> getForms() {
+ //todo
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Gets xml-body,not support now.
+ *
+ * @return xml-body
+ */
+ public Object getXml() {
+ //todo
+ throw new UnsupportedOperationException();
+ }
+
+ public static final class Builder {
+
+ private Map<String, String> headers;
+
+ private String uri;
+
+ private String method;
+
+ private Map<String, String> queries;
+
+ private byte[] body;
+
+ private Builder() {
+ }
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * build headers.
+ *
+ * @param headers headers
+ * @return this
+ */
+ public Builder headers(final Map<String, String> headers) {
+ this.headers = headers;
+ return this;
+ }
+
+ /**
+ * build uri.
+ *
+ * @param uri uri
+ * @return this
+ */
+ public Builder uri(final String uri) {
+ this.uri = uri;
+ return this;
+ }
+
+ /**
+ * build method.
+ *
+ * @param method method
+ * @return this
+ */
+ public Builder method(final String method) {
+ this.method = method;
+ return this;
+ }
+
+ /**
+ * build queries.
+ *
+ * @param queries queries
+ * @return this
+ */
+ public Builder queries(final Map<String, String> queries) {
+ this.queries = queries;
+ return this;
+ }
+
+ /**
+ * build body.
+ *
+ * @param body body
+ * @return this
+ */
+ public Builder body(final byte[] body) {
+ this.body = body;
+ return this;
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return mockRequest
+ */
+ public MockRequest build() {
+ MockRequest mockRequest = new MockRequest();
+ mockRequest.uri = this.uri;
+ mockRequest.method = this.method;
+ mockRequest.queries = this.queries;
+ mockRequest.headers = this.headers;
+ mockRequest.body = this.body;
+ return mockRequest;
+ }
+ }
+}
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 923a5ed0b..22ec7c687 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.spi.Join;
import java.util.List;
@@ -35,12 +36,12 @@ public class ArrayGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
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))
+ .mapToObj(i -> GeneratorFactory.dealRule(replaceContentCopy, mockRequest))
.collect(Collectors.joining(","));
}
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 3d3618911..328bd13bd 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -34,7 +35,7 @@ public class BoolGenerator implements Generator<Boolean> {
}
@Override
- public Boolean doGenerate(final List<String> params, final String rule) {
+ public Boolean doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
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 df0418725..36328e376 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -34,7 +35,7 @@ public class CurrentTimeGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
String format = null;
if (params.size() >= 1) {
format = params.get(0);
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 2d981843b..d622ebde0 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -34,7 +35,7 @@ public class EmailGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
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 2c47b3eca..5a41dcfa9 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -34,7 +35,7 @@ public class EnStringGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
String[] range = params.get(0).split("-");
int min = Integer.parseInt(range[0]);
int max = Integer.parseInt(range[1]);
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 9dc00d02e..451172bcb 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
@@ -18,10 +18,12 @@
package org.apache.shenyu.plugin.mock.generator;
import org.apache.shenyu.common.utils.JsonUtils;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.context.expression.MapAccessor;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
@@ -44,10 +46,11 @@ public class ExpressionGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
String expression = params.get(0);
+ CONTEXT.setVariable("req", mockRequest);
Object val = PARSER.parseExpression(expression).getValue(CONTEXT);
if (val instanceof MockUtil.FormatDouble) {
@@ -89,6 +92,8 @@ public class ExpressionGenerator implements Generator<String> {
registerMockFunction(context, "current", "current", String[].class);
+ context.addPropertyAccessor(new MapAccessor());
+
} catch (NoSuchMethodException e) {
// It will never happen
LOG.error(e.getMessage(), e);
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 bc60d14d0..b19126053 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.spi.SPI;
import java.util.ArrayList;
@@ -39,12 +40,14 @@ public interface Generator<T> {
/**
* generate mock data.
+ *
* @param rule rule
+ * @param mockRequest request
* @return mock data
*/
- default T generate(String rule) {
+ default T generate(String rule, MockRequest mockRequest) {
List<String> params = extractParams(rule);
- return doGenerate(params, rule);
+ return doGenerate(params, rule, mockRequest);
}
/**
@@ -52,9 +55,10 @@ public interface Generator<T> {
*
* @param params params
* @param rule rule
+ * @param mockRequest request
* @return mock data
*/
- T doGenerate(List<String> params, String rule);
+ T doGenerate(List<String> params, String rule, MockRequest mockRequest);
/**
* get size of rule 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 69a2221ce..d38aa56b8 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.spi.ExtensionLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,7 +64,7 @@ public final class GeneratorFactory {
return null;
}
- private static String generate(final String rule) {
+ private static String generate(final String rule, final MockRequest mockRequest) {
final Matcher matcher = RULE_CONTENT_PATTERN.matcher(rule);
if (!matcher.find()) {
return rule;
@@ -78,7 +79,7 @@ public final class GeneratorFactory {
String[] prefixAndSuffix = generator.getPrefixAndSuffix();
try {
- Object generateData = generator.generate(ruleContent);
+ Object generateData = generator.generate(ruleContent, mockRequest);
return String.join("", prefixAndSuffix[0], generateData.toString(), prefixAndSuffix[1]);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
@@ -89,14 +90,15 @@ public final class GeneratorFactory {
/**
* replace placeholder in content.
*
- * @param content response content.
+ * @param content response content
+ * @param mockRequest request
* @return replace the content after the placeholder.
*/
- public static String dealRule(final String content) {
+ public static String dealRule(final String content, final MockRequest mockRequest) {
String afterDeal = content;
String placeHolder = getPlaceholder(content);
while (placeHolder != null) {
- Object generateData = generate(placeHolder);
+ Object generateData = generate(placeHolder, mockRequest);
if (Objects.equals(generateData, placeHolder)) {
generateData = ERROR_PARSE;
}
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 e6d00dc75..d36730c97 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -34,7 +35,7 @@ public class PhoneGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
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 6f0d643f9..1ada6619e 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -35,7 +36,7 @@ public class RandomDoubleGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
String[] range = params.get(0).split("-");
double min = Double.parseDouble(range[0]);
double max = Double.parseDouble(range[1]);
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 a192b5588..94618477d 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -34,7 +35,7 @@ public class RandomIntGenerator implements Generator<Integer> {
}
@Override
- public Integer doGenerate(final List<String> params, final String rule) {
+ public Integer doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
String[] range = params.get(0).split("-");
int min = Integer.parseInt(range[0]);
int max = Integer.parseInt(range[1]);
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 98ee2fdb7..833f29daf 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -35,7 +36,7 @@ public class RangeDataGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
String rangeData = params.get(0).replaceAll("\\[(.+)]", "$1");
String[] data = Arrays.stream(rangeData.split("(?<!\\\\),"))
.map(_data -> _data.replace("\\,", ","))
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 9f19e512a..91c058d24 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
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.mock.generator;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
import org.apache.shenyu.plugin.mock.util.MockUtil;
import org.apache.shenyu.spi.Join;
@@ -34,7 +35,7 @@ public class ZhStringGenerator implements Generator<String> {
}
@Override
- public String doGenerate(final List<String> params, final String rule) {
+ public String doGenerate(final List<String> params, final String rule, final MockRequest mockRequest) {
String[] range = params.get(0).split("-");
int min = Integer.parseInt(range[0]);
int max = Integer.parseInt(range[1]);
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 6f75ab0b8..51a06e1bc 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,16 +32,16 @@ public final class ArrayGeneratorTest {
@Test
public void testGenerate() {
- String generate = arrayGenerator.generate("array|\"test\"|3");
+ String generate = arrayGenerator.generate("array|\"test\"|3", null);
assertEquals("\"test\",\"test\",\"test\"", generate);
}
@Test
public void testNestRuleGenerate() {
- String generate = arrayGenerator.generate("array|{\"ints\":${array|10|3}}|3");
+ String generate = arrayGenerator.generate("array|{\"ints\":${array|10|3}}|3", null);
assertEquals("{\"ints\":[10,10,10]},{\"ints\":[10,10,10]},{\"ints\":[10,10,10]}", generate);
- generate = arrayGenerator.generate("array|{\"int\":${expression|#oneOf(10)}}|3");
+ generate = arrayGenerator.generate("array|{\"int\":${expression|#oneOf(10)}}|3", null);
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 6ca2816f0..43e5a6b10 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
@@ -32,7 +32,7 @@ public final class BoolGeneratorTest {
@Test
public void testGenerate() {
- Boolean generate = boolGenerator.generate("bool");
+ Boolean generate = boolGenerator.generate("bool", null);
Assertions.assertNotNull(generate);
}
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 ebe0fbb26..3feb680b2 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
@@ -29,8 +29,8 @@ public final class CurrentTimeGeneratorTest {
@Test
public void testGenerate() {
- 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}$"));
+ Assertions.assertTrue(generator.generate("current", null).matches("^\\d{4}(-\\d{2}){2} \\d{2}(:\\d{2}){2}$"));
+ Assertions.assertTrue(generator.generate("current|YYYY-MM-dd", null).matches("^\\d{4}(-\\d{2}){2}$"));
}
@Test
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 ee22fcb22..48b7e2745 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
@@ -32,7 +32,7 @@ public final class EmailGeneratorTest {
@Test
public void testGenerate() {
- String email = generator.generate("email");
+ String email = generator.generate("email", null);
assertNotNull(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 04dd738eb..df0016769 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
@@ -33,7 +33,7 @@ public final class EnStringGeneratorTest {
public void testGenerate() {
int max = 10;
int min = 5;
- String enString = generator.generate("en|" + min + "-" + max);
+ String enString = generator.generate("en|" + min + "-" + max, null);
assertTrue(enString.matches("[a-zA-Z]{" + min + "," + max + "}"));
}
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 499ad962b..5f412710d 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
@@ -17,9 +17,14 @@
package org.apache.shenyu.plugin.mock.generator;
+import com.google.common.collect.ImmutableMap;
+import org.apache.shenyu.common.enums.HttpMethodEnum;
import org.apache.shenyu.common.utils.JsonUtils;
+import org.apache.shenyu.plugin.mock.api.MockRequest;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
+import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.util.Arrays;
@@ -37,51 +42,70 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class ExpressionGeneratorTest {
+ private static MockRequest mockRequest;
+
private final ExpressionGenerator generator = new ExpressionGenerator();
+ @BeforeAll
+ public static void setUp() {
+ byte[] body = JsonUtils.toJson(ImmutableMap.of(
+ "name", "shenyu",
+ "id", 1234L,
+ "address", ImmutableMap.of("country", "CHINA")))
+ .getBytes(StandardCharsets.UTF_8);
+
+ mockRequest = MockRequest.Builder.builder()
+ .uri("getName")
+ .headers(ImmutableMap.of("header_name", "header_value"))
+ .method(HttpMethodEnum.GET.getName())
+ .queries(ImmutableMap.of("query_name", "query_value"))
+ .body(body)
+ .build();
+
+ }
+
@Test
public void testGenerate() {
- assertThat(generator.generate("expression|T(java.time.LocalDate).now()"),
+ assertThat(generator.generate("expression|T(java.time.LocalDate).now()", mockRequest),
is(JsonUtils.toJson(LocalDate.now().toString())));
- assertThat(generator.generate("expression|1==1"),
+ assertThat(generator.generate("expression|1==1", mockRequest),
is("true"));
}
@Test
public void testBoolGenerate() {
- String generate = generator.generate("expression|#bool()");
+ String generate = generator.generate("expression|#bool()", mockRequest);
assertThat(generate, in(Arrays.asList("true", "false")));
}
@Test
public void testCurrentTimeGenerate() {
- assertThat(generator.generate("expression|#current()"),
+ assertThat(generator.generate("expression|#current()", mockRequest),
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')"),
+ assertThat(generator.generate("expression|#current('YYYY-MM-dd')", mockRequest),
matchesRegex("^\"\\d{4}(-\\d{2}){2}\"$"));
}
@Test
public void testEmailTimeGenerate() {
- assertNotNull(generator.generate("expression|#email()"));
+ assertNotNull(generator.generate("expression|#email()", mockRequest));
}
@Test
public void testEnStringGenerate() {
int max = 10;
int min = 5;
- String enString = generator.generate(String.format("expression|#en(%d,%d)", min, max));
+ String enString = generator.generate(String.format("expression|#en(%d,%d)", min, max), mockRequest);
assertThat(enString, matchesRegex("\"[a-zA-Z]{" + min + "," + max + "}\""));
}
@Test
public void testPhoneGenerate() {
- String phone = generator.generate("expression|#phone()");
+ String phone = generator.generate("expression|#phone()", mockRequest);
assertTrue(phone.matches("^\"1[3-9]\\d{9}\"$"));
}
@@ -89,10 +113,10 @@ public class ExpressionGeneratorTest {
public void testRandomDoubleGenerate() {
double min = 10.5;
double max = 12.0;
- String doubleValue = generator.generate(String.format("expression|#double(%f,%f)", min, max));
+ String doubleValue = generator.generate(String.format("expression|#double(%f,%f)", min, max), mockRequest);
assertThat(Double.valueOf(doubleValue), allOf(greaterThanOrEqualTo(min), lessThanOrEqualTo(max)));
- doubleValue = generator.generate("expression|#double(10.5,12.0,'¥%.2f')");
+ doubleValue = generator.generate("expression|#double(10.5,12.0,'¥%.2f')", mockRequest);
assertThat(Double.valueOf(doubleValue.substring(1)), allOf(greaterThanOrEqualTo(min), lessThanOrEqualTo(max)));
assertThat(doubleValue, matchesRegex("^¥\\d+.\\d{2}$"));
}
@@ -101,23 +125,51 @@ public class ExpressionGeneratorTest {
public void testRandomIntGenerate() {
int min = 10;
int max = 15;
- String val = generator.generate(String.format("expression|#int(%d,%d)", min, max));
+ String val = generator.generate(String.format("expression|#int(%d,%d)", min, max), mockRequest);
assertThat(Integer.valueOf(val), allOf(greaterThanOrEqualTo(min), lessThanOrEqualTo(max)));
}
@Test
public void testRandomDataGenerate() {
- String val = generator.generate("expression|#oneOf('shenyu','number',1)");
+ String val = generator.generate("expression|#oneOf('shenyu','number',1)", mockRequest);
assertThat(val, oneOf("\"shenyu\"", "\"number\"", "1"));
}
+ @Test
+ public void testGenerateDataFromReq() {
+
+ assertThat(generator.generate("expression|#req.headers[header_name]", mockRequest),
+ is("\"header_value\""));
+
+ assertThat(generator.generate("expression|#req.method", mockRequest),
+ is("\"get\""));
+
+ assertThat(generator.generate("expression|#req.queries['query_name']", mockRequest),
+ is("\"query_value\""));
+
+ assertThat(generator.generate("expression|#req.queries.query_name", mockRequest),
+ is("\"query_value\""));
+
+ assertThat(generator.generate("expression|#req.json.id", mockRequest),
+ is("1234"));
+
+ assertThat(generator.generate("expression|#req.json.name", mockRequest),
+ is("\"shenyu\""));
+
+ assertThat(generator.generate("expression|#req.uri", mockRequest),
+ is("\"getName\""));
+
+ assertThat(generator.generate("expression|#req.json.address.country", mockRequest),
+ is("\"CHINA\""));
+ }
+
@Test
public void testZhDataGenerate() {
int minLength = 10;
int maxLength = 20;
- String val = generator.generate(String.format("expression|#zh(%d,%d)", minLength, maxLength));
+ String val = generator.generate(String.format("expression|#zh(%d,%d)", minLength, maxLength), mockRequest);
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/GeneratorFactoryTest.java b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/GeneratorFactoryTest.java
index e0ccd3854..f0dd949da 100644
--- a/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/GeneratorFactoryTest.java
+++ b/shenyu-plugin/shenyu-plugin-mock/src/test/java/org/apache/shenyu/plugin/mock/generator/GeneratorFactoryTest.java
@@ -29,14 +29,14 @@ public class GeneratorFactoryTest {
@Test
public void testDealRule() {
- String dealedContent = GeneratorFactory.dealRule("${phone}");
+ String dealedContent = GeneratorFactory.dealRule("${phone}", null);
assertThat(dealedContent, matchesRegex("^\"1[3-9]\\d{9}\"$"));
}
@ParameterizedTest
@ValueSource(strings = {"${expression|(sdxc}", "${wrong_rule|123}"})
public void testDealRuleWithWrongContent(final String content) {
- String dealedContent = GeneratorFactory.dealRule(content);
+ String dealedContent = GeneratorFactory.dealRule(content, null);
assertThat(dealedContent, is("\"[#ERROR EXPRESSION#]\""));
}
}
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 1ed10c8c7..123ca3118 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
@@ -35,7 +35,7 @@ public final class PhoneGeneratorTest {
@Test
void testGenerate() {
- String phone = generator.generate("phone");
+ String phone = generator.generate("phone", null);
assertThat(phone, matchesRegex("^1[3-9]\\d{9}$"));
}
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 ed1105bfd..fd5019d74 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
@@ -33,9 +33,9 @@ public final class RandomDoubleGeneratorTest {
@Test
public void generate() {
- String doubleValue = generator.generate("double|10.5-12.0");
+ String doubleValue = generator.generate("double|10.5-12.0", null);
assertNotNull(doubleValue);
- String formated = generator.generate("double|10.5-12.0|¥%.2f");
+ String formated = generator.generate("double|10.5-12.0|¥%.2f", null);
assertAll(
() -> assertNotNull(formated),
() -> assertTrue(formated.matches("^¥\\d+.\\d{2}$"))
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 22b3d0bbe..fcd1c8209 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
@@ -35,7 +35,7 @@ public final class RandomIntGeneratorTest {
public void generate() {
int min = 10;
int max = 15;
- Integer generate = generator.generate(String.format("int|%d-%d", min, max));
+ Integer generate = generator.generate(String.format("int|%d-%d", min, max), null);
assertTrue(Objects.nonNull(generate) && generate >= min && generate <= max);
}
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 6925a16eb..89b462622 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
@@ -33,13 +33,13 @@ public final class RangeDataGeneratorTest {
@Test
public void generate() {
- String rangeData = generator.generate("list|[shenyu,gateway]");
+ String rangeData = generator.generate("list|[shenyu,gateway]", null);
assertTrue(Objects.equals("shenyu", rangeData) || Objects.equals("gateway", rangeData));
}
@Test
public void testListDataContainComma() {
- String rangeData = generator.generate("list|[shen\\,yu,gate\\,way]");
+ String rangeData = generator.generate("list|[shen\\,yu,gate\\,way]", null);
assertTrue(Objects.equals("shen,yu", rangeData) || Objects.equals("gate,way", rangeData));
}
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 aa91a18ff..2f726f95b 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
@@ -35,7 +35,7 @@ public final class ZhStringGeneratorTest {
public void generate() {
int minLength = 10;
int maxLength = 20;
- String generate = generator.generate(String.format("zh|%d-%d", minLength, maxLength));
+ String generate = generator.generate(String.format("zh|%d-%d", minLength, maxLength), null);
assertTrue(
generate != null && generate.length() >= minLength && generate.length() <= maxLength);
}