xds: rename ClientXdsClient to XdsClientImpl (#9573)

This commit is contained in:
sanjaypujare 2022-09-30 09:32:52 -07:00 committed by GitHub
parent 3b62fbe365
commit ba8cd04191
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 47 additions and 47 deletions

View File

@ -46,11 +46,11 @@ import io.grpc.SynchronizationContext.ScheduledHandle;
import io.grpc.internal.BackoffPolicy; import io.grpc.internal.BackoffPolicy;
import io.grpc.stub.StreamObserver; import io.grpc.stub.StreamObserver;
import io.grpc.xds.Bootstrapper.ServerInfo; import io.grpc.xds.Bootstrapper.ServerInfo;
import io.grpc.xds.ClientXdsClient.XdsChannelFactory;
import io.grpc.xds.EnvoyProtoData.Node; import io.grpc.xds.EnvoyProtoData.Node;
import io.grpc.xds.XdsClient.ResourceStore; import io.grpc.xds.XdsClient.ResourceStore;
import io.grpc.xds.XdsClient.ResourceUpdate; import io.grpc.xds.XdsClient.ResourceUpdate;
import io.grpc.xds.XdsClient.XdsResponseHandler; import io.grpc.xds.XdsClient.XdsResponseHandler;
import io.grpc.xds.XdsClientImpl.XdsChannelFactory;
import io.grpc.xds.XdsLogger.XdsLogLevel; import io.grpc.xds.XdsLogger.XdsLogLevel;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;

View File

@ -35,8 +35,8 @@ import io.envoyproxy.envoy.extensions.load_balancing_policies.wrr_locality.v3.Wr
import io.grpc.InternalLogId; import io.grpc.InternalLogId;
import io.grpc.LoadBalancerRegistry; import io.grpc.LoadBalancerRegistry;
import io.grpc.internal.JsonParser; import io.grpc.internal.JsonParser;
import io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import io.grpc.xds.LoadBalancerConfigFactory.LoadBalancingPolicyConverter.MaxRecursionReachedException; import io.grpc.xds.LoadBalancerConfigFactory.LoadBalancingPolicyConverter.MaxRecursionReachedException;
import io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import io.grpc.xds.XdsLogger.XdsLogLevel; import io.grpc.xds.XdsLogger.XdsLogLevel;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;

View File

@ -26,7 +26,7 @@ import io.grpc.internal.ObjectPool;
import io.grpc.internal.SharedResourceHolder; import io.grpc.internal.SharedResourceHolder;
import io.grpc.internal.TimeProvider; import io.grpc.internal.TimeProvider;
import io.grpc.xds.Bootstrapper.BootstrapInfo; import io.grpc.xds.Bootstrapper.BootstrapInfo;
import io.grpc.xds.ClientXdsClient.XdsChannelFactory; import io.grpc.xds.XdsClientImpl.XdsChannelFactory;
import io.grpc.xds.XdsNameResolverProvider.XdsClientPoolFactory; import io.grpc.xds.XdsNameResolverProvider.XdsClientPoolFactory;
import io.grpc.xds.internal.security.TlsContextManagerImpl; import io.grpc.xds.internal.security.TlsContextManagerImpl;
import java.util.Map; import java.util.Map;
@ -123,7 +123,7 @@ final class SharedXdsClientPoolProvider implements XdsClientPoolFactory {
synchronized (lock) { synchronized (lock) {
if (refCount == 0) { if (refCount == 0) {
scheduler = SharedResourceHolder.get(GrpcUtil.TIMER_SERVICE); scheduler = SharedResourceHolder.get(GrpcUtil.TIMER_SERVICE);
xdsClient = new ClientXdsClient( xdsClient = new XdsClientImpl(
XdsChannelFactory.DEFAULT_XDS_CHANNEL_FACTORY, XdsChannelFactory.DEFAULT_XDS_CHANNEL_FACTORY,
bootstrapInfo, bootstrapInfo,
context, context,

View File

@ -72,7 +72,7 @@ import javax.annotation.Nullable;
/** /**
* XdsClient implementation for client side usages. * XdsClient implementation for client side usages.
*/ */
final class ClientXdsClient extends XdsClient implements XdsResponseHandler, ResourceStore { final class XdsClientImpl extends XdsClient implements XdsResponseHandler, ResourceStore {
// Longest time to wait, since the subscription to some resource, for concluding its absence. // Longest time to wait, since the subscription to some resource, for concluding its absence.
@VisibleForTesting @VisibleForTesting
@ -118,7 +118,7 @@ final class ClientXdsClient extends XdsClient implements XdsResponseHandler, Res
private volatile boolean isShutdown; private volatile boolean isShutdown;
// TODO(zdapeng): rename to XdsClientImpl // TODO(zdapeng): rename to XdsClientImpl
ClientXdsClient( XdsClientImpl(
XdsChannelFactory xdsChannelFactory, XdsChannelFactory xdsChannelFactory,
Bootstrapper.BootstrapInfo bootstrapInfo, Bootstrapper.BootstrapInfo bootstrapInfo,
Context context, Context context,

View File

@ -42,10 +42,10 @@ import io.grpc.LoadBalancerRegistry;
import io.grpc.NameResolver; import io.grpc.NameResolver;
import io.grpc.internal.ServiceConfigUtil; import io.grpc.internal.ServiceConfigUtil;
import io.grpc.internal.ServiceConfigUtil.LbConfig; import io.grpc.internal.ServiceConfigUtil.LbConfig;
import io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import io.grpc.xds.EnvoyServerProtoData.OutlierDetection; import io.grpc.xds.EnvoyServerProtoData.OutlierDetection;
import io.grpc.xds.EnvoyServerProtoData.UpstreamTlsContext; import io.grpc.xds.EnvoyServerProtoData.UpstreamTlsContext;
import io.grpc.xds.XdsClient.ResourceUpdate; import io.grpc.xds.XdsClient.ResourceUpdate;
import io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import io.grpc.xds.XdsClusterResource.CdsUpdate; import io.grpc.xds.XdsClusterResource.CdsUpdate;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;

View File

@ -27,10 +27,10 @@ import com.google.protobuf.Message;
import io.envoyproxy.envoy.config.endpoint.v3.ClusterLoadAssignment; import io.envoyproxy.envoy.config.endpoint.v3.ClusterLoadAssignment;
import io.envoyproxy.envoy.type.v3.FractionalPercent; import io.envoyproxy.envoy.type.v3.FractionalPercent;
import io.grpc.EquivalentAddressGroup; import io.grpc.EquivalentAddressGroup;
import io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import io.grpc.xds.Endpoints.DropOverload; import io.grpc.xds.Endpoints.DropOverload;
import io.grpc.xds.Endpoints.LocalityLbEndpoints; import io.grpc.xds.Endpoints.LocalityLbEndpoints;
import io.grpc.xds.XdsClient.ResourceUpdate; import io.grpc.xds.XdsClient.ResourceUpdate;
import io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import io.grpc.xds.XdsEndpointResource.EdsUpdate; import io.grpc.xds.XdsEndpointResource.EdsUpdate;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -20,8 +20,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static io.grpc.xds.AbstractXdsClient.ResourceType; import static io.grpc.xds.AbstractXdsClient.ResourceType;
import static io.grpc.xds.AbstractXdsClient.ResourceType.LDS; import static io.grpc.xds.AbstractXdsClient.ResourceType.LDS;
import static io.grpc.xds.AbstractXdsClient.ResourceType.RDS; import static io.grpc.xds.AbstractXdsClient.ResourceType.RDS;
import static io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import static io.grpc.xds.XdsClient.ResourceUpdate; import static io.grpc.xds.XdsClient.ResourceUpdate;
import static io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import static io.grpc.xds.XdsClusterResource.validateCommonTlsContext; import static io.grpc.xds.XdsClusterResource.validateCommonTlsContext;
import static io.grpc.xds.XdsRouteConfigureResource.extractVirtualHosts; import static io.grpc.xds.XdsRouteConfigureResource.extractVirtualHosts;

View File

@ -19,10 +19,10 @@ package io.grpc.xds;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import static io.grpc.xds.AbstractXdsClient.ResourceType; import static io.grpc.xds.AbstractXdsClient.ResourceType;
import static io.grpc.xds.Bootstrapper.ServerInfo; import static io.grpc.xds.Bootstrapper.ServerInfo;
import static io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import static io.grpc.xds.XdsClient.ResourceUpdate; import static io.grpc.xds.XdsClient.ResourceUpdate;
import static io.grpc.xds.XdsClient.canonifyResourceName; import static io.grpc.xds.XdsClient.canonifyResourceName;
import static io.grpc.xds.XdsClient.isResourceNameValid; import static io.grpc.xds.XdsClient.isResourceNameValid;
import static io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings; import com.google.common.base.Strings;
@ -158,7 +158,7 @@ abstract class XdsResourceType<T extends ResourceUpdate> {
T resourceUpdate; T resourceUpdate;
try { try {
resourceUpdate = doParse(args, unpackedMessage, retainedResources, isResourceV3); resourceUpdate = doParse(args, unpackedMessage, retainedResources, isResourceV3);
} catch (ClientXdsClient.ResourceInvalidException e) { } catch (XdsClientImpl.ResourceInvalidException e) {
errors.add(String.format("%s response %s '%s' validation error: %s", errors.add(String.format("%s response %s '%s' validation error: %s",
typeName(), unpackedClassName().getSimpleName(), cname, e.getMessage())); typeName(), unpackedClassName().getSimpleName(), cname, e.getMessage()));
invalidResources.add(cname); invalidResources.add(cname);

View File

@ -17,8 +17,8 @@
package io.grpc.xds; package io.grpc.xds;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import static io.grpc.xds.AbstractXdsClient.ResourceType.RDS;
import static io.grpc.xds.AbstractXdsClient.ResourceType; import static io.grpc.xds.AbstractXdsClient.ResourceType;
import static io.grpc.xds.AbstractXdsClient.ResourceType.RDS;
import static io.grpc.xds.XdsRouteConfigureResource.RdsUpdate; import static io.grpc.xds.XdsRouteConfigureResource.RdsUpdate;
import com.github.udpa.udpa.type.v1.TypedStruct; import com.github.udpa.udpa.type.v1.TypedStruct;
@ -40,7 +40,6 @@ import io.envoyproxy.envoy.config.route.v3.RetryPolicy.RetryBackOff;
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration; import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
import io.envoyproxy.envoy.type.v3.FractionalPercent; import io.envoyproxy.envoy.type.v3.FractionalPercent;
import io.grpc.Status; import io.grpc.Status;
import io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import io.grpc.xds.ClusterSpecifierPlugin.NamedPluginConfig; import io.grpc.xds.ClusterSpecifierPlugin.NamedPluginConfig;
import io.grpc.xds.ClusterSpecifierPlugin.PluginConfig; import io.grpc.xds.ClusterSpecifierPlugin.PluginConfig;
import io.grpc.xds.Filter.FilterConfig; import io.grpc.xds.Filter.FilterConfig;
@ -52,9 +51,10 @@ import io.grpc.xds.VirtualHost.Route.RouteAction.RetryPolicy;
import io.grpc.xds.VirtualHost.Route.RouteMatch; import io.grpc.xds.VirtualHost.Route.RouteMatch;
import io.grpc.xds.VirtualHost.Route.RouteMatch.PathMatcher; import io.grpc.xds.VirtualHost.Route.RouteMatch.PathMatcher;
import io.grpc.xds.XdsClient.ResourceUpdate; import io.grpc.xds.XdsClient.ResourceUpdate;
import io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import io.grpc.xds.internal.Matchers;
import io.grpc.xds.internal.Matchers.FractionMatcher; import io.grpc.xds.internal.Matchers.FractionMatcher;
import io.grpc.xds.internal.Matchers.HeaderMatcher; import io.grpc.xds.internal.Matchers.HeaderMatcher;
import io.grpc.xds.internal.Matchers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.EnumSet; import java.util.EnumSet;

View File

@ -47,7 +47,7 @@ import io.grpc.LoadBalancerRegistry;
import io.grpc.internal.JsonUtil; import io.grpc.internal.JsonUtil;
import io.grpc.internal.ServiceConfigUtil; import io.grpc.internal.ServiceConfigUtil;
import io.grpc.internal.ServiceConfigUtil.LbConfig; import io.grpc.internal.ServiceConfigUtil.LbConfig;
import io.grpc.xds.ClientXdsClient.ResourceInvalidException; import io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import java.util.List; import java.util.List;
import org.junit.After; import org.junit.After;
import org.junit.Test; import org.junit.Test;

View File

@ -117,7 +117,6 @@ import io.grpc.lookup.v1.RouteLookupClusterSpecifier;
import io.grpc.lookup.v1.RouteLookupConfig; import io.grpc.lookup.v1.RouteLookupConfig;
import io.grpc.xds.AbstractXdsClient.ResourceType; import io.grpc.xds.AbstractXdsClient.ResourceType;
import io.grpc.xds.Bootstrapper.ServerInfo; import io.grpc.xds.Bootstrapper.ServerInfo;
import io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import io.grpc.xds.ClusterSpecifierPlugin.NamedPluginConfig; import io.grpc.xds.ClusterSpecifierPlugin.NamedPluginConfig;
import io.grpc.xds.ClusterSpecifierPlugin.PluginConfig; import io.grpc.xds.ClusterSpecifierPlugin.PluginConfig;
import io.grpc.xds.Endpoints.LbEndpoint; import io.grpc.xds.Endpoints.LbEndpoint;
@ -130,6 +129,7 @@ import io.grpc.xds.VirtualHost.Route.RouteAction.ClusterWeight;
import io.grpc.xds.VirtualHost.Route.RouteAction.HashPolicy; import io.grpc.xds.VirtualHost.Route.RouteAction.HashPolicy;
import io.grpc.xds.VirtualHost.Route.RouteMatch; import io.grpc.xds.VirtualHost.Route.RouteMatch;
import io.grpc.xds.VirtualHost.Route.RouteMatch.PathMatcher; import io.grpc.xds.VirtualHost.Route.RouteMatch.PathMatcher;
import io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import io.grpc.xds.XdsClusterResource.CdsUpdate; import io.grpc.xds.XdsClusterResource.CdsUpdate;
import io.grpc.xds.XdsResourceType.StructOrError; import io.grpc.xds.XdsResourceType.StructOrError;
import io.grpc.xds.internal.Matchers.FractionMatcher; import io.grpc.xds.internal.Matchers.FractionMatcher;
@ -152,7 +152,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.JUnit4; import org.junit.runners.JUnit4;
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
public class ClientXdsClientDataTest { public class XdsClientImplDataTest {
private static final ServerInfo LRS_SERVER_INFO = private static final ServerInfo LRS_SERVER_INFO =
ServerInfo.create("lrs.googleapis.com", InsecureChannelCredentials.create(), true); ServerInfo.create("lrs.googleapis.com", InsecureChannelCredentials.create(), true);

View File

@ -70,8 +70,6 @@ import io.grpc.xds.AbstractXdsClient.ResourceType;
import io.grpc.xds.Bootstrapper.AuthorityInfo; import io.grpc.xds.Bootstrapper.AuthorityInfo;
import io.grpc.xds.Bootstrapper.CertificateProviderInfo; import io.grpc.xds.Bootstrapper.CertificateProviderInfo;
import io.grpc.xds.Bootstrapper.ServerInfo; import io.grpc.xds.Bootstrapper.ServerInfo;
import io.grpc.xds.ClientXdsClient.ResourceInvalidException;
import io.grpc.xds.ClientXdsClient.XdsChannelFactory;
import io.grpc.xds.Endpoints.DropOverload; import io.grpc.xds.Endpoints.DropOverload;
import io.grpc.xds.Endpoints.LbEndpoint; import io.grpc.xds.Endpoints.LbEndpoint;
import io.grpc.xds.Endpoints.LocalityLbEndpoints; import io.grpc.xds.Endpoints.LocalityLbEndpoints;
@ -86,6 +84,8 @@ import io.grpc.xds.XdsClient.ResourceMetadata.ResourceMetadataStatus;
import io.grpc.xds.XdsClient.ResourceMetadata.UpdateFailureState; import io.grpc.xds.XdsClient.ResourceMetadata.UpdateFailureState;
import io.grpc.xds.XdsClient.ResourceUpdate; import io.grpc.xds.XdsClient.ResourceUpdate;
import io.grpc.xds.XdsClient.ResourceWatcher; import io.grpc.xds.XdsClient.ResourceWatcher;
import io.grpc.xds.XdsClientImpl.ResourceInvalidException;
import io.grpc.xds.XdsClientImpl.XdsChannelFactory;
import io.grpc.xds.XdsClusterResource.CdsUpdate; import io.grpc.xds.XdsClusterResource.CdsUpdate;
import io.grpc.xds.XdsClusterResource.CdsUpdate.ClusterType; import io.grpc.xds.XdsClusterResource.CdsUpdate.ClusterType;
import io.grpc.xds.XdsEndpointResource.EdsUpdate; import io.grpc.xds.XdsEndpointResource.EdsUpdate;
@ -117,10 +117,10 @@ import org.mockito.Mockito;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
/** /**
* Tests for {@link ClientXdsClient}. * Tests for {@link XdsClientImpl}.
*/ */
@RunWith(JUnit4.class) @RunWith(JUnit4.class)
public abstract class ClientXdsClientTestBase { public abstract class XdsClientImplTestBase {
private static final String SERVER_URI = "trafficdirector.googleapis.com"; private static final String SERVER_URI = "trafficdirector.googleapis.com";
private static final String SERVER_URI_CUSTOME_AUTHORITY = "trafficdirector2.googleapis.com"; private static final String SERVER_URI_CUSTOME_AUTHORITY = "trafficdirector2.googleapis.com";
private static final String SERVER_URI_EMPTY_AUTHORITY = "trafficdirector3.googleapis.com"; private static final String SERVER_URI_EMPTY_AUTHORITY = "trafficdirector3.googleapis.com";
@ -264,7 +264,7 @@ public abstract class ClientXdsClientTestBase {
private ManagedChannel channel; private ManagedChannel channel;
private ManagedChannel channelForCustomAuthority; private ManagedChannel channelForCustomAuthority;
private ManagedChannel channelForEmptyAuthority; private ManagedChannel channelForEmptyAuthority;
private ClientXdsClient xdsClient; private XdsClientImpl xdsClient;
private boolean originalEnableFaultInjection; private boolean originalEnableFaultInjection;
private boolean originalEnableRbac; private boolean originalEnableRbac;
private boolean originalEnableLeastRequest; private boolean originalEnableLeastRequest;
@ -342,7 +342,7 @@ public abstract class ClientXdsClientTestBase {
CertificateProviderInfo.create("file-watcher", ImmutableMap.<String, Object>of()))) CertificateProviderInfo.create("file-watcher", ImmutableMap.<String, Object>of())))
.build(); .build();
xdsClient = xdsClient =
new ClientXdsClient( new XdsClientImpl(
xdsChannelFactory, xdsChannelFactory,
bootstrapInfo, bootstrapInfo,
Context.ROOT, Context.ROOT,
@ -589,7 +589,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(LDS, LDS_RESOURCE); verifyResourceMetadataRequested(LDS, LDS_RESOURCE);
verifySubscribedResourcesMetadataSizes(1, 0, 0, 0); verifySubscribedResourcesMetadataSizes(1, 0, 0, 0);
// Server failed to return subscribed resource within expected time window. // Server failed to return subscribed resource within expected time window.
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE); verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE);
assertThat(fakeClock.getPendingTasks(LDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty(); assertThat(fakeClock.getPendingTasks(LDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty();
verifyResourceMetadataDoesNotExist(LDS, LDS_RESOURCE); verifyResourceMetadataDoesNotExist(LDS, LDS_RESOURCE);
@ -872,7 +872,7 @@ public abstract class ClientXdsClientTestBase {
public void cachedLdsResource_absent() { public void cachedLdsResource_absent() {
DiscoveryRpcCall call = startResourceWatcher(XdsListenerResource.getInstance(), LDS_RESOURCE, DiscoveryRpcCall call = startResourceWatcher(XdsListenerResource.getInstance(), LDS_RESOURCE,
ldsResourceWatcher); ldsResourceWatcher);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE); verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE);
// Add another watcher. // Add another watcher.
ResourceWatcher<LdsUpdate> watcher = mock(ResourceWatcher.class); ResourceWatcher<LdsUpdate> watcher = mock(ResourceWatcher.class);
@ -1264,7 +1264,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(LDS, ldsResourceTwo); verifyResourceMetadataRequested(LDS, ldsResourceTwo);
verifySubscribedResourcesMetadataSizes(2, 0, 0, 0); verifySubscribedResourcesMetadataSizes(2, 0, 0, 0);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE); verify(ldsResourceWatcher).onResourceDoesNotExist(LDS_RESOURCE);
verify(watcher1).onResourceDoesNotExist(ldsResourceTwo); verify(watcher1).onResourceDoesNotExist(ldsResourceTwo);
verify(watcher2).onResourceDoesNotExist(ldsResourceTwo); verify(watcher2).onResourceDoesNotExist(ldsResourceTwo);
@ -1305,7 +1305,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(RDS, RDS_RESOURCE); verifyResourceMetadataRequested(RDS, RDS_RESOURCE);
verifySubscribedResourcesMetadataSizes(0, 0, 1, 0); verifySubscribedResourcesMetadataSizes(0, 0, 1, 0);
// Server failed to return subscribed resource within expected time window. // Server failed to return subscribed resource within expected time window.
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(rdsResourceWatcher).onResourceDoesNotExist(RDS_RESOURCE); verify(rdsResourceWatcher).onResourceDoesNotExist(RDS_RESOURCE);
assertThat(fakeClock.getPendingTasks(RDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty(); assertThat(fakeClock.getPendingTasks(RDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty();
verifyResourceMetadataDoesNotExist(RDS, RDS_RESOURCE); verifyResourceMetadataDoesNotExist(RDS, RDS_RESOURCE);
@ -1468,7 +1468,7 @@ public abstract class ClientXdsClientTestBase {
public void cachedRdsResource_absent() { public void cachedRdsResource_absent() {
DiscoveryRpcCall call = startResourceWatcher(XdsRouteConfigureResource.getInstance(), DiscoveryRpcCall call = startResourceWatcher(XdsRouteConfigureResource.getInstance(),
RDS_RESOURCE, rdsResourceWatcher); RDS_RESOURCE, rdsResourceWatcher);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(rdsResourceWatcher).onResourceDoesNotExist(RDS_RESOURCE); verify(rdsResourceWatcher).onResourceDoesNotExist(RDS_RESOURCE);
// Add another watcher. // Add another watcher.
ResourceWatcher<RdsUpdate> watcher = mock(ResourceWatcher.class); ResourceWatcher<RdsUpdate> watcher = mock(ResourceWatcher.class);
@ -1630,7 +1630,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(RDS, rdsResourceTwo); verifyResourceMetadataRequested(RDS, rdsResourceTwo);
verifySubscribedResourcesMetadataSizes(0, 0, 2, 0); verifySubscribedResourcesMetadataSizes(0, 0, 2, 0);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(rdsResourceWatcher).onResourceDoesNotExist(RDS_RESOURCE); verify(rdsResourceWatcher).onResourceDoesNotExist(RDS_RESOURCE);
verify(watcher1).onResourceDoesNotExist(rdsResourceTwo); verify(watcher1).onResourceDoesNotExist(rdsResourceTwo);
verify(watcher2).onResourceDoesNotExist(rdsResourceTwo); verify(watcher2).onResourceDoesNotExist(rdsResourceTwo);
@ -1677,7 +1677,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(CDS, CDS_RESOURCE); verifyResourceMetadataRequested(CDS, CDS_RESOURCE);
verifySubscribedResourcesMetadataSizes(0, 1, 0, 0); verifySubscribedResourcesMetadataSizes(0, 1, 0, 0);
// Server failed to return subscribed resource within expected time window. // Server failed to return subscribed resource within expected time window.
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(cdsResourceWatcher).onResourceDoesNotExist(CDS_RESOURCE); verify(cdsResourceWatcher).onResourceDoesNotExist(CDS_RESOURCE);
assertThat(fakeClock.getPendingTasks(CDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty(); assertThat(fakeClock.getPendingTasks(CDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty();
verifyResourceMetadataDoesNotExist(CDS, CDS_RESOURCE); verifyResourceMetadataDoesNotExist(CDS, CDS_RESOURCE);
@ -2138,7 +2138,7 @@ public abstract class ClientXdsClientTestBase {
// The response NACKed with errors indicating indices of the failed resources. // The response NACKed with errors indicating indices of the failed resources.
String errorMsg = "CDS response Cluster 'cluster.googleapis.com' validation error: " String errorMsg = "CDS response Cluster 'cluster.googleapis.com' validation error: "
+ "Cluster cluster.googleapis.com: malformed UpstreamTlsContext: " + "Cluster cluster.googleapis.com: malformed UpstreamTlsContext: "
+ "io.grpc.xds.ClientXdsClient$ResourceInvalidException: " + "io.grpc.xds.XdsClientImpl$ResourceInvalidException: "
+ "ca_certificate_provider_instance is required in upstream-tls-context"; + "ca_certificate_provider_instance is required in upstream-tls-context";
call.verifyRequestNack(CDS, CDS_RESOURCE, "", "0000", NODE, ImmutableList.of(errorMsg)); call.verifyRequestNack(CDS, CDS_RESOURCE, "", "0000", NODE, ImmutableList.of(errorMsg));
verify(cdsResourceWatcher).onError(errorCaptor.capture()); verify(cdsResourceWatcher).onError(errorCaptor.capture());
@ -2288,7 +2288,7 @@ public abstract class ClientXdsClientTestBase {
String errorMsg = "CDS response Cluster 'cluster.googleapis.com' validation error: " String errorMsg = "CDS response Cluster 'cluster.googleapis.com' validation error: "
+ "Cluster cluster.googleapis.com: malformed outlier_detection: " + "Cluster cluster.googleapis.com: malformed outlier_detection: "
+ "io.grpc.xds.ClientXdsClient$ResourceInvalidException: outlier_detection " + "io.grpc.xds.XdsClientImpl$ResourceInvalidException: outlier_detection "
+ "max_ejection_percent is > 100"; + "max_ejection_percent is > 100";
call.verifyRequestNack(CDS, CDS_RESOURCE, "", "0000", NODE, ImmutableList.of(errorMsg)); call.verifyRequestNack(CDS, CDS_RESOURCE, "", "0000", NODE, ImmutableList.of(errorMsg));
verify(cdsResourceWatcher).onError(errorCaptor.capture()); verify(cdsResourceWatcher).onError(errorCaptor.capture());
@ -2417,7 +2417,7 @@ public abstract class ClientXdsClientTestBase {
public void cachedCdsResource_absent() { public void cachedCdsResource_absent() {
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE, DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
cdsResourceWatcher); cdsResourceWatcher);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(cdsResourceWatcher).onResourceDoesNotExist(CDS_RESOURCE); verify(cdsResourceWatcher).onResourceDoesNotExist(CDS_RESOURCE);
ResourceWatcher<CdsUpdate> watcher = mock(ResourceWatcher.class); ResourceWatcher<CdsUpdate> watcher = mock(ResourceWatcher.class);
xdsClient.watchXdsResource(XdsClusterResource.getInstance(),CDS_RESOURCE, watcher); xdsClient.watchXdsResource(XdsClusterResource.getInstance(),CDS_RESOURCE, watcher);
@ -2612,7 +2612,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(CDS, cdsResourceTwo); verifyResourceMetadataRequested(CDS, cdsResourceTwo);
verifySubscribedResourcesMetadataSizes(0, 2, 0, 0); verifySubscribedResourcesMetadataSizes(0, 2, 0, 0);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(cdsResourceWatcher).onResourceDoesNotExist(CDS_RESOURCE); verify(cdsResourceWatcher).onResourceDoesNotExist(CDS_RESOURCE);
verify(watcher1).onResourceDoesNotExist(cdsResourceTwo); verify(watcher1).onResourceDoesNotExist(cdsResourceTwo);
verify(watcher2).onResourceDoesNotExist(cdsResourceTwo); verify(watcher2).onResourceDoesNotExist(cdsResourceTwo);
@ -2690,7 +2690,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(EDS, EDS_RESOURCE); verifyResourceMetadataRequested(EDS, EDS_RESOURCE);
verifySubscribedResourcesMetadataSizes(0, 0, 0, 1); verifySubscribedResourcesMetadataSizes(0, 0, 0, 1);
// Server failed to return subscribed resource within expected time window. // Server failed to return subscribed resource within expected time window.
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(edsResourceWatcher).onResourceDoesNotExist(EDS_RESOURCE); verify(edsResourceWatcher).onResourceDoesNotExist(EDS_RESOURCE);
assertThat(fakeClock.getPendingTasks(EDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty(); assertThat(fakeClock.getPendingTasks(EDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty();
verifyResourceMetadataDoesNotExist(EDS, EDS_RESOURCE); verifyResourceMetadataDoesNotExist(EDS, EDS_RESOURCE);
@ -2860,7 +2860,7 @@ public abstract class ClientXdsClientTestBase {
public void cachedEdsResource_absent() { public void cachedEdsResource_absent() {
DiscoveryRpcCall call = startResourceWatcher(XdsEndpointResource.getInstance(), EDS_RESOURCE, DiscoveryRpcCall call = startResourceWatcher(XdsEndpointResource.getInstance(), EDS_RESOURCE,
edsResourceWatcher); edsResourceWatcher);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(edsResourceWatcher).onResourceDoesNotExist(EDS_RESOURCE); verify(edsResourceWatcher).onResourceDoesNotExist(EDS_RESOURCE);
ResourceWatcher<EdsUpdate> watcher = mock(ResourceWatcher.class); ResourceWatcher<EdsUpdate> watcher = mock(ResourceWatcher.class);
xdsClient.watchXdsResource(XdsEndpointResource.getInstance(),EDS_RESOURCE, watcher); xdsClient.watchXdsResource(XdsEndpointResource.getInstance(),EDS_RESOURCE, watcher);
@ -3034,7 +3034,7 @@ public abstract class ClientXdsClientTestBase {
verifyResourceMetadataRequested(EDS, edsResourceTwo); verifyResourceMetadataRequested(EDS, edsResourceTwo);
verifySubscribedResourcesMetadataSizes(0, 0, 0, 2); verifySubscribedResourcesMetadataSizes(0, 0, 0, 2);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(edsResourceWatcher).onResourceDoesNotExist(EDS_RESOURCE); verify(edsResourceWatcher).onResourceDoesNotExist(EDS_RESOURCE);
verify(watcher1).onResourceDoesNotExist(edsResourceTwo); verify(watcher1).onResourceDoesNotExist(edsResourceTwo);
verify(watcher2).onResourceDoesNotExist(edsResourceTwo); verify(watcher2).onResourceDoesNotExist(edsResourceTwo);
@ -3339,7 +3339,7 @@ public abstract class ClientXdsClientTestBase {
@Test @Test
public void serverSideListenerFound() { public void serverSideListenerFound() {
Assume.assumeTrue(useProtocolV3()); Assume.assumeTrue(useProtocolV3());
ClientXdsClientTestBase.DiscoveryRpcCall call = XdsClientImplTestBase.DiscoveryRpcCall call =
startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE, startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE,
ldsResourceWatcher); ldsResourceWatcher);
Message hcmFilter = mf.buildHttpConnectionManagerFilter( Message hcmFilter = mf.buildHttpConnectionManagerFilter(
@ -3376,7 +3376,7 @@ public abstract class ClientXdsClientTestBase {
@Test @Test
public void serverSideListenerNotFound() { public void serverSideListenerNotFound() {
Assume.assumeTrue(useProtocolV3()); Assume.assumeTrue(useProtocolV3());
ClientXdsClientTestBase.DiscoveryRpcCall call = XdsClientImplTestBase.DiscoveryRpcCall call =
startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE, startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE,
ldsResourceWatcher); ldsResourceWatcher);
Message hcmFilter = mf.buildHttpConnectionManagerFilter( Message hcmFilter = mf.buildHttpConnectionManagerFilter(
@ -3396,7 +3396,7 @@ public abstract class ClientXdsClientTestBase {
ResourceType.LDS, Collections.singletonList(LISTENER_RESOURCE), "0", "0000", NODE); ResourceType.LDS, Collections.singletonList(LISTENER_RESOURCE), "0", "0000", NODE);
verifyNoInteractions(ldsResourceWatcher); verifyNoInteractions(ldsResourceWatcher);
fakeClock.forwardTime(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS); fakeClock.forwardTime(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC, TimeUnit.SECONDS);
verify(ldsResourceWatcher).onResourceDoesNotExist(LISTENER_RESOURCE); verify(ldsResourceWatcher).onResourceDoesNotExist(LISTENER_RESOURCE);
assertThat(fakeClock.getPendingTasks(LDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty(); assertThat(fakeClock.getPendingTasks(LDS_RESOURCE_FETCH_TIMEOUT_TASK_FILTER)).isEmpty();
} }
@ -3404,7 +3404,7 @@ public abstract class ClientXdsClientTestBase {
@Test @Test
public void serverSideListenerResponseErrorHandling_badDownstreamTlsContext() { public void serverSideListenerResponseErrorHandling_badDownstreamTlsContext() {
Assume.assumeTrue(useProtocolV3()); Assume.assumeTrue(useProtocolV3());
ClientXdsClientTestBase.DiscoveryRpcCall call = XdsClientImplTestBase.DiscoveryRpcCall call =
startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE, startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE,
ldsResourceWatcher); ldsResourceWatcher);
Message hcmFilter = mf.buildHttpConnectionManagerFilter( Message hcmFilter = mf.buildHttpConnectionManagerFilter(
@ -3431,7 +3431,7 @@ public abstract class ClientXdsClientTestBase {
@Test @Test
public void serverSideListenerResponseErrorHandling_badTransportSocketName() { public void serverSideListenerResponseErrorHandling_badTransportSocketName() {
Assume.assumeTrue(useProtocolV3()); Assume.assumeTrue(useProtocolV3());
ClientXdsClientTestBase.DiscoveryRpcCall call = XdsClientImplTestBase.DiscoveryRpcCall call =
startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE, startResourceWatcher(XdsListenerResource.getInstance(), LISTENER_RESOURCE,
ldsResourceWatcher); ldsResourceWatcher);
Message hcmFilter = mf.buildHttpConnectionManagerFilter( Message hcmFilter = mf.buildHttpConnectionManagerFilter(
@ -3485,7 +3485,7 @@ public abstract class ClientXdsClientTestBase {
ScheduledTask timeoutTask = ScheduledTask timeoutTask =
Iterables.getOnlyElement(fakeClock.getPendingTasks(timeoutTaskFilter)); Iterables.getOnlyElement(fakeClock.getPendingTasks(timeoutTaskFilter));
assertThat(timeoutTask.getDelay(TimeUnit.SECONDS)) assertThat(timeoutTask.getDelay(TimeUnit.SECONDS))
.isEqualTo(ClientXdsClient.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC); .isEqualTo(XdsClientImpl.INITIAL_RESOURCE_FETCH_TIMEOUT_SEC);
return call; return call;
} }

View File

@ -108,10 +108,10 @@ import org.mockito.ArgumentMatcher;
import org.mockito.InOrder; import org.mockito.InOrder;
/** /**
* Tests for {@link ClientXdsClient} with protocol version v2. * Tests for {@link XdsClientImpl} with protocol version v2.
*/ */
@RunWith(Parameterized.class) @RunWith(Parameterized.class)
public class ClientXdsClientV2Test extends ClientXdsClientTestBase { public class XdsClientImplV2Test extends XdsClientImplTestBase {
/** Parameterized test cases. */ /** Parameterized test cases. */
@Parameters(name = "ignoreResourceDeletion={0}") @Parameters(name = "ignoreResourceDeletion={0}")

View File

@ -116,10 +116,10 @@ import org.mockito.ArgumentMatcher;
import org.mockito.InOrder; import org.mockito.InOrder;
/** /**
* Tests for {@link ClientXdsClient} with protocol version v3. * Tests for {@link XdsClientImpl} with protocol version v3.
*/ */
@RunWith(Parameterized.class) @RunWith(Parameterized.class)
public class ClientXdsClientV3Test extends ClientXdsClientTestBase { public class XdsClientImplV3Test extends XdsClientImplTestBase {
/** Parameterized test cases. */ /** Parameterized test cases. */
@Parameters(name = "ignoreResourceDeletion={0}") @Parameters(name = "ignoreResourceDeletion={0}")