From 8d0bb691b33331f8114ecaacb5511b035249edec Mon Sep 17 00:00:00 2001 From: Eric Zhao Date: Tue, 21 May 2019 16:45:05 +0800 Subject: [PATCH] Fix the bug for parsing with only non-param gateway rules Signed-off-by: Eric Zhao --- .../adapter/gateway/common/param/GatewayParamParser.java | 4 ++-- .../gateway/common/param/GatewayParamParserTest.java | 7 ++++++- .../gateway/sc/SpringCloudGatewayParamParserTest.java | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParser.java b/sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParser.java index fe51c4c5..f326468b 100644 --- a/sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParser.java +++ b/sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParser.java @@ -62,10 +62,10 @@ public class GatewayParamParser { hasNonParamRule = true; } } - if (gatewayRules.isEmpty()) { + if (!hasNonParamRule && gatewayRules.isEmpty()) { return new Object[0]; } - if (predSet.size() != 1 || predSet.contains(false)) { + if (predSet.size() > 1 || predSet.contains(false)) { return new Object[0]; } int size = hasNonParamRule ? gatewayRules.size() + 1 : gatewayRules.size(); diff --git a/sentinel-adapter/sentinel-api-gateway-adapter-common/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParserTest.java b/sentinel-adapter/sentinel-api-gateway-adapter-common/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParserTest.java index 9fc8dc0e..7edc7844 100644 --- a/sentinel-adapter/sentinel-api-gateway-adapter-common/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParserTest.java +++ b/sentinel-adapter/sentinel-api-gateway-adapter-common/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/common/param/GatewayParamParserTest.java @@ -70,10 +70,15 @@ public class GatewayParamParserTest { .setCount(5) .setIntervalSec(1) ); + rules.add(new GatewayFlowRule(routeId1) + .setCount(10) + .setControlBehavior(2) + .setMaxQueueingTimeoutMs(1000) + ); GatewayRuleManager.loadRules(rules); Object[] params = parser.parseParameterFor(routeId1, request, routeIdPredicate); - assertThat(params.length).isZero(); + assertThat(params.length).isEqualTo(1); } @Test diff --git a/sentinel-adapter/sentinel-spring-cloud-gateway-adapter/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SpringCloudGatewayParamParserTest.java b/sentinel-adapter/sentinel-spring-cloud-gateway-adapter/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SpringCloudGatewayParamParserTest.java index 5b9ca980..a28240e0 100644 --- a/sentinel-adapter/sentinel-spring-cloud-gateway-adapter/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SpringCloudGatewayParamParserTest.java +++ b/sentinel-adapter/sentinel-spring-cloud-gateway-adapter/src/test/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SpringCloudGatewayParamParserTest.java @@ -67,7 +67,7 @@ public class SpringCloudGatewayParamParserTest { Object[] params = paramParser.parseParameterFor(routeId1, exchange, e -> e.getResourceMode() == 0); - assertThat(params.length).isZero(); + assertThat(params.length).isEqualTo(1); } @Test