Fix the bug for parsing with only non-param gateway rules

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
This commit is contained in:
Eric Zhao 2019-05-21 16:45:05 +08:00
parent ae0b8a5c74
commit 8d0bb691b3
3 changed files with 9 additions and 4 deletions

View File

@ -62,10 +62,10 @@ public class GatewayParamParser<T> {
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();

View File

@ -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

View File

@ -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