This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 4b2a2af Fix ut in MeshRuleRouterTest (#9473)
4b2a2af is described below
commit 4b2a2afb8901469eaeb4448c04b98b311432fffa
Author: Albumen Kevin <[email protected]>
AuthorDate: Thu Dec 23 13:25:05 2021 +0800
Fix ut in MeshRuleRouterTest (#9473)
---
.../cluster/router/mesh/route/MeshRuleRouter.java | 5 ++-
.../router/mesh/route/MeshRuleRouterTest.java | 52 +++++++++++-----------
2 files changed, 30 insertions(+), 27 deletions(-)
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
index 59168b5..a2c337a 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
@@ -218,7 +218,7 @@ public abstract class MeshRuleRouter<T> extends
AbstractStateRouter<T> implement
do {
BitList<Invoker<T>> result =
meshRuleCache.getSubsetInvokers(appName, subset);
- if (CollectionUtils.isNotEmpty(result) &&
!availableInvokers.and(result).isEmpty()) {
+ if (CollectionUtils.isNotEmpty(result) &&
!availableInvokers.clone().and(result).isEmpty()) {
return subset;
}
@@ -229,6 +229,9 @@ public abstract class MeshRuleRouter<T> extends
AbstractStateRouter<T> implement
}
dubboDestination = dubboRouteDestination.getDestination();
+ if (dubboDestination == null) {
+ break;
+ }
subset = dubboDestination.getSubset();
} while (true);
diff --git
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
index 5fde444..feaff0b 100644
---
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
+++
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
@@ -264,8 +264,8 @@ public class MeshRuleRouterTest {
public void testRoute1() {
StandardMeshRuleRouter<Object> meshRuleRouter = new
StandardMeshRuleRouter<>(url);
BitList<Invoker<Object>> invokers = new
BitList<>(Arrays.asList(createInvoker(""), createInvoker("unknown"),
createInvoker("app1")));
- assertEquals(invokers, meshRuleRouter.route(invokers, null, null,
false).getResult());
- assertEquals("MeshRuleCache has not been built. Skip route.",
meshRuleRouter.route(invokers, null, null, true).getMessage());
+ assertEquals(invokers, meshRuleRouter.route(invokers.clone(), null,
null, false).getResult());
+ assertEquals("MeshRuleCache has not been built. Skip route.",
meshRuleRouter.route(invokers.clone(), null, null, true).getMessage());
}
@Test
@@ -292,21 +292,21 @@ public class MeshRuleRouterTest {
rpcInvocation.setServiceName("ccc");
rpcInvocation.setAttachment("trafficLabel", "xxx");
- assertEquals(1, meshRuleRouter.route(invokers, null, rpcInvocation,
false).getResult().size());
- assertEquals(isolation, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
- assertEquals("Match App: app1 Subset: isolation ",
meshRuleRouter.route(invokers, null, rpcInvocation, true).getMessage());
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(isolation, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().get(0));
+ assertEquals("Match App: app1 Subset: isolation ",
meshRuleRouter.route(invokers.clone(), null, rpcInvocation, true).getMessage());
rpcInvocation.setAttachment("trafficLabel", "testing-trunk");
- assertEquals(1, meshRuleRouter.route(invokers, null, rpcInvocation,
false).getResult().size());
- assertEquals(testingTrunk, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(testingTrunk, meshRuleRouter.route(invokers.clone(),
null, rpcInvocation, false).getResult().get(0));
rpcInvocation.setAttachment("trafficLabel", null);
- assertEquals(1, meshRuleRouter.route(invokers, null, rpcInvocation,
false).getResult().size());
- assertEquals(testing, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(testing, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().get(0));
rpcInvocation.setServiceName("aaa");
- assertEquals(invokers, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult());
- assertEquals("Empty protection after routed.",
meshRuleRouter.route(invokers, null, rpcInvocation, true).getMessage());
+ assertEquals(invokers, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult());
+ assertEquals("Empty protection after routed.",
meshRuleRouter.route(invokers.clone(), null, rpcInvocation, true).getMessage());
rules = new LinkedList<>();
rules.add(yaml.load(rule1));
@@ -315,23 +315,23 @@ public class MeshRuleRouterTest {
rpcInvocation.setServiceName("ccc");
rpcInvocation.setAttachment("trafficLabel", "xxx");
- assertEquals(1, meshRuleRouter.route(invokers, null, rpcInvocation,
false).getResult().size());
- assertEquals(isolation, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(isolation, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().get(0));
rpcInvocation.setAttachment("trafficLabel", "testing-trunk");
- assertEquals(1, meshRuleRouter.route(invokers, null, rpcInvocation,
false).getResult().size());
- assertEquals(testingTrunk, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(testingTrunk, meshRuleRouter.route(invokers.clone(),
null, rpcInvocation, false).getResult().get(0));
rpcInvocation.setAttachment("trafficLabel", "testing");
- assertEquals(1, meshRuleRouter.route(invokers, null, rpcInvocation,
false).getResult().size());
- assertEquals(testing, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(testing, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().get(0));
rpcInvocation.setServiceName("aaa");
- assertEquals(1, meshRuleRouter.route(invokers, null, rpcInvocation,
false).getResult().size());
- assertEquals(testing, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(testing, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().get(0));
rpcInvocation.setAttachment("trafficLabel",null);
- assertEquals(invokers, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult());
+ assertEquals(invokers, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult());
rules = new LinkedList<>();
rules.add(yaml.load(rule1));
@@ -343,7 +343,7 @@ public class MeshRuleRouterTest {
int testingCount = 0;
int isolationCount = 0;
for (int i = 0; i < 1000; i++) {
- BitList<Invoker<Object>> result = meshRuleRouter.route(invokers,
null, rpcInvocation, false).getResult();
+ BitList<Invoker<Object>> result =
meshRuleRouter.route(invokers.clone(), null, rpcInvocation, false).getResult();
assertEquals(1, result.size());
if (result.contains(testing)) {
testingCount++;
@@ -355,15 +355,15 @@ public class MeshRuleRouterTest {
invokers.removeAll(Arrays.asList(isolation, testingTrunk));
for (int i = 0; i < 1000; i++) {
- assertEquals(1, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().size());
- assertEquals(testing, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(testing, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().get(0));
}
meshRuleRouter.notify(invokers);
for (int i = 0; i < 1000; i++) {
- assertEquals(1, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().size());
- assertEquals(testing, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult().get(0));
+ assertEquals(1, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().size());
+ assertEquals(testing, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult().get(0));
}
Invoker<Object> mock =
createInvoker(Collections.singletonMap("env-sign", "mock"));
@@ -371,7 +371,7 @@ public class MeshRuleRouterTest {
meshRuleRouter.notify(invokers);
invokers.removeAll(Arrays.asList(isolation, testingTrunk, testing));
- assertEquals(invokers, meshRuleRouter.route(invokers, null,
rpcInvocation, false).getResult());
+ assertEquals(invokers, meshRuleRouter.route(invokers.clone(), null,
rpcInvocation, false).getResult());
}
}