This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new fd3fb63826 Add xdsroute observe logic (#11309)
fd3fb63826 is described below
commit fd3fb63826a59239ea29a3d05e8672825b519f89
Author: Montos <[email protected]>
AuthorDate: Tue Jan 17 15:03:04 2023 +0800
Add xdsroute observe logic (#11309)
---
.../dubbo/registry/xds/util/PilotExchanger.java | 61 ++++++++++++++++++----
.../xds/util/protocol/impl/LdsProtocol.java | 16 +++---
.../xds/util/protocol/impl/RdsProtocol.java | 6 ++-
.../xds/util/protocol/message/RouteResult.java | 20 +++++++
.../rpc/cluster/router/xds/EdsEndpointManager.java | 19 +++----
.../cluster/router/xds/RdsRouteRuleManager.java | 18 ++++---
.../dubbo/rpc/cluster/router/xds/XdsRouter.java | 32 ++++++++----
.../dubbo/rpc/cluster/router/xds/XdsRouteTest.java | 31 +++++------
8 files changed, 144 insertions(+), 59 deletions(-)
diff --git
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/PilotExchanger.java
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/PilotExchanger.java
index 567a1ca6dd..de31651934 100644
---
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/PilotExchanger.java
+++
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/PilotExchanger.java
@@ -16,6 +16,14 @@
*/
package org.apache.dubbo.registry.xds.util;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
+
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.ConcurrentHashSet;
@@ -27,15 +35,10 @@ import
org.apache.dubbo.registry.xds.util.protocol.message.Endpoint;
import org.apache.dubbo.registry.xds.util.protocol.message.EndpointResult;
import org.apache.dubbo.registry.xds.util.protocol.message.ListenerResult;
import org.apache.dubbo.registry.xds.util.protocol.message.RouteResult;
+import org.apache.dubbo.rpc.cluster.router.xds.RdsVirtualHostListener;
import org.apache.dubbo.rpc.model.ApplicationModel;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.function.Consumer;
+import io.envoyproxy.envoy.config.route.v3.VirtualHost;
public class PilotExchanger {
@@ -52,10 +55,14 @@ public class PilotExchanger {
protected Map<String, RouteResult> routeResult;
private final AtomicBoolean isRdsObserve = new AtomicBoolean(false);
- private final HashSet<String> domainObserveRequest = new HashSet<>();
+ private final Set<String> domainObserveRequest = new
ConcurrentHashSet<String>();
private final Map<String, Set<Consumer<Set<Endpoint>>>>
domainObserveConsumer = new ConcurrentHashMap<>();
+ private final Map<String, Consumer<RdsVirtualHostListener>>
rdsObserveConsumer = new ConcurrentHashMap<>();
+
+ private static PilotExchanger GLOBAL_PILOT_EXCHANGER = null;
+
protected PilotExchanger(URL url) {
xdsChannel = new XdsChannel(url);
int pollingTimeout = url.getParameter("pollingTimeout", 10);
@@ -108,9 +115,25 @@ public class PilotExchanger {
}
public static PilotExchanger initialize(URL url) {
- return new PilotExchanger(url);
+ synchronized (PilotExchanger.class){
+ if (GLOBAL_PILOT_EXCHANGER != null) {
+ return GLOBAL_PILOT_EXCHANGER;
+ }
+ return (GLOBAL_PILOT_EXCHANGER = new PilotExchanger(url));
+ }
+ }
+
+ public static PilotExchanger getInstance() {
+ synchronized (PilotExchanger.class) {
+ return GLOBAL_PILOT_EXCHANGER;
+ }
}
+ public static boolean isEnabled() {
+ return GLOBAL_PILOT_EXCHANGER != null;
+ }
+
+
public void destroy() {
xdsChannel.destroy();
}
@@ -172,4 +195,24 @@ public class PilotExchanger {
}
}
+
+ public void unObserveEndpoints(String domain, Consumer<Set<Endpoint>>
consumer) {
+ domainObserveConsumer.get(domain).remove(consumer);
+ domainObserveRequest.remove(domain);
+ }
+
+ public VirtualHost getVirtualHost(String domain) {
+ for (Map.Entry<String, RouteResult> entry : routeResult.entrySet()) {
+ if (entry.getValue().searchVirtualHost(domain) != null) {
+ return entry.getValue().searchVirtualHost(domain);
+ }
+ }
+ return null;
+ }
+
+ public void unObserveRds(String domain) {
+ for (Map.Entry<String, RouteResult> entry : routeResult.entrySet()) {
+ entry.getValue().removeVirtualHost(domain);
+ }
+ }
}
diff --git
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/LdsProtocol.java
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/LdsProtocol.java
index 7129337959..8e7a7f5b7b 100644
---
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/LdsProtocol.java
+++
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/LdsProtocol.java
@@ -16,6 +16,14 @@
*/
package org.apache.dubbo.registry.xds.util.protocol.impl;
+import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.registry.xds.util.XdsChannel;
+import org.apache.dubbo.registry.xds.util.protocol.AbstractProtocol;
+import org.apache.dubbo.registry.xds.util.protocol.delta.DeltaListener;
+import org.apache.dubbo.registry.xds.util.protocol.message.ListenerResult;
+import org.apache.dubbo.rpc.model.ApplicationModel;
+
import com.google.protobuf.Any;
import com.google.protobuf.InvalidProtocolBufferException;
import io.envoyproxy.envoy.config.core.v3.Node;
@@ -24,13 +32,7 @@ import io.envoyproxy.envoy.config.listener.v3.Listener;
import
io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager;
import
io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.Rds;
import io.envoyproxy.envoy.service.discovery.v3.DiscoveryResponse;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.registry.xds.util.XdsChannel;
-import org.apache.dubbo.registry.xds.util.protocol.AbstractProtocol;
-import org.apache.dubbo.registry.xds.util.protocol.delta.DeltaListener;
-import org.apache.dubbo.registry.xds.util.protocol.message.ListenerResult;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+
import java.util.HashMap;
import java.util.Map;
diff --git
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/RdsProtocol.java
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/RdsProtocol.java
index 900fb22efe..a9e0b55b43 100644
---
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/RdsProtocol.java
+++
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/impl/RdsProtocol.java
@@ -31,6 +31,8 @@ import io.envoyproxy.envoy.config.route.v3.Route;
import io.envoyproxy.envoy.config.route.v3.RouteAction;
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
import io.envoyproxy.envoy.service.discovery.v3.DiscoveryResponse;
+import io.envoyproxy.envoy.config.route.v3.VirtualHost;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.HashMap;
import java.util.Map;
@@ -66,6 +68,7 @@ public class RdsProtocol extends
AbstractProtocol<RouteResult, DeltaRoute> {
private RouteResult decodeResourceToListener(RouteConfiguration resource) {
Map<String, Set<String>> map = new HashMap<>();
+ Map<String, VirtualHost> rdsVirtualhostMap = new ConcurrentHashMap<>();
resource.getVirtualHostsList()
.forEach(virtualHost -> {
Set<String> cluster = virtualHost.getRoutesList().stream()
@@ -74,9 +77,10 @@ public class RdsProtocol extends
AbstractProtocol<RouteResult, DeltaRoute> {
.collect(Collectors.toSet());
for (String domain : virtualHost.getDomainsList()) {
map.put(domain, cluster);
+ rdsVirtualhostMap.put(domain,virtualHost);
}
});
- return new RouteResult(map);
+ return new RouteResult(map,rdsVirtualhostMap);
}
private static RouteConfiguration unpackRouteConfiguration(Any any) {
diff --git
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/message/RouteResult.java
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/message/RouteResult.java
index d3166c5f17..8824a63248 100644
---
a/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/message/RouteResult.java
+++
b/dubbo-xds/src/main/java/org/apache/dubbo/registry/xds/util/protocol/message/RouteResult.java
@@ -23,18 +23,28 @@ import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import io.envoyproxy.envoy.config.route.v3.VirtualHost;
+
public class RouteResult {
private final Map<String, Set<String>> domainMap;
+ private Map<String, VirtualHost> virtualHostMap;
+
public RouteResult() {
this.domainMap = new ConcurrentHashMap<>();
+ this.virtualHostMap = new ConcurrentHashMap<>();
}
public RouteResult(Map<String, Set<String>> domainMap) {
this.domainMap = domainMap;
+ this.virtualHostMap = new ConcurrentHashMap<>();
}
+ public RouteResult(Map<String, Set<String>> domainMap,Map<String,
VirtualHost> virtualHostMap) {
+ this.domainMap = domainMap;
+ this.virtualHostMap = virtualHostMap;
+ }
public Map<String, Set<String>> getDomainMap() {
return domainMap;
@@ -69,6 +79,16 @@ public class RouteResult {
return Objects.hash(domainMap);
}
+
+ public VirtualHost searchVirtualHost(String domain) {
+ return virtualHostMap.get(domain);
+ }
+
+
+ public void removeVirtualHost(String domain) {
+ virtualHostMap.remove(domain);
+ }
+
@Override
public String toString() {
return "RouteResult{" +
diff --git
a/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/EdsEndpointManager.java
b/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/EdsEndpointManager.java
index e29f9becc8..bc4706b877 100644
---
a/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/EdsEndpointManager.java
+++
b/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/EdsEndpointManager.java
@@ -16,14 +16,15 @@
*/
package org.apache.dubbo.rpc.cluster.router.xds;
-import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.common.utils.ConcurrentHashSet;
-import org.apache.dubbo.registry.xds.util.protocol.message.Endpoint;
-
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
+import org.apache.dubbo.common.utils.CollectionUtils;
+import org.apache.dubbo.common.utils.ConcurrentHashSet;
+import org.apache.dubbo.registry.xds.util.PilotExchanger;
+import org.apache.dubbo.registry.xds.util.protocol.message.Endpoint;
+
public class EdsEndpointManager {
private static final ConcurrentHashMap<String, Set<EdsEndpointListener>>
ENDPOINT_LISTENERS = new ConcurrentHashMap<>();
@@ -56,8 +57,9 @@ public class EdsEndpointManager {
notifyEndpointChange(cluster, endpoints);
});
Consumer<Set<Endpoint>> consumer = EDS_LISTENERS.get(cluster);
-
- //todo control plane subscribe eds
+ if (PilotExchanger.isEnabled()) {
+ PilotExchanger.getInstance().observeEndpoints(cluster, consumer);
+ }
}
public synchronized void unSubscribeEds(String cluster,
EdsEndpointListener listener) {
@@ -75,9 +77,8 @@ public class EdsEndpointManager {
private void doUnsubscribeEds(String cluster) {
Consumer<Set<Endpoint>> consumer = EDS_LISTENERS.remove(cluster);
- if (consumer != null) {
-
- //todo control plane unsubscribe eds
+ if (consumer != null && PilotExchanger.isEnabled()) {
+ PilotExchanger.getInstance().unObserveEndpoints(cluster,consumer);
}
ENDPOINT_DATA_CACHE.remove(cluster);
}
diff --git
a/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/RdsRouteRuleManager.java
b/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/RdsRouteRuleManager.java
index 0d60c20c0f..1f331843d9 100644
---
a/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/RdsRouteRuleManager.java
+++
b/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/RdsRouteRuleManager.java
@@ -16,14 +16,15 @@
*/
package org.apache.dubbo.rpc.cluster.router.xds;
-import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.common.utils.ConcurrentHashSet;
-import org.apache.dubbo.rpc.cluster.router.xds.rule.XdsRouteRule;
-
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import org.apache.dubbo.common.utils.CollectionUtils;
+import org.apache.dubbo.common.utils.ConcurrentHashSet;
+import org.apache.dubbo.registry.xds.util.PilotExchanger;
+import org.apache.dubbo.rpc.cluster.router.xds.rule.XdsRouteRule;
+
public class RdsRouteRuleManager {
@@ -54,7 +55,9 @@ public class RdsRouteRuleManager {
private void doSubscribeRds(String domain) {
RDS_LISTENERS.computeIfAbsent(domain, key -> new
RdsVirtualHostListener(domain, this));
RdsVirtualHostListener rdsVirtualHostListener =
RDS_LISTENERS.get(domain);
- // todo request control plane subscribe rds
+ if (PilotExchanger.isEnabled()) {
+
rdsVirtualHostListener.parseVirtualHost(PilotExchanger.getInstance().getVirtualHost(domain));
+ }
}
public synchronized void unSubscribeRds(String domain,
XdsRouteRuleListener listener) {
@@ -72,9 +75,8 @@ public class RdsRouteRuleManager {
private void doUnsubscribeRds(String domain) {
RdsVirtualHostListener rdsVirtualHostListener =
RDS_LISTENERS.remove(domain);
- if (rdsVirtualHostListener != null) {
-
- // todo request control plane unsubscribe rds
+ if (rdsVirtualHostListener != null && PilotExchanger.isEnabled()) {
+ PilotExchanger.getInstance().unObserveRds(domain);
}
ROUTE_DATA_CACHE.remove(domain);
}
diff --git
a/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouter.java
b/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouter.java
index 17a4af0f85..299fcd6417 100644
---
a/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouter.java
+++
b/dubbo-xds/src/main/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouter.java
@@ -16,11 +16,21 @@
*/
package org.apache.dubbo.rpc.cluster.router.xds;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Collectors;
+
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.ConcurrentHashSet;
import org.apache.dubbo.common.utils.Holder;
import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.registry.xds.util.PilotExchanger;
import org.apache.dubbo.registry.xds.util.protocol.message.Endpoint;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
@@ -36,15 +46,6 @@ import
org.apache.dubbo.rpc.cluster.router.xds.rule.HttpRequestMatch;
import org.apache.dubbo.rpc.cluster.router.xds.rule.PathMatcher;
import org.apache.dubbo.rpc.cluster.router.xds.rule.XdsRouteRule;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ThreadLocalRandom;
-import java.util.stream.Collectors;
-
public class XdsRouter<T> extends AbstractStateRouter<T> implements
XdsRouteRuleListener, EdsEndpointListener {
private Set<String> subscribeApplications;
@@ -61,8 +62,11 @@ public class XdsRouter<T> extends AbstractStateRouter<T>
implements XdsRouteRule
private static final String BINARY_HEADER_SUFFIX = "-bin";
+ private final boolean isEnable;
+
public XdsRouter(URL url) {
super(url);
+ isEnable = PilotExchanger.isEnabled();
rdsRouteRuleManager =
url.getOrDefaultApplicationModel().getBeanFactory().getBean(RdsRouteRuleManager.class);
edsEndpointManager =
url.getOrDefaultApplicationModel().getBeanFactory().getBean(EdsEndpointManager.class);
subscribeApplications = new ConcurrentHashSet<>();
@@ -74,8 +78,9 @@ public class XdsRouter<T> extends AbstractStateRouter<T>
implements XdsRouteRule
/**
* @deprecated only for uts
*/
- protected XdsRouter(URL url, RdsRouteRuleManager rdsRouteRuleManager,
EdsEndpointManager edsEndpointManager) {
+ protected XdsRouter(URL url, RdsRouteRuleManager rdsRouteRuleManager,
EdsEndpointManager edsEndpointManager, boolean isEnable) {
super(url);
+ this.isEnable = isEnable;
this.rdsRouteRuleManager = rdsRouteRuleManager;
this.edsEndpointManager = edsEndpointManager;
subscribeApplications = new ConcurrentHashSet<>();
@@ -88,6 +93,13 @@ public class XdsRouter<T> extends AbstractStateRouter<T>
implements XdsRouteRule
protected BitList<Invoker<T>> doRoute(BitList<Invoker<T>> invokers, URL
url, Invocation invocation,
boolean needToPrintMessage,
Holder<RouterSnapshotNode<T>> nodeHolder,
Holder<String> messageHolder) throws
RpcException {
+ if (!isEnable) {
+ if (needToPrintMessage) {
+ messageHolder.set("Directly Return. Reason: Pilot exchanger
has not been initialized, may not in mesh mode.");
+ }
+ return invokers;
+ }
+
if (CollectionUtils.isEmpty(invokers)) {
if (needToPrintMessage) {
messageHolder.set("Directly Return. Reason: Invokers from
previous router is empty.");
diff --git
a/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java
b/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java
index e48ae10ace..2e74193171 100644
---
a/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java
+++
b/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java
@@ -16,6 +16,10 @@
*/
package org.apache.dubbo.rpc.cluster.router.xds;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.Holder;
import org.apache.dubbo.common.utils.StringUtils;
@@ -25,21 +29,18 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider;
import org.apache.dubbo.rpc.cluster.router.state.BitList;
import org.apache.dubbo.rpc.cluster.router.xds.rule.DestinationSubset;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
import com.google.protobuf.UInt32Value;
+
import io.envoyproxy.envoy.config.route.v3.HeaderMatcher;
import io.envoyproxy.envoy.config.route.v3.Route;
import io.envoyproxy.envoy.config.route.v3.RouteAction;
import io.envoyproxy.envoy.config.route.v3.RouteMatch;
import io.envoyproxy.envoy.config.route.v3.VirtualHost;
import io.envoyproxy.envoy.config.route.v3.WeightedCluster;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -80,7 +81,7 @@ public class XdsRouteTest {
@Test
public void testNotifyInvoker() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
xdsRouter.notify(null);
assertEquals(0, xdsRouter.getSubscribeApplications().size());
@@ -106,7 +107,7 @@ public class XdsRouteTest {
@Test
public void testRuleChange() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
String appName = "app1";
String cluster1 = "cluster-test1";
String cluster2 = "cluster-test2";
@@ -141,7 +142,7 @@ public class XdsRouteTest {
@Test
public void testEndpointChange() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
String appName = "app1";
String cluster1 = "cluster-test1";
BitList<Invoker<Object>> invokers = new
BitList<>(Arrays.asList(createInvoker(appName, "1.1.1.1:20880")
@@ -177,7 +178,7 @@ public class XdsRouteTest {
@Test
public void testRouteNotMatch() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
String appName = "app1";
BitList<Invoker<Object>> invokers = new
BitList<>(Arrays.asList(createInvoker(appName, "1.1.1.1:20880")
, createInvoker(appName, "2.2.2.2:20880")));
@@ -189,7 +190,7 @@ public class XdsRouteTest {
@Test
public void testRoutePathMatch() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
String appName = "app1";
String cluster1 = "cluster-test1";
Invoker<Object> invoker1 = createInvoker(appName, "1.1.1.1:20880");
@@ -229,7 +230,7 @@ public class XdsRouteTest {
@Test
public void testRouteHeadMatch() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
String appName = "app1";
String cluster1 = "cluster-test1";
Invoker<Object> invoker1 = createInvoker(appName, "1.1.1.1:20880");
@@ -267,7 +268,7 @@ public class XdsRouteTest {
@Test
public void testRouteWeightCluster() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
String appName = "app1";
String cluster1 = "cluster-test1";
String cluster2 = "cluster-test2";
@@ -321,7 +322,7 @@ public class XdsRouteTest {
@Test
public void testRouteMultiApp() {
- XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager);
+ XdsRouter<Object> xdsRouter = new XdsRouter<>(url,
rdsRouteRuleManager, edsEndpointManager, true);
String appName1 = "app1";
String appName2 = "app2";
String cluster1 = "cluster-test1";