mirror of https://github.com/grpc/grpc-java.git
xds: add env var protection for google-c2p resolver (#7918)
This commit is contained in:
parent
9b803f338b
commit
7a92de619b
|
|
@ -29,6 +29,8 @@ import java.net.URI;
|
||||||
@Internal
|
@Internal
|
||||||
public final class GoogleCloudToProdNameResolverProvider extends NameResolverProvider {
|
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";
|
private static final String SCHEME = "google-c2p";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -48,7 +50,10 @@ public final class GoogleCloudToProdNameResolverProvider extends NameResolverPro
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isAvailable() {
|
protected boolean isAvailable() {
|
||||||
return true;
|
if (enableC2PResolver) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,14 @@
|
||||||
package io.grpc.xds;
|
package io.grpc.xds;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import io.grpc.ChannelLogger;
|
import io.grpc.ChannelLogger;
|
||||||
|
import io.grpc.InternalServiceProviders;
|
||||||
import io.grpc.NameResolver;
|
import io.grpc.NameResolver;
|
||||||
import io.grpc.NameResolver.ServiceConfigParser;
|
import io.grpc.NameResolver.ServiceConfigParser;
|
||||||
import io.grpc.NameResolverRegistry;
|
import io.grpc.NameResolverProvider;
|
||||||
import io.grpc.SynchronizationContext;
|
import io.grpc.SynchronizationContext;
|
||||||
import io.grpc.internal.FakeClock;
|
import io.grpc.internal.FakeClock;
|
||||||
import io.grpc.internal.GrpcUtil;
|
import io.grpc.internal.GrpcUtil;
|
||||||
|
|
@ -54,12 +56,24 @@ public class GoogleCloudToProdNameResolverProviderTest {
|
||||||
.setChannelLogger(mock(ChannelLogger.class))
|
.setChannelLogger(mock(ChannelLogger.class))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
private final NameResolverRegistry nsRegistry = NameResolverRegistry.getDefaultRegistry();
|
private GoogleCloudToProdNameResolverProvider provider =
|
||||||
|
new GoogleCloudToProdNameResolverProvider();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void provided() {
|
public void provided() {
|
||||||
NameResolver resolver = nsRegistry.asFactory().newNameResolver(
|
for (NameResolverProvider current
|
||||||
URI.create("google-c2p:///foo.googleapis.com"), args);
|
: InternalServiceProviders.getCandidatesViaServiceLoader(
|
||||||
assertThat(resolver).isInstanceOf(GoogleCloudToProdNameResolver.class);
|
NameResolverProvider.class, getClass().getClassLoader())) {
|
||||||
|
if (current instanceof GoogleCloudToProdNameResolverProvider) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fail("GoogleCloudToProdNameResolverProvider not registered");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Test
|
||||||
|
public void newNameResolver() {
|
||||||
|
assertThat(provider.newNameResolver(URI.create("google-c2p:///foo.googleapis.com"), args))
|
||||||
|
.isInstanceOf(GoogleCloudToProdNameResolver.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue