diff --git a/api/src/main/java/io/grpc/Grpc.java b/api/src/main/java/io/grpc/Grpc.java index baa9f5f0ab6..280eeaec825 100644 --- a/api/src/main/java/io/grpc/Grpc.java +++ b/api/src/main/java/io/grpc/Grpc.java @@ -101,6 +101,15 @@ public static ManagedChannelBuilder newChannelBuilder( return ManagedChannelRegistry.getDefaultRegistry().newChannelBuilder(target, creds); } + /** + * Creates a channel builder with a target string, credentials and nameResolverRegistry. + */ + public static ManagedChannelBuilder newChannelBuilder(String target, + ChannelCredentials creds, NameResolverRegistry nameResolverRegistry) { + return ManagedChannelRegistry.getDefaultRegistry().newChannelBuilder(nameResolverRegistry, + target, creds); + } + /** * Creates a channel builder from a host, port, and credentials. The host and port are combined to * form an authority string and then passed to {@link #newChannelBuilder(String, diff --git a/api/src/main/java/io/grpc/ManagedChannelRegistry.java b/api/src/main/java/io/grpc/ManagedChannelRegistry.java index aed5eca9abf..285d87b1e29 100644 --- a/api/src/main/java/io/grpc/ManagedChannelRegistry.java +++ b/api/src/main/java/io/grpc/ManagedChannelRegistry.java @@ -155,7 +155,6 @@ ManagedChannelBuilder newChannelBuilder(String target, ChannelCredentials cre return newChannelBuilder(NameResolverRegistry.getDefaultRegistry(), target, creds); } - @VisibleForTesting ManagedChannelBuilder newChannelBuilder(NameResolverRegistry nameResolverRegistry, String target, ChannelCredentials creds) { NameResolverProvider nameResolverProvider = null; diff --git a/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java b/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java index e0c3d5a8525..8ac42d2c851 100644 --- a/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java +++ b/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java @@ -28,7 +28,9 @@ import io.grpc.ManagedChannelProvider; import io.grpc.ManagedChannelProvider.NewChannelBuilderResult; import io.grpc.ManagedChannelRegistryAccessor; +import io.grpc.NameResolverRegistry; import io.grpc.TlsChannelCredentials; +import io.grpc.internal.testing.FakeNameResolverProvider; import io.grpc.stub.StreamObserver; import io.grpc.testing.GrpcCleanupRule; import io.grpc.testing.protobuf.SimpleRequest; @@ -120,6 +122,24 @@ public void managedChannelRegistry_newChannelBuilder() { channel.shutdownNow(); } + @Test + public void managedChannelRegistry_newChannelBuilderForNameResolverRegistry() { + Assume.assumeTrue(Utils.isEpollAvailable()); + NameResolverRegistry nameResolverRegistry = new NameResolverRegistry(); + DomainSocketAddress socketAddress = new DomainSocketAddress("test-server"); + FakeNameResolverProvider fakeNameResolverProvider = new FakeNameResolverProvider( + "unix:///sock.sock", socketAddress); + nameResolverRegistry.register(fakeNameResolverProvider); + ManagedChannelBuilder managedChannelBuilder + = Grpc.newChannelBuilder("unix:///sock.sock", + InsecureChannelCredentials.create(), nameResolverRegistry); + assertThat(managedChannelBuilder).isNotNull(); + ManagedChannel channel = managedChannelBuilder.build(); + assertThat(channel).isNotNull(); + assertThat(channel.authority()).isEqualTo("/sock.sock"); + channel.shutdownNow(); + } + @Test public void udsClientServerTestUsingProvider() throws IOException { Assume.assumeTrue(Utils.isEpollAvailable());