diff --git a/xds/src/main/java/io/grpc/xds/GoogleCloudToProdNameResolverProvider.java b/xds/src/main/java/io/grpc/xds/GoogleCloudToProdNameResolverProvider.java index d6c60abf9d..be8324b93c 100644 --- a/xds/src/main/java/io/grpc/xds/GoogleCloudToProdNameResolverProvider.java +++ b/xds/src/main/java/io/grpc/xds/GoogleCloudToProdNameResolverProvider.java @@ -29,6 +29,8 @@ import java.net.URI; @Internal public final class GoogleCloudToProdNameResolverProvider extends NameResolverProvider { + private static final boolean enableC2PResolver = + Boolean.parseBoolean(System.getenv("GRPC_EXPERIMENTAL_GOOGLE_C2P_RESOLVER")); private static final String SCHEME = "google-c2p"; @Override @@ -48,7 +50,10 @@ public final class GoogleCloudToProdNameResolverProvider extends NameResolverPro @Override protected boolean isAvailable() { - return true; + if (enableC2PResolver) { + return true; + } + return false; } @Override diff --git a/xds/src/test/java/io/grpc/xds/GoogleCloudToProdNameResolverProviderTest.java b/xds/src/test/java/io/grpc/xds/GoogleCloudToProdNameResolverProviderTest.java index 2bf5811b16..372c8af8f4 100644 --- a/xds/src/test/java/io/grpc/xds/GoogleCloudToProdNameResolverProviderTest.java +++ b/xds/src/test/java/io/grpc/xds/GoogleCloudToProdNameResolverProviderTest.java @@ -17,12 +17,14 @@ package io.grpc.xds; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import io.grpc.ChannelLogger; +import io.grpc.InternalServiceProviders; import io.grpc.NameResolver; import io.grpc.NameResolver.ServiceConfigParser; -import io.grpc.NameResolverRegistry; +import io.grpc.NameResolverProvider; import io.grpc.SynchronizationContext; import io.grpc.internal.FakeClock; import io.grpc.internal.GrpcUtil; @@ -54,12 +56,24 @@ public class GoogleCloudToProdNameResolverProviderTest { .setChannelLogger(mock(ChannelLogger.class)) .build(); - private final NameResolverRegistry nsRegistry = NameResolverRegistry.getDefaultRegistry(); + private GoogleCloudToProdNameResolverProvider provider = + new GoogleCloudToProdNameResolverProvider(); @Test public void provided() { - NameResolver resolver = nsRegistry.asFactory().newNameResolver( - URI.create("google-c2p:///foo.googleapis.com"), args); - assertThat(resolver).isInstanceOf(GoogleCloudToProdNameResolver.class); + for (NameResolverProvider current + : InternalServiceProviders.getCandidatesViaServiceLoader( + NameResolverProvider.class, getClass().getClassLoader())) { + if (current instanceof GoogleCloudToProdNameResolverProvider) { + return; + } + } + fail("GoogleCloudToProdNameResolverProvider not registered"); } -} \ No newline at end of file + + @Test + public void newNameResolver() { + assertThat(provider.newNameResolver(URI.create("google-c2p:///foo.googleapis.com"), args)) + .isInstanceOf(GoogleCloudToProdNameResolver.class); + } +}