You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/12/23 05:25:19 UTC
[dubbo] branch 3.0 updated: Fix ut in MeshRuleRouterTest (#9473)
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 <jh...@gmail.com>
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());
}
}