From 1b5ab2cfd0f83f9fcb96dad1225d44f84aee4da7 Mon Sep 17 00:00:00 2001
From: AgraVator <reachabhishekag@gmail.com>
Date: Mon, 17 Feb 2025 14:26:37 +0530
Subject: [PATCH 1/2] Adds Grpc.newManagedChannel(String, ChannelCredentials,
 NameResolverRegistry)

---
 api/src/main/java/io/grpc/Grpc.java                |  9 +++++++++
 .../io/grpc/netty/UdsNettyChannelProviderTest.java | 14 ++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/api/src/main/java/io/grpc/Grpc.java b/api/src/main/java/io/grpc/Grpc.java
index baa9f5f0ab6..4d6d899a3b5 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<?> newChannelBuilderForNameResolverRegistry(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/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java b/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
index e0c3d5a8525..4e0497e82ac 100644
--- a/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
+++ b/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
@@ -28,6 +28,7 @@
 import io.grpc.ManagedChannelProvider;
 import io.grpc.ManagedChannelProvider.NewChannelBuilderResult;
 import io.grpc.ManagedChannelRegistryAccessor;
+import io.grpc.NameResolverRegistry;
 import io.grpc.TlsChannelCredentials;
 import io.grpc.stub.StreamObserver;
 import io.grpc.testing.GrpcCleanupRule;
@@ -120,6 +121,19 @@ public void managedChannelRegistry_newChannelBuilder() {
     channel.shutdownNow();
   }
 
+  @Test
+  public void managedChannelRegistry_newChannelBuilderForNameResolverRegistry() {
+    Assume.assumeTrue(Utils.isEpollAvailable());
+    ManagedChannelBuilder<?> managedChannelBuilder
+            = Grpc.newChannelBuilderForNameResolverRegistry("unix:///sock.sock",
+             InsecureChannelCredentials.create(), NameResolverRegistry.getDefaultRegistry());
+    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());

From 67548a930bcbb69e578887359bb4100003d4d82a Mon Sep 17 00:00:00 2001
From: AgraVator <reachabhishekag@gmail.com>
Date: Wed, 19 Feb 2025 11:18:09 +0530
Subject: [PATCH 2/2] 1. refactors method name to make it overloaded 2. removes
 visibleForTesting 3. improves the test case

---
 api/src/main/java/io/grpc/Grpc.java                    |  2 +-
 api/src/main/java/io/grpc/ManagedChannelRegistry.java  |  1 -
 .../io/grpc/netty/UdsNettyChannelProviderTest.java     | 10 ++++++++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/api/src/main/java/io/grpc/Grpc.java b/api/src/main/java/io/grpc/Grpc.java
index 4d6d899a3b5..280eeaec825 100644
--- a/api/src/main/java/io/grpc/Grpc.java
+++ b/api/src/main/java/io/grpc/Grpc.java
@@ -104,7 +104,7 @@ public static ManagedChannelBuilder<?> newChannelBuilder(
   /**
    * Creates a channel builder with a target string, credentials and nameResolverRegistry.
    */
-  public static ManagedChannelBuilder<?> newChannelBuilderForNameResolverRegistry(String target,
+  public static ManagedChannelBuilder<?> newChannelBuilder(String target,
       ChannelCredentials creds, NameResolverRegistry nameResolverRegistry) {
     return ManagedChannelRegistry.getDefaultRegistry().newChannelBuilder(nameResolverRegistry,
       target, creds);
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 4e0497e82ac..8ac42d2c851 100644
--- a/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
+++ b/netty/src/test/java/io/grpc/netty/UdsNettyChannelProviderTest.java
@@ -30,6 +30,7 @@
 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;
@@ -124,9 +125,14 @@ public void managedChannelRegistry_newChannelBuilder() {
   @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.newChannelBuilderForNameResolverRegistry("unix:///sock.sock",
-             InsecureChannelCredentials.create(), NameResolverRegistry.getDefaultRegistry());
+            = Grpc.newChannelBuilder("unix:///sock.sock",
+            InsecureChannelCredentials.create(), nameResolverRegistry);
     assertThat(managedChannelBuilder).isNotNull();
     ManagedChannel channel = managedChannelBuilder.build();
     assertThat(channel).isNotNull();