mirror of https://github.com/grpc/grpc-java.git
xds: remove environmental variables (#10055)
This commit is contained in:
parent
ebc84c209f
commit
8b9ae27cdf
|
|
@ -92,11 +92,11 @@ class LoadBalancerConfigFactory {
|
|||
* @throws ResourceInvalidException If the {@link Cluster} has an invalid LB configuration.
|
||||
*/
|
||||
static ImmutableMap<String, ?> newConfig(Cluster cluster, boolean enableLeastRequest,
|
||||
boolean enableCustomLbConfig, boolean enableWrr)
|
||||
boolean enableWrr)
|
||||
throws ResourceInvalidException {
|
||||
// The new load_balancing_policy will always be used if it is set, but for backward
|
||||
// compatibility we will fall back to using the old lb_policy field if the new field is not set.
|
||||
if (cluster.hasLoadBalancingPolicy() && enableCustomLbConfig) {
|
||||
if (cluster.hasLoadBalancingPolicy()) {
|
||||
try {
|
||||
return LoadBalancingPolicyConverter.convertToServiceConfig(cluster.getLoadBalancingPolicy(),
|
||||
0, enableWrr);
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
|
|||
CdsUpdate.Builder updateBuilder = structOrError.getStruct();
|
||||
|
||||
ImmutableMap<String, ?> lbPolicyConfig = LoadBalancerConfigFactory.newConfig(cluster,
|
||||
enableLeastRequest, enableCustomLbConfig, enableWrr);
|
||||
enableLeastRequest, enableWrr);
|
||||
|
||||
// Validate the LB config by trying to parse it with the corresponding LB provider.
|
||||
LbConfig lbConfig = ServiceConfigUtil.unwrapLoadBalancingConfig(lbPolicyConfig);
|
||||
|
|
@ -216,7 +216,7 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
|
|||
}
|
||||
}
|
||||
|
||||
if (cluster.hasOutlierDetection() && enableOutlierDetection) {
|
||||
if (cluster.hasOutlierDetection()) {
|
||||
try {
|
||||
outlierDetection = OutlierDetection.fromEnvoyOutlierDetection(
|
||||
validateOutlierDetection(cluster.getOutlierDetection()));
|
||||
|
|
|
|||
|
|
@ -103,14 +103,14 @@ class XdsListenerResource extends XdsResourceType<LdsUpdate> {
|
|||
|
||||
if (listener.hasApiListener()) {
|
||||
return processClientSideListener(
|
||||
listener, args, enableFaultInjection);
|
||||
listener, args);
|
||||
} else {
|
||||
return processServerSideListener(
|
||||
listener, args, enableRbac);
|
||||
listener, args);
|
||||
}
|
||||
}
|
||||
|
||||
private LdsUpdate processClientSideListener(Listener listener, Args args, boolean parseHttpFilter)
|
||||
private LdsUpdate processClientSideListener(Listener listener, Args args)
|
||||
throws ResourceInvalidException {
|
||||
// Unpack HttpConnectionManager from the Listener.
|
||||
HttpConnectionManager hcm;
|
||||
|
|
@ -123,23 +123,23 @@ class XdsListenerResource extends XdsResourceType<LdsUpdate> {
|
|||
"Could not parse HttpConnectionManager config from ApiListener", e);
|
||||
}
|
||||
return LdsUpdate.forApiListener(parseHttpConnectionManager(
|
||||
hcm, args.filterRegistry, parseHttpFilter, true /* isForClient */));
|
||||
hcm, args.filterRegistry, true /* isForClient */));
|
||||
}
|
||||
|
||||
private LdsUpdate processServerSideListener(Listener proto, Args args, boolean parseHttpFilter)
|
||||
private LdsUpdate processServerSideListener(Listener proto, Args args)
|
||||
throws ResourceInvalidException {
|
||||
Set<String> certProviderInstances = null;
|
||||
if (args.bootstrapInfo != null && args.bootstrapInfo.certProviders() != null) {
|
||||
certProviderInstances = args.bootstrapInfo.certProviders().keySet();
|
||||
}
|
||||
return LdsUpdate.forTcpListener(parseServerSideListener(proto, args.tlsContextManager,
|
||||
args.filterRegistry, certProviderInstances, parseHttpFilter));
|
||||
args.filterRegistry, certProviderInstances));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static EnvoyServerProtoData.Listener parseServerSideListener(
|
||||
Listener proto, TlsContextManager tlsContextManager,
|
||||
FilterRegistry filterRegistry, Set<String> certProviderInstances, boolean parseHttpFilter)
|
||||
FilterRegistry filterRegistry, Set<String> certProviderInstances)
|
||||
throws ResourceInvalidException {
|
||||
if (!proto.getTrafficDirection().equals(TrafficDirection.INBOUND)
|
||||
&& !proto.getTrafficDirection().equals(TrafficDirection.UNSPECIFIED)) {
|
||||
|
|
@ -177,13 +177,13 @@ class XdsListenerResource extends XdsResourceType<LdsUpdate> {
|
|||
for (io.envoyproxy.envoy.config.listener.v3.FilterChain fc : proto.getFilterChainsList()) {
|
||||
filterChains.add(
|
||||
parseFilterChain(fc, tlsContextManager, filterRegistry, uniqueSet,
|
||||
certProviderInstances, parseHttpFilter));
|
||||
certProviderInstances));
|
||||
}
|
||||
FilterChain defaultFilterChain = null;
|
||||
if (proto.hasDefaultFilterChain()) {
|
||||
defaultFilterChain = parseFilterChain(
|
||||
proto.getDefaultFilterChain(), tlsContextManager, filterRegistry,
|
||||
null, certProviderInstances, parseHttpFilter);
|
||||
null, certProviderInstances);
|
||||
}
|
||||
|
||||
return EnvoyServerProtoData.Listener.create(
|
||||
|
|
@ -194,7 +194,7 @@ class XdsListenerResource extends XdsResourceType<LdsUpdate> {
|
|||
static FilterChain parseFilterChain(
|
||||
io.envoyproxy.envoy.config.listener.v3.FilterChain proto,
|
||||
TlsContextManager tlsContextManager, FilterRegistry filterRegistry,
|
||||
Set<FilterChainMatch> uniqueSet, Set<String> certProviderInstances, boolean parseHttpFilters)
|
||||
Set<FilterChainMatch> uniqueSet, Set<String> certProviderInstances)
|
||||
throws ResourceInvalidException {
|
||||
if (proto.getFiltersCount() != 1) {
|
||||
throw new ResourceInvalidException("FilterChain " + proto.getName()
|
||||
|
|
@ -221,7 +221,7 @@ class XdsListenerResource extends XdsResourceType<LdsUpdate> {
|
|||
+ filter.getName() + " failed to unpack message", e);
|
||||
}
|
||||
io.grpc.xds.HttpConnectionManager httpConnectionManager = parseHttpConnectionManager(
|
||||
hcmProto, filterRegistry, parseHttpFilters, false /* isForClient */);
|
||||
hcmProto, filterRegistry, false /* isForClient */);
|
||||
|
||||
EnvoyServerProtoData.DownstreamTlsContext downstreamTlsContext = null;
|
||||
if (proto.hasTransportSocket()) {
|
||||
|
|
@ -453,12 +453,12 @@ class XdsListenerResource extends XdsResourceType<LdsUpdate> {
|
|||
@VisibleForTesting
|
||||
static io.grpc.xds.HttpConnectionManager parseHttpConnectionManager(
|
||||
HttpConnectionManager proto, FilterRegistry filterRegistry,
|
||||
boolean parseHttpFilter, boolean isForClient) throws ResourceInvalidException {
|
||||
if (enableRbac && proto.getXffNumTrustedHops() != 0) {
|
||||
boolean isForClient) throws ResourceInvalidException {
|
||||
if (proto.getXffNumTrustedHops() != 0) {
|
||||
throw new ResourceInvalidException(
|
||||
"HttpConnectionManager with xff_num_trusted_hops unsupported");
|
||||
}
|
||||
if (enableRbac && !proto.getOriginalIpDetectionExtensionsList().isEmpty()) {
|
||||
if (!proto.getOriginalIpDetectionExtensionsList().isEmpty()) {
|
||||
throw new ResourceInvalidException("HttpConnectionManager with "
|
||||
+ "original_ip_detection_extensions unsupported");
|
||||
}
|
||||
|
|
@ -472,48 +472,45 @@ class XdsListenerResource extends XdsResourceType<LdsUpdate> {
|
|||
}
|
||||
|
||||
// Parse http filters.
|
||||
List<Filter.NamedFilterConfig> filterConfigs = null;
|
||||
if (parseHttpFilter) {
|
||||
if (proto.getHttpFiltersList().isEmpty()) {
|
||||
throw new ResourceInvalidException("Missing HttpFilter in HttpConnectionManager.");
|
||||
if (proto.getHttpFiltersList().isEmpty()) {
|
||||
throw new ResourceInvalidException("Missing HttpFilter in HttpConnectionManager.");
|
||||
}
|
||||
List<Filter.NamedFilterConfig> filterConfigs = new ArrayList<>();
|
||||
Set<String> names = new HashSet<>();
|
||||
for (int i = 0; i < proto.getHttpFiltersCount(); i++) {
|
||||
io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter
|
||||
httpFilter = proto.getHttpFiltersList().get(i);
|
||||
String filterName = httpFilter.getName();
|
||||
if (!names.add(filterName)) {
|
||||
throw new ResourceInvalidException(
|
||||
"HttpConnectionManager contains duplicate HttpFilter: " + filterName);
|
||||
}
|
||||
filterConfigs = new ArrayList<>();
|
||||
Set<String> names = new HashSet<>();
|
||||
for (int i = 0; i < proto.getHttpFiltersCount(); i++) {
|
||||
io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter
|
||||
httpFilter = proto.getHttpFiltersList().get(i);
|
||||
String filterName = httpFilter.getName();
|
||||
if (!names.add(filterName)) {
|
||||
throw new ResourceInvalidException(
|
||||
"HttpConnectionManager contains duplicate HttpFilter: " + filterName);
|
||||
}
|
||||
StructOrError<Filter.FilterConfig> filterConfig =
|
||||
parseHttpFilter(httpFilter, filterRegistry, isForClient);
|
||||
if ((i == proto.getHttpFiltersCount() - 1)
|
||||
&& (filterConfig == null || !isTerminalFilter(filterConfig.getStruct()))) {
|
||||
throw new ResourceInvalidException("The last HttpFilter must be a terminal filter: "
|
||||
+ filterName);
|
||||
}
|
||||
if (filterConfig == null) {
|
||||
continue;
|
||||
}
|
||||
if (filterConfig.getErrorDetail() != null) {
|
||||
throw new ResourceInvalidException(
|
||||
"HttpConnectionManager contains invalid HttpFilter: "
|
||||
+ filterConfig.getErrorDetail());
|
||||
}
|
||||
if ((i < proto.getHttpFiltersCount() - 1) && isTerminalFilter(filterConfig.getStruct())) {
|
||||
throw new ResourceInvalidException("A terminal HttpFilter must be the last filter: "
|
||||
+ filterName);
|
||||
}
|
||||
filterConfigs.add(new Filter.NamedFilterConfig(filterName, filterConfig.getStruct()));
|
||||
StructOrError<Filter.FilterConfig> filterConfig =
|
||||
parseHttpFilter(httpFilter, filterRegistry, isForClient);
|
||||
if ((i == proto.getHttpFiltersCount() - 1)
|
||||
&& (filterConfig == null || !isTerminalFilter(filterConfig.getStruct()))) {
|
||||
throw new ResourceInvalidException("The last HttpFilter must be a terminal filter: "
|
||||
+ filterName);
|
||||
}
|
||||
if (filterConfig == null) {
|
||||
continue;
|
||||
}
|
||||
if (filterConfig.getErrorDetail() != null) {
|
||||
throw new ResourceInvalidException(
|
||||
"HttpConnectionManager contains invalid HttpFilter: "
|
||||
+ filterConfig.getErrorDetail());
|
||||
}
|
||||
if ((i < proto.getHttpFiltersCount() - 1) && isTerminalFilter(filterConfig.getStruct())) {
|
||||
throw new ResourceInvalidException("A terminal HttpFilter must be the last filter: "
|
||||
+ filterName);
|
||||
}
|
||||
filterConfigs.add(new Filter.NamedFilterConfig(filterName, filterConfig.getStruct()));
|
||||
}
|
||||
|
||||
// Parse inlined RouteConfiguration or RDS.
|
||||
if (proto.hasRouteConfig()) {
|
||||
List<VirtualHost> virtualHosts = extractVirtualHosts(
|
||||
proto.getRouteConfig(), filterRegistry, parseHttpFilter);
|
||||
proto.getRouteConfig(), filterRegistry);
|
||||
return io.grpc.xds.HttpConnectionManager.forVirtualHosts(
|
||||
maxStreamDuration, virtualHosts, filterConfigs);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,12 +47,6 @@ abstract class XdsResourceType<T extends ResourceUpdate> {
|
|||
@VisibleForTesting
|
||||
static final String HASH_POLICY_FILTER_STATE_KEY = "io.grpc.channel_id";
|
||||
@VisibleForTesting
|
||||
static boolean enableFaultInjection = getFlag("GRPC_XDS_EXPERIMENTAL_FAULT_INJECTION", true);
|
||||
@VisibleForTesting
|
||||
static boolean enableRetry = getFlag("GRPC_XDS_EXPERIMENTAL_ENABLE_RETRY", true);
|
||||
@VisibleForTesting
|
||||
static boolean enableRbac = getFlag("GRPC_XDS_EXPERIMENTAL_RBAC", true);
|
||||
@VisibleForTesting
|
||||
static boolean enableRouteLookup = getFlag("GRPC_EXPERIMENTAL_XDS_RLS_LB", false);
|
||||
@VisibleForTesting
|
||||
static boolean enableLeastRequest =
|
||||
|
|
@ -62,12 +56,6 @@ abstract class XdsResourceType<T extends ResourceUpdate> {
|
|||
|
||||
@VisibleForTesting
|
||||
static boolean enableWrr = getFlag("GRPC_EXPERIMENTAL_XDS_WRR_LB", false);
|
||||
|
||||
@VisibleForTesting
|
||||
static boolean enableCustomLbConfig = getFlag("GRPC_EXPERIMENTAL_XDS_CUSTOM_LB_CONFIG", true);
|
||||
@VisibleForTesting
|
||||
static boolean enableOutlierDetection = getFlag("GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION",
|
||||
true);
|
||||
static final String TYPE_URL_CLUSTER_CONFIG =
|
||||
"type.googleapis.com/envoy.extensions.clusters.aggregate.v3.ClusterConfig";
|
||||
static final String TYPE_URL_TYPED_STRUCT_UDPA =
|
||||
|
|
|
|||
|
|
@ -119,17 +119,17 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
throw new ResourceInvalidException("Invalid message type: " + unpackedMessage.getClass());
|
||||
}
|
||||
return processRouteConfiguration((RouteConfiguration) unpackedMessage,
|
||||
args.filterRegistry, enableFaultInjection);
|
||||
args.filterRegistry);
|
||||
}
|
||||
|
||||
private static RdsUpdate processRouteConfiguration(
|
||||
RouteConfiguration routeConfig, FilterRegistry filterRegistry, boolean parseHttpFilter)
|
||||
RouteConfiguration routeConfig, FilterRegistry filterRegistry)
|
||||
throws ResourceInvalidException {
|
||||
return new RdsUpdate(extractVirtualHosts(routeConfig, filterRegistry, parseHttpFilter));
|
||||
return new RdsUpdate(extractVirtualHosts(routeConfig, filterRegistry));
|
||||
}
|
||||
|
||||
static List<VirtualHost> extractVirtualHosts(
|
||||
RouteConfiguration routeConfig, FilterRegistry filterRegistry, boolean parseHttpFilter)
|
||||
RouteConfiguration routeConfig, FilterRegistry filterRegistry)
|
||||
throws ResourceInvalidException {
|
||||
Map<String, PluginConfig> pluginConfigMap = new HashMap<>();
|
||||
ImmutableSet.Builder<String> optionalPlugins = ImmutableSet.builder();
|
||||
|
|
@ -154,7 +154,7 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
for (io.envoyproxy.envoy.config.route.v3.VirtualHost virtualHostProto
|
||||
: routeConfig.getVirtualHostsList()) {
|
||||
StructOrError<VirtualHost> virtualHost =
|
||||
parseVirtualHost(virtualHostProto, filterRegistry, parseHttpFilter, pluginConfigMap,
|
||||
parseVirtualHost(virtualHostProto, filterRegistry, pluginConfigMap,
|
||||
optionalPlugins.build());
|
||||
if (virtualHost.getErrorDetail() != null) {
|
||||
throw new ResourceInvalidException(
|
||||
|
|
@ -167,13 +167,13 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
|
||||
private static StructOrError<VirtualHost> parseVirtualHost(
|
||||
io.envoyproxy.envoy.config.route.v3.VirtualHost proto, FilterRegistry filterRegistry,
|
||||
boolean parseHttpFilter, Map<String, PluginConfig> pluginConfigMap,
|
||||
Map<String, PluginConfig> pluginConfigMap,
|
||||
Set<String> optionalPlugins) {
|
||||
String name = proto.getName();
|
||||
List<Route> routes = new ArrayList<>(proto.getRoutesCount());
|
||||
for (io.envoyproxy.envoy.config.route.v3.Route routeProto : proto.getRoutesList()) {
|
||||
StructOrError<Route> route = parseRoute(
|
||||
routeProto, filterRegistry, parseHttpFilter, pluginConfigMap, optionalPlugins);
|
||||
routeProto, filterRegistry, pluginConfigMap, optionalPlugins);
|
||||
if (route == null) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -183,10 +183,6 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
}
|
||||
routes.add(route.getStruct());
|
||||
}
|
||||
if (!parseHttpFilter) {
|
||||
return StructOrError.fromStruct(VirtualHost.create(
|
||||
name, proto.getDomainsList(), routes, new HashMap<String, Filter.FilterConfig>()));
|
||||
}
|
||||
StructOrError<Map<String, Filter.FilterConfig>> overrideConfigs =
|
||||
parseOverrideFilterConfigs(proto.getTypedPerFilterConfigMap(), filterRegistry);
|
||||
if (overrideConfigs.getErrorDetail() != null) {
|
||||
|
|
@ -258,7 +254,7 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
@Nullable
|
||||
static StructOrError<Route> parseRoute(
|
||||
io.envoyproxy.envoy.config.route.v3.Route proto, FilterRegistry filterRegistry,
|
||||
boolean parseHttpFilter, Map<String, PluginConfig> pluginConfigMap,
|
||||
Map<String, PluginConfig> pluginConfigMap,
|
||||
Set<String> optionalPlugins) {
|
||||
StructOrError<RouteMatch> routeMatch = parseRouteMatch(proto.getMatch());
|
||||
if (routeMatch == null) {
|
||||
|
|
@ -270,22 +266,19 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
+ routeMatch.getErrorDetail());
|
||||
}
|
||||
|
||||
Map<String, FilterConfig> overrideConfigs = Collections.emptyMap();
|
||||
if (parseHttpFilter) {
|
||||
StructOrError<Map<String, FilterConfig>> overrideConfigsOrError =
|
||||
parseOverrideFilterConfigs(proto.getTypedPerFilterConfigMap(), filterRegistry);
|
||||
if (overrideConfigsOrError.getErrorDetail() != null) {
|
||||
return StructOrError.fromError(
|
||||
"Route [" + proto.getName() + "] contains invalid HttpFilter config: "
|
||||
+ overrideConfigsOrError.getErrorDetail());
|
||||
}
|
||||
overrideConfigs = overrideConfigsOrError.getStruct();
|
||||
StructOrError<Map<String, FilterConfig>> overrideConfigsOrError =
|
||||
parseOverrideFilterConfigs(proto.getTypedPerFilterConfigMap(), filterRegistry);
|
||||
if (overrideConfigsOrError.getErrorDetail() != null) {
|
||||
return StructOrError.fromError(
|
||||
"Route [" + proto.getName() + "] contains invalid HttpFilter config: "
|
||||
+ overrideConfigsOrError.getErrorDetail());
|
||||
}
|
||||
Map<String, FilterConfig> overrideConfigs = overrideConfigsOrError.getStruct();
|
||||
|
||||
switch (proto.getActionCase()) {
|
||||
case ROUTE:
|
||||
StructOrError<RouteAction> routeAction =
|
||||
parseRouteAction(proto.getRoute(), filterRegistry, parseHttpFilter, pluginConfigMap,
|
||||
parseRouteAction(proto.getRoute(), filterRegistry, pluginConfigMap,
|
||||
optionalPlugins);
|
||||
if (routeAction == null) {
|
||||
return null;
|
||||
|
|
@ -411,7 +404,7 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
@Nullable
|
||||
static StructOrError<RouteAction> parseRouteAction(
|
||||
io.envoyproxy.envoy.config.route.v3.RouteAction proto, FilterRegistry filterRegistry,
|
||||
boolean parseHttpFilter, Map<String, PluginConfig> pluginConfigMap,
|
||||
Map<String, PluginConfig> pluginConfigMap,
|
||||
Set<String> optionalPlugins) {
|
||||
Long timeoutNano = null;
|
||||
if (proto.hasMaxStreamDuration()) {
|
||||
|
|
@ -424,7 +417,7 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
}
|
||||
}
|
||||
RetryPolicy retryPolicy = null;
|
||||
if (enableRetry && proto.hasRetryPolicy()) {
|
||||
if (proto.hasRetryPolicy()) {
|
||||
StructOrError<RetryPolicy> retryPolicyOrError = parseRetryPolicy(proto.getRetryPolicy());
|
||||
if (retryPolicyOrError != null) {
|
||||
if (retryPolicyOrError.getErrorDetail() != null) {
|
||||
|
|
@ -482,7 +475,7 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
for (io.envoyproxy.envoy.config.route.v3.WeightedCluster.ClusterWeight clusterWeight
|
||||
: clusterWeights) {
|
||||
StructOrError<ClusterWeight> clusterWeightOrError =
|
||||
parseClusterWeight(clusterWeight, filterRegistry, parseHttpFilter);
|
||||
parseClusterWeight(clusterWeight, filterRegistry);
|
||||
if (clusterWeightOrError.getErrorDetail() != null) {
|
||||
return StructOrError.fromError("RouteAction contains invalid ClusterWeight: "
|
||||
+ clusterWeightOrError.getErrorDetail());
|
||||
|
|
@ -586,11 +579,7 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
|
|||
@VisibleForTesting
|
||||
static StructOrError<VirtualHost.Route.RouteAction.ClusterWeight> parseClusterWeight(
|
||||
io.envoyproxy.envoy.config.route.v3.WeightedCluster.ClusterWeight proto,
|
||||
FilterRegistry filterRegistry, boolean parseHttpFilter) {
|
||||
if (!parseHttpFilter) {
|
||||
return StructOrError.fromStruct(ClusterWeight.create(proto.getName(),
|
||||
proto.getWeight().getValue(), new HashMap<String, Filter.FilterConfig>()));
|
||||
}
|
||||
FilterRegistry filterRegistry) {
|
||||
StructOrError<Map<String, Filter.FilterConfig>> overrideConfigs =
|
||||
parseOverrideFilterConfigs(proto.getTypedPerFilterConfigMap(), filterRegistry);
|
||||
if (overrideConfigs.getErrorDetail() != null) {
|
||||
|
|
|
|||
|
|
@ -142,14 +142,14 @@ public class LoadBalancerConfigFactoryTest {
|
|||
public void roundRobin() throws ResourceInvalidException {
|
||||
Cluster cluster = newCluster(buildWrrPolicy(ROUND_ROBIN_POLICY));
|
||||
|
||||
assertThat(newLbConfig(cluster, true, true, true)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
assertThat(newLbConfig(cluster, true, true)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void weightedRoundRobin() throws ResourceInvalidException {
|
||||
Cluster cluster = newCluster(buildWrrPolicy(WRR_POLICY));
|
||||
|
||||
assertThat(newLbConfig(cluster, true, true, true)).isEqualTo(VALID_WRR_CONFIG);
|
||||
assertThat(newLbConfig(cluster, true, true)).isEqualTo(VALID_WRR_CONFIG);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -166,7 +166,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
.build())
|
||||
.build()));
|
||||
|
||||
assertResourceInvalidExceptionThrown(cluster, true, true, true,
|
||||
assertResourceInvalidExceptionThrown(cluster, true, true,
|
||||
"Invalid duration in weighted round robin config");
|
||||
}
|
||||
|
||||
|
|
@ -174,14 +174,14 @@ public class LoadBalancerConfigFactoryTest {
|
|||
public void weightedRoundRobin_fallback_roundrobin() throws ResourceInvalidException {
|
||||
Cluster cluster = newCluster(buildWrrPolicy(WRR_POLICY, ROUND_ROBIN_POLICY));
|
||||
|
||||
assertThat(newLbConfig(cluster, true, true, false)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
assertThat(newLbConfig(cluster, true, false)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void roundRobin_legacy() throws ResourceInvalidException {
|
||||
Cluster cluster = Cluster.newBuilder().setLbPolicy(LbPolicy.ROUND_ROBIN).build();
|
||||
|
||||
assertThat(newLbConfig(cluster, true, true, true)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
assertThat(newLbConfig(cluster, true, true)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -190,7 +190,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
.setLoadBalancingPolicy(LoadBalancingPolicy.newBuilder().addPolicies(RING_HASH_POLICY))
|
||||
.build();
|
||||
|
||||
assertThat(newLbConfig(cluster, true, true, true)).isEqualTo(VALID_RING_HASH_CONFIG);
|
||||
assertThat(newLbConfig(cluster, true, true)).isEqualTo(VALID_RING_HASH_CONFIG);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -200,7 +200,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
.setMaximumRingSize(UInt64Value.of(RING_HASH_MAX_RING_SIZE))
|
||||
.setHashFunction(HashFunction.XX_HASH)).build();
|
||||
|
||||
assertThat(newLbConfig(cluster, true, true, true)).isEqualTo(VALID_RING_HASH_CONFIG);
|
||||
assertThat(newLbConfig(cluster, true, true)).isEqualTo(VALID_RING_HASH_CONFIG);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -212,7 +212,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
.setMaximumRingSize(UInt64Value.of(RING_HASH_MAX_RING_SIZE))
|
||||
.setHashFunction(RingHash.HashFunction.MURMUR_HASH_2).build()))).build());
|
||||
|
||||
assertResourceInvalidExceptionThrown(cluster, true, true, true, "Invalid ring hash function");
|
||||
assertResourceInvalidExceptionThrown(cluster, true, true, "Invalid ring hash function");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -220,7 +220,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
Cluster cluster = Cluster.newBuilder().setLbPolicy(LbPolicy.RING_HASH).setRingHashLbConfig(
|
||||
RingHashLbConfig.newBuilder().setHashFunction(HashFunction.MURMUR_HASH_2)).build();
|
||||
|
||||
assertResourceInvalidExceptionThrown(cluster, true, true, true, "invalid ring hash function");
|
||||
assertResourceInvalidExceptionThrown(cluster, true, true, "invalid ring hash function");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -229,7 +229,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
.setLoadBalancingPolicy(LoadBalancingPolicy.newBuilder().addPolicies(LEAST_REQUEST_POLICY))
|
||||
.build();
|
||||
|
||||
assertThat(newLbConfig(cluster, true, true, true)).isEqualTo(VALID_LEAST_REQUEST_CONFIG);
|
||||
assertThat(newLbConfig(cluster, true, true)).isEqualTo(VALID_LEAST_REQUEST_CONFIG);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -241,7 +241,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
LeastRequestLbConfig.newBuilder()
|
||||
.setChoiceCount(UInt32Value.of(LEAST_REQUEST_CHOICE_COUNT))).build();
|
||||
|
||||
LbConfig lbConfig = newLbConfig(cluster, true, true, true);
|
||||
LbConfig lbConfig = newLbConfig(cluster, true, true);
|
||||
assertThat(lbConfig.getPolicyName()).isEqualTo("wrr_locality_experimental");
|
||||
|
||||
List<LbConfig> childConfigs = ServiceConfigUtil.unwrapLoadBalancingConfigList(
|
||||
|
|
@ -258,14 +258,14 @@ public class LoadBalancerConfigFactoryTest {
|
|||
|
||||
Cluster cluster = Cluster.newBuilder().setLbPolicy(LbPolicy.LEAST_REQUEST).build();
|
||||
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true, true, "unsupported lb policy");
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true, "unsupported lb policy");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customRootLb_providerRegistered() throws ResourceInvalidException {
|
||||
LoadBalancerRegistry.getDefaultRegistry().register(CUSTOM_POLICY_PROVIDER);
|
||||
|
||||
assertThat(newLbConfig(newCluster(CUSTOM_POLICY), false, true,
|
||||
assertThat(newLbConfig(newCluster(CUSTOM_POLICY), false,
|
||||
true)).isEqualTo(VALID_CUSTOM_CONFIG);
|
||||
}
|
||||
|
||||
|
|
@ -275,7 +275,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
.setLoadBalancingPolicy(LoadBalancingPolicy.newBuilder().addPolicies(CUSTOM_POLICY))
|
||||
.build();
|
||||
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true, true,"Invalid LoadBalancingPolicy");
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true,"Invalid LoadBalancingPolicy");
|
||||
}
|
||||
|
||||
// When a provider for the endpoint picking custom policy is available, the configuration should
|
||||
|
|
@ -287,7 +287,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
Cluster cluster = Cluster.newBuilder().setLoadBalancingPolicy(LoadBalancingPolicy.newBuilder()
|
||||
.addPolicies(buildWrrPolicy(CUSTOM_POLICY, ROUND_ROBIN_POLICY))).build();
|
||||
|
||||
assertThat(newLbConfig(cluster, false, true, true)).isEqualTo(VALID_CUSTOM_CONFIG_IN_WRR);
|
||||
assertThat(newLbConfig(cluster, false, true)).isEqualTo(VALID_CUSTOM_CONFIG_IN_WRR);
|
||||
}
|
||||
|
||||
// When a provider for the endpoint picking custom policy is available, the configuration should
|
||||
|
|
@ -299,7 +299,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
Cluster cluster = Cluster.newBuilder().setLoadBalancingPolicy(LoadBalancingPolicy.newBuilder()
|
||||
.addPolicies(buildWrrPolicy(CUSTOM_POLICY_UDPA, ROUND_ROBIN_POLICY))).build();
|
||||
|
||||
assertThat(newLbConfig(cluster, false, true, true)).isEqualTo(VALID_CUSTOM_CONFIG_IN_WRR);
|
||||
assertThat(newLbConfig(cluster, false, true)).isEqualTo(VALID_CUSTOM_CONFIG_IN_WRR);
|
||||
}
|
||||
|
||||
// When a provider for the custom wrr_locality child policy is NOT available, we should fall back
|
||||
|
|
@ -309,7 +309,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
Cluster cluster = Cluster.newBuilder().setLoadBalancingPolicy(LoadBalancingPolicy.newBuilder()
|
||||
.addPolicies(buildWrrPolicy(CUSTOM_POLICY, ROUND_ROBIN_POLICY))).build();
|
||||
|
||||
assertThat(newLbConfig(cluster, false, true, true)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
assertThat(newLbConfig(cluster, false, true)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
}
|
||||
|
||||
// When a provider for the custom wrr_locality child policy is NOT available and no alternative
|
||||
|
|
@ -319,18 +319,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
Cluster cluster = Cluster.newBuilder().setLoadBalancingPolicy(
|
||||
LoadBalancingPolicy.newBuilder().addPolicies(buildWrrPolicy(CUSTOM_POLICY))).build();
|
||||
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true, true, "Invalid LoadBalancingPolicy");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customConfig_notEnabled() throws ResourceInvalidException {
|
||||
Cluster cluster = Cluster.newBuilder()
|
||||
.setLoadBalancingPolicy(
|
||||
LoadBalancingPolicy.newBuilder().addPolicies(RING_HASH_POLICY))
|
||||
.build();
|
||||
|
||||
// Custom LB flag not set, so we use old logic that will default to round_robin.
|
||||
assertThat(newLbConfig(cluster, true, false, true)).isEqualTo(VALID_ROUND_ROBIN_CONFIG);
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true, "Invalid LoadBalancingPolicy");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -357,7 +346,7 @@ public class LoadBalancerConfigFactoryTest {
|
|||
buildWrrPolicy(
|
||||
ROUND_ROBIN_POLICY))))))))))))))))))).build();
|
||||
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true, true,
|
||||
assertResourceInvalidExceptionThrown(cluster, false, true,
|
||||
"Maximum LB config recursion depth reached");
|
||||
}
|
||||
|
||||
|
|
@ -373,18 +362,17 @@ public class LoadBalancerConfigFactoryTest {
|
|||
.build()))).build();
|
||||
}
|
||||
|
||||
private LbConfig newLbConfig(Cluster cluster, boolean enableLeastRequest,
|
||||
boolean enableCustomConfig, boolean enableWrr)
|
||||
private LbConfig newLbConfig(Cluster cluster, boolean enableLeastRequest, boolean enableWrr)
|
||||
throws ResourceInvalidException {
|
||||
return ServiceConfigUtil.unwrapLoadBalancingConfig(
|
||||
LoadBalancerConfigFactory.newConfig(cluster, enableLeastRequest, enableCustomConfig,
|
||||
LoadBalancerConfigFactory.newConfig(cluster, enableLeastRequest,
|
||||
enableWrr));
|
||||
}
|
||||
|
||||
private void assertResourceInvalidExceptionThrown(Cluster cluster, boolean enableLeastRequest,
|
||||
boolean enableCustomConfig, boolean enableWrr, String expectedMessage) {
|
||||
boolean enableWrr, String expectedMessage) {
|
||||
try {
|
||||
newLbConfig(cluster, enableLeastRequest, enableCustomConfig, enableWrr);
|
||||
newLbConfig(cluster, enableLeastRequest, enableWrr);
|
||||
} catch (ResourceInvalidException e) {
|
||||
assertThat(e).hasMessageThat().contains(expectedMessage);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -164,18 +164,12 @@ public class XdsClientImplDataTest {
|
|||
@Rule
|
||||
public final ExpectedException thrown = ExpectedException.none();
|
||||
private final FilterRegistry filterRegistry = FilterRegistry.getDefaultRegistry();
|
||||
private boolean originalEnableRetry;
|
||||
private boolean originalEnableRbac;
|
||||
private boolean originalEnableRouteLookup;
|
||||
private boolean originalEnableLeastRequest;
|
||||
private boolean originalEnableWrr;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
originalEnableRetry = XdsResourceType.enableRetry;
|
||||
assertThat(originalEnableRetry).isTrue();
|
||||
originalEnableRbac = XdsResourceType.enableRbac;
|
||||
assertThat(originalEnableRbac).isTrue();
|
||||
originalEnableRouteLookup = XdsResourceType.enableRouteLookup;
|
||||
assertThat(originalEnableRouteLookup).isFalse();
|
||||
originalEnableLeastRequest = XdsResourceType.enableLeastRequest;
|
||||
|
|
@ -186,8 +180,6 @@ public class XdsClientImplDataTest {
|
|||
|
||||
@After
|
||||
public void tearDown() {
|
||||
XdsResourceType.enableRetry = originalEnableRetry;
|
||||
XdsResourceType.enableRbac = originalEnableRbac;
|
||||
XdsResourceType.enableRouteLookup = originalEnableRouteLookup;
|
||||
XdsResourceType.enableLeastRequest = originalEnableLeastRequest;
|
||||
XdsResourceType.enableWrr = originalEnableWrr;
|
||||
|
|
@ -206,7 +198,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo"))
|
||||
.build();
|
||||
StructOrError<Route> struct = XdsRouteConfigureResource.parseRoute(
|
||||
proto, filterRegistry, false, ImmutableMap.of(), ImmutableSet.of());
|
||||
proto, filterRegistry, ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail()).isNull();
|
||||
assertThat(struct.getStruct())
|
||||
.isEqualTo(
|
||||
|
|
@ -229,7 +221,7 @@ public class XdsClientImplDataTest {
|
|||
.setNonForwardingAction(NonForwardingAction.getDefaultInstance())
|
||||
.build();
|
||||
StructOrError<Route> struct = XdsRouteConfigureResource.parseRoute(
|
||||
proto, filterRegistry, false, ImmutableMap.of(), ImmutableSet.of());
|
||||
proto, filterRegistry, ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct())
|
||||
.isEqualTo(
|
||||
Route.forNonForwardingAction(
|
||||
|
|
@ -248,7 +240,7 @@ public class XdsClientImplDataTest {
|
|||
.setRedirect(RedirectAction.getDefaultInstance())
|
||||
.build();
|
||||
res = XdsRouteConfigureResource.parseRoute(
|
||||
redirectRoute, filterRegistry, false, ImmutableMap.of(), ImmutableSet.of());
|
||||
redirectRoute, filterRegistry, ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(res.getStruct()).isNull();
|
||||
assertThat(res.getErrorDetail())
|
||||
.isEqualTo("Route [route-blade] with unknown action type: REDIRECT");
|
||||
|
|
@ -260,7 +252,7 @@ public class XdsClientImplDataTest {
|
|||
.setDirectResponse(DirectResponseAction.getDefaultInstance())
|
||||
.build();
|
||||
res = XdsRouteConfigureResource.parseRoute(
|
||||
directResponseRoute, filterRegistry, false, ImmutableMap.of(), ImmutableSet.of());
|
||||
directResponseRoute, filterRegistry, ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(res.getStruct()).isNull();
|
||||
assertThat(res.getErrorDetail())
|
||||
.isEqualTo("Route [route-blade] with unknown action type: DIRECT_RESPONSE");
|
||||
|
|
@ -272,7 +264,7 @@ public class XdsClientImplDataTest {
|
|||
.setFilterAction(FilterAction.getDefaultInstance())
|
||||
.build();
|
||||
res = XdsRouteConfigureResource.parseRoute(
|
||||
filterRoute, filterRegistry, false, ImmutableMap.of(), ImmutableSet.of());
|
||||
filterRoute, filterRegistry, ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(res.getStruct()).isNull();
|
||||
assertThat(res.getErrorDetail())
|
||||
.isEqualTo("Route [route-blade] with unknown action type: FILTER_ACTION");
|
||||
|
|
@ -294,7 +286,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo"))
|
||||
.build();
|
||||
assertThat(XdsRouteConfigureResource.parseRoute(
|
||||
proto, filterRegistry, false, ImmutableMap.of(), ImmutableSet.of()))
|
||||
proto, filterRegistry, ImmutableMap.of(), ImmutableSet.of()))
|
||||
.isNull();
|
||||
}
|
||||
|
||||
|
|
@ -311,7 +303,7 @@ public class XdsClientImplDataTest {
|
|||
.setClusterHeader("cluster header")) // cluster_header action not supported
|
||||
.build();
|
||||
assertThat(XdsRouteConfigureResource.parseRoute(
|
||||
proto, filterRegistry, false, ImmutableMap.of(), ImmutableSet.of()))
|
||||
proto, filterRegistry, ImmutableMap.of(), ImmutableSet.of()))
|
||||
.isNull();
|
||||
}
|
||||
|
||||
|
|
@ -520,7 +512,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail()).isNull();
|
||||
assertThat(struct.getStruct().cluster()).isEqualTo("cluster-foo");
|
||||
|
|
@ -544,7 +536,7 @@ public class XdsClientImplDataTest {
|
|||
.setWeight(UInt32Value.newBuilder().setValue(70))))
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail()).isNull();
|
||||
assertThat(struct.getStruct().cluster()).isNull();
|
||||
|
|
@ -570,7 +562,7 @@ public class XdsClientImplDataTest {
|
|||
.setWeight(UInt32Value.newBuilder().setValue(0))))
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail()).isEqualTo("Sum of cluster weights should be above 0.");
|
||||
}
|
||||
|
|
@ -586,7 +578,7 @@ public class XdsClientImplDataTest {
|
|||
.setMaxStreamDuration(Durations.fromMillis(20L)))
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().timeoutNano()).isEqualTo(TimeUnit.SECONDS.toNanos(5L));
|
||||
}
|
||||
|
|
@ -601,7 +593,7 @@ public class XdsClientImplDataTest {
|
|||
.setMaxStreamDuration(Durations.fromSeconds(5L)))
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().timeoutNano()).isEqualTo(TimeUnit.SECONDS.toNanos(5L));
|
||||
}
|
||||
|
|
@ -613,14 +605,13 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().timeoutNano()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseRouteAction_withRetryPolicy() {
|
||||
XdsResourceType.enableRetry = true;
|
||||
RetryPolicy.Builder builder = RetryPolicy.newBuilder()
|
||||
.setNumRetries(UInt32Value.of(3))
|
||||
.setRetryBackOff(
|
||||
|
|
@ -636,7 +627,7 @@ public class XdsClientImplDataTest {
|
|||
.setRetryPolicy(builder.build())
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
RouteAction.RetryPolicy retryPolicy = struct.getStruct().retryPolicy();
|
||||
assertThat(retryPolicy.maxAttempts()).isEqualTo(4);
|
||||
|
|
@ -660,7 +651,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder.build())
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().retryPolicy()).isNotNull();
|
||||
assertThat(struct.getStruct().retryPolicy().retryableStatusCodes()).isEmpty();
|
||||
|
|
@ -673,7 +664,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail()).isEqualTo("No base_interval specified in retry_backoff");
|
||||
|
||||
|
|
@ -683,7 +674,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
retryPolicy = struct.getStruct().retryPolicy();
|
||||
assertThat(retryPolicy.maxBackoff()).isEqualTo(Durations.fromMillis(500 * 10));
|
||||
|
|
@ -694,7 +685,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail())
|
||||
.isEqualTo("base_interval in retry_backoff must be positive");
|
||||
|
|
@ -707,7 +698,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail())
|
||||
.isEqualTo("max_interval in retry_backoff cannot be less than base_interval");
|
||||
|
|
@ -720,7 +711,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getErrorDetail())
|
||||
.isEqualTo("max_interval in retry_backoff cannot be less than base_interval");
|
||||
|
|
@ -733,7 +724,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().retryPolicy().initialBackoff())
|
||||
.isEqualTo(Durations.fromMillis(1));
|
||||
|
|
@ -749,7 +740,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
retryPolicy = struct.getStruct().retryPolicy();
|
||||
assertThat(retryPolicy.initialBackoff()).isEqualTo(Durations.fromMillis(25));
|
||||
|
|
@ -768,7 +759,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().retryPolicy().retryableStatusCodes())
|
||||
.containsExactly(Code.CANCELLED);
|
||||
|
|
@ -786,7 +777,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().retryPolicy().retryableStatusCodes())
|
||||
.containsExactly(Code.CANCELLED);
|
||||
|
|
@ -804,7 +795,7 @@ public class XdsClientImplDataTest {
|
|||
.setCluster("cluster-foo")
|
||||
.setRetryPolicy(builder)
|
||||
.build();
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
struct = XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct.getStruct().retryPolicy().retryableStatusCodes())
|
||||
.containsExactly(Code.CANCELLED);
|
||||
|
|
@ -843,7 +834,7 @@ public class XdsClientImplDataTest {
|
|||
QueryParameter.newBuilder().setName("param"))) // unsupported
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
List<HashPolicy> policies = struct.getStruct().hashPolicies();
|
||||
assertThat(policies).hasSize(2);
|
||||
|
|
@ -863,7 +854,7 @@ public class XdsClientImplDataTest {
|
|||
io.envoyproxy.envoy.config.route.v3.RouteAction.newBuilder()
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct).isNull();
|
||||
}
|
||||
|
|
@ -876,7 +867,7 @@ public class XdsClientImplDataTest {
|
|||
.setClusterSpecifierPlugin(CLUSTER_SPECIFIER_PLUGIN.name())
|
||||
.build();
|
||||
StructOrError<RouteAction> struct =
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry, false,
|
||||
XdsRouteConfigureResource.parseRouteAction(proto, filterRegistry,
|
||||
ImmutableMap.of(), ImmutableSet.of());
|
||||
assertThat(struct).isNull();
|
||||
}
|
||||
|
|
@ -889,7 +880,7 @@ public class XdsClientImplDataTest {
|
|||
.setWeight(UInt32Value.newBuilder().setValue(30))
|
||||
.build();
|
||||
ClusterWeight clusterWeight =
|
||||
XdsRouteConfigureResource.parseClusterWeight(proto, filterRegistry, false).getStruct();
|
||||
XdsRouteConfigureResource.parseClusterWeight(proto, filterRegistry).getStruct();
|
||||
assertThat(clusterWeight.name()).isEqualTo("cluster-foo");
|
||||
assertThat(clusterWeight.weight()).isEqualTo(30);
|
||||
}
|
||||
|
|
@ -1354,7 +1345,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("HttpConnectionManager with xff_num_trusted_hops unsupported");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, false /* does not matter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1368,7 +1359,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("HttpConnectionManager with original_ip_detection_extensions unsupported");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, false /* does not matter */, false);
|
||||
hcm, filterRegistry, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -1379,11 +1370,14 @@ public class XdsClientImplDataTest {
|
|||
.setCommonHttpProtocolOptions(
|
||||
HttpProtocolOptions.newBuilder()
|
||||
.setMaxStreamDuration(Durations.fromNanos(1000L)))
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build();
|
||||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("HttpConnectionManager neither has inlined route_config nor RDS");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, false /* does not matter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1402,7 +1396,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("HttpConnectionManager contains duplicate HttpFilter: envoy.filter.foo");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, true /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1420,7 +1414,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("The last HttpFilter must be a terminal filter: envoy.filter.bar");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, true /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1438,7 +1432,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("A terminal HttpFilter must be the last filter: terminal");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, true /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true);
|
||||
}
|
||||
|
||||
|
|
@ -1454,7 +1448,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("The last HttpFilter must be a terminal filter: envoy.filter.bar");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, true /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1466,7 +1460,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("Missing HttpFilter in HttpConnectionManager.");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, true /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1509,10 +1503,13 @@ public class XdsClientImplDataTest {
|
|||
.addVirtualHosts(io.envoyproxy.envoy.config.route.v3.VirtualHost.newBuilder()
|
||||
.setName("virtual-host-1")
|
||||
.addRoutes(route)))
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build();
|
||||
|
||||
io.grpc.xds.HttpConnectionManager parsedHcm = XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, false /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
|
||||
VirtualHost virtualHost = Iterables.getOnlyElement(parsedHcm.virtualHosts());
|
||||
|
|
@ -1583,13 +1580,16 @@ public class XdsClientImplDataTest {
|
|||
.addVirtualHosts(io.envoyproxy.envoy.config.route.v3.VirtualHost.newBuilder()
|
||||
.setName("virtual-host-1")
|
||||
.addRoutes(route)))
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build();
|
||||
|
||||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("Multiple ClusterSpecifierPlugins with the same name: rls-plugin-1");
|
||||
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, false /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1632,13 +1632,16 @@ public class XdsClientImplDataTest {
|
|||
.addVirtualHosts(io.envoyproxy.envoy.config.route.v3.VirtualHost.newBuilder()
|
||||
.setName("virtual-host-1")
|
||||
.addRoutes(route)))
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build();
|
||||
|
||||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("ClusterSpecifierPlugin for [invalid-plugin-name] not found");
|
||||
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm, filterRegistry, false /* parseHttpFilter */,
|
||||
hcm, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -1708,8 +1711,12 @@ public class XdsClientImplDataTest {
|
|||
.addRoutes(optionalRoute))
|
||||
.build();
|
||||
io.grpc.xds.HttpConnectionManager parsedHcm = XdsListenerResource.parseHttpConnectionManager(
|
||||
HttpConnectionManager.newBuilder().setRouteConfig(routeConfig).build(), filterRegistry,
|
||||
false /* parseHttpFilter */, true /* does not matter */);
|
||||
HttpConnectionManager.newBuilder().setRouteConfig(routeConfig)
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build(), filterRegistry,
|
||||
true /* does not matter */);
|
||||
|
||||
// Verify that the only route left is the one with the registered RLS plugin `rls-plugin-1`,
|
||||
// while the route with unregistered optional `optional-plugin-`1 has been skipped.
|
||||
|
|
@ -1731,9 +1738,12 @@ public class XdsClientImplDataTest {
|
|||
.setRouteConfigName("rds-config-foo")
|
||||
.setConfigSource(
|
||||
ConfigSource.newBuilder().setAds(AggregatedConfigSource.getDefaultInstance())))
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build();
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm1, filterRegistry, false /* parseHttpFilter */,
|
||||
hcm1, filterRegistry,
|
||||
true /* does not matter */);
|
||||
|
||||
HttpConnectionManager hcm2 =
|
||||
|
|
@ -1742,9 +1752,12 @@ public class XdsClientImplDataTest {
|
|||
.setRouteConfigName("rds-config-foo")
|
||||
.setConfigSource(
|
||||
ConfigSource.newBuilder().setSelf(SelfConfigSource.getDefaultInstance())))
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build();
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm2, filterRegistry, false /* parseHttpFilter */,
|
||||
hcm2, filterRegistry,
|
||||
true /* does not matter */);
|
||||
|
||||
HttpConnectionManager hcm3 =
|
||||
|
|
@ -1754,12 +1767,15 @@ public class XdsClientImplDataTest {
|
|||
.setConfigSource(
|
||||
ConfigSource.newBuilder()
|
||||
.setPathConfigSource(PathConfigSource.newBuilder().setPath("foo-path"))))
|
||||
.addHttpFilters(
|
||||
HttpFilter.newBuilder().setName("terminal").setTypedConfig(
|
||||
Any.pack(Router.newBuilder().build())).setIsOptional(true))
|
||||
.build();
|
||||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage(
|
||||
"HttpConnectionManager contains invalid RDS: must specify ADS or self ConfigSource");
|
||||
XdsListenerResource.parseHttpConnectionManager(
|
||||
hcm3, filterRegistry, false /* parseHttpFilter */,
|
||||
hcm3, filterRegistry,
|
||||
true /* does not matter */);
|
||||
}
|
||||
|
||||
|
|
@ -2117,7 +2133,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("Listener listener1 with invalid traffic direction: OUTBOUND");
|
||||
XdsListenerResource.parseServerSideListener(
|
||||
listener, null, filterRegistry, null, true /* does not matter */);
|
||||
listener, null, filterRegistry, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2127,7 +2143,7 @@ public class XdsClientImplDataTest {
|
|||
.setName("listener1")
|
||||
.build();
|
||||
XdsListenerResource.parseServerSideListener(
|
||||
listener, null, filterRegistry, null, true /* does not matter */);
|
||||
listener, null, filterRegistry, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2141,7 +2157,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("Listener listener1 cannot have listener_filters");
|
||||
XdsListenerResource.parseServerSideListener(
|
||||
listener, null, filterRegistry, null, true /* does not matter */);
|
||||
listener, null, filterRegistry, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2155,7 +2171,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("Listener listener1 cannot have use_original_dst set to true");
|
||||
XdsListenerResource.parseServerSideListener(
|
||||
listener,null, filterRegistry, null, true /* does not matter */);
|
||||
listener,null, filterRegistry, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2204,7 +2220,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("FilterChainMatch must be unique. Found duplicate:");
|
||||
XdsListenerResource.parseServerSideListener(
|
||||
listener, null, filterRegistry, null, true /* does not matter */);
|
||||
listener, null, filterRegistry, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2253,7 +2269,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expect(ResourceInvalidException.class);
|
||||
thrown.expectMessage("FilterChainMatch must be unique. Found duplicate:");
|
||||
XdsListenerResource.parseServerSideListener(
|
||||
listener,null, filterRegistry, null, true /* does not matter */);
|
||||
listener,null, filterRegistry, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2302,7 +2318,7 @@ public class XdsClientImplDataTest {
|
|||
.addAllFilterChains(Arrays.asList(filterChain1, filterChain2))
|
||||
.build();
|
||||
XdsListenerResource.parseServerSideListener(
|
||||
listener, null, filterRegistry, null, true /* does not matter */);
|
||||
listener, null, filterRegistry, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2317,8 +2333,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expectMessage(
|
||||
"FilterChain filter-chain-foo should contain exact one HttpConnectionManager filter");
|
||||
XdsListenerResource.parseFilterChain(
|
||||
filterChain, null, filterRegistry, null, null,
|
||||
true /* does not matter */);
|
||||
filterChain, null, filterRegistry, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2336,8 +2351,7 @@ public class XdsClientImplDataTest {
|
|||
thrown.expectMessage(
|
||||
"FilterChain filter-chain-foo should contain exact one HttpConnectionManager filter");
|
||||
XdsListenerResource.parseFilterChain(
|
||||
filterChain, null, filterRegistry, null, null,
|
||||
true /* does not matter */);
|
||||
filterChain, null, filterRegistry, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2355,8 +2369,7 @@ public class XdsClientImplDataTest {
|
|||
"FilterChain filter-chain-foo contains filter envoy.http_connection_manager "
|
||||
+ "without typed_config");
|
||||
XdsListenerResource.parseFilterChain(
|
||||
filterChain, null, filterRegistry, null, null,
|
||||
true /* does not matter */);
|
||||
filterChain, null, filterRegistry, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2378,8 +2391,7 @@ public class XdsClientImplDataTest {
|
|||
"FilterChain filter-chain-foo contains filter unsupported with unsupported "
|
||||
+ "typed_config type unsupported-type-url");
|
||||
XdsListenerResource.parseFilterChain(
|
||||
filterChain, null, filterRegistry, null, null,
|
||||
true /* does not matter */);
|
||||
filterChain, null, filterRegistry, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -2407,10 +2419,10 @@ public class XdsClientImplDataTest {
|
|||
|
||||
EnvoyServerProtoData.FilterChain parsedFilterChain1 = XdsListenerResource.parseFilterChain(
|
||||
filterChain1, null, filterRegistry, null,
|
||||
null, true /* does not matter */);
|
||||
null);
|
||||
EnvoyServerProtoData.FilterChain parsedFilterChain2 = XdsListenerResource.parseFilterChain(
|
||||
filterChain2, null, filterRegistry, null,
|
||||
null, true /* does not matter */);
|
||||
null);
|
||||
assertThat(parsedFilterChain1.name()).isEqualTo(parsedFilterChain2.name());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -283,8 +283,6 @@ public abstract class XdsClientImplTestBase {
|
|||
private ManagedChannel channelForCustomAuthority;
|
||||
private ManagedChannel channelForEmptyAuthority;
|
||||
private XdsClientImpl xdsClient;
|
||||
private boolean originalEnableFaultInjection;
|
||||
private boolean originalEnableRbac;
|
||||
private boolean originalEnableLeastRequest;
|
||||
private boolean originalEnableFederation;
|
||||
private Server xdsServer;
|
||||
|
|
@ -301,10 +299,6 @@ public abstract class XdsClientImplTestBase {
|
|||
when(backoffPolicy2.nextBackoffNanos()).thenReturn(20L, 200L);
|
||||
|
||||
// Start the server and the client.
|
||||
originalEnableFaultInjection = XdsResourceType.enableFaultInjection;
|
||||
XdsResourceType.enableFaultInjection = true;
|
||||
originalEnableRbac = XdsResourceType.enableRbac;
|
||||
assertThat(originalEnableRbac).isTrue();
|
||||
originalEnableLeastRequest = XdsResourceType.enableLeastRequest;
|
||||
XdsResourceType.enableLeastRequest = true;
|
||||
originalEnableFederation = BootstrapperImpl.enableFederation;
|
||||
|
|
@ -380,8 +374,6 @@ public abstract class XdsClientImplTestBase {
|
|||
|
||||
@After
|
||||
public void tearDown() {
|
||||
XdsResourceType.enableFaultInjection = originalEnableFaultInjection;
|
||||
XdsResourceType.enableRbac = originalEnableRbac;
|
||||
XdsResourceType.enableLeastRequest = originalEnableLeastRequest;
|
||||
BootstrapperImpl.enableFederation = originalEnableFederation;
|
||||
xdsClient.shutdown();
|
||||
|
|
@ -2255,8 +2247,6 @@ public abstract class XdsClientImplTestBase {
|
|||
@SuppressWarnings("deprecation")
|
||||
public void cdsResponseWithOutlierDetection() {
|
||||
Assume.assumeTrue(useProtocolV3());
|
||||
XdsClusterResource.enableOutlierDetection = true;
|
||||
|
||||
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
|
||||
cdsResourceWatcher);
|
||||
|
||||
|
|
@ -2320,46 +2310,6 @@ public abstract class XdsClientImplTestBase {
|
|||
verifySubscribedResourcesMetadataSizes(0, 1, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* CDS response containing OutlierDetection for a cluster, but support has not been enabled.
|
||||
*/
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
public void cdsResponseWithOutlierDetection_supportDisabled() {
|
||||
Assume.assumeTrue(useProtocolV3());
|
||||
XdsClusterResource.enableOutlierDetection = false;
|
||||
|
||||
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
|
||||
cdsResourceWatcher);
|
||||
|
||||
OutlierDetection outlierDetectionXds = OutlierDetection.newBuilder()
|
||||
.setInterval(Durations.fromNanos(100)).build();
|
||||
|
||||
// Management server sends back CDS response with UpstreamTlsContext.
|
||||
Any clusterEds =
|
||||
Any.pack(mf.buildEdsCluster(CDS_RESOURCE, "eds-cluster-foo.googleapis.com", "round_robin",
|
||||
null, null, true,
|
||||
mf.buildUpstreamTlsContext("cert-instance-name", "cert1"),
|
||||
"envoy.transport_sockets.tls", null, outlierDetectionXds));
|
||||
List<Any> clusters = ImmutableList.of(
|
||||
Any.pack(mf.buildLogicalDnsCluster("cluster-bar.googleapis.com",
|
||||
"dns-service-bar.googleapis.com", 443, "round_robin", null, null,false, null, null)),
|
||||
clusterEds,
|
||||
Any.pack(mf.buildEdsCluster("cluster-baz.googleapis.com", null, "round_robin", null, null,
|
||||
false, null, "envoy.transport_sockets.tls", null, outlierDetectionXds)));
|
||||
call.sendResponse(CDS, clusters, VERSION_1, "0000");
|
||||
|
||||
// Client sent an ACK CDS request.
|
||||
call.verifyRequest(CDS, CDS_RESOURCE, VERSION_1, "0000", NODE);
|
||||
verify(cdsResourceWatcher, times(1)).onChanged(cdsUpdateCaptor.capture());
|
||||
CdsUpdate cdsUpdate = cdsUpdateCaptor.getValue();
|
||||
|
||||
assertThat(cdsUpdate.outlierDetection()).isNull();
|
||||
|
||||
verifyResourceMetadataAcked(CDS, CDS_RESOURCE, clusterEds, VERSION_1, TIME_INCREMENT);
|
||||
verifySubscribedResourcesMetadataSizes(0, 1, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* CDS response containing OutlierDetection for a cluster.
|
||||
*/
|
||||
|
|
@ -2367,7 +2317,6 @@ public abstract class XdsClientImplTestBase {
|
|||
@SuppressWarnings("deprecation")
|
||||
public void cdsResponseWithInvalidOutlierDetectionNacks() {
|
||||
Assume.assumeTrue(useProtocolV3());
|
||||
XdsClusterResource.enableOutlierDetection = true;
|
||||
|
||||
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
|
||||
cdsResourceWatcher);
|
||||
|
|
|
|||
Loading…
Reference in New Issue