Skip to content

Commit 65596ae

Browse files
authored
core: Move 4 test cases from DnsNameResolverTest to DnsNameResolverProviderTest (#12605)
These test cases make use of DnsNameResolverProvider but also cover some logic from DnsNameResolverProvider's ctor. They could reasonably live in either file but DnsNameResolverProviderTest already knows how to test the new RFC 3986 newNameResolver() overload. Leaves DnsNameResolverTest.java without any `java.net.URI` usage, which makes sense because DnsNameResolver's public API does not mention java.net.URI. Removed test helpers that asserted more than "a single conceptual fact" per https://abseil.io/resources/swe-book/html/ch12.html#shared_helpers_and_validation
1 parent 59a64f0 commit 65596ae

2 files changed

Lines changed: 28 additions & 49 deletions

File tree

core/src/test/java/io/grpc/internal/DnsNameResolverProviderTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static com.google.common.truth.Truth.assertThat;
2020
import static com.google.common.truth.TruthJUnit.assume;
21+
import static org.junit.Assert.assertThrows;
2122
import static org.junit.Assert.assertTrue;
2223
import static org.mockito.Mockito.mock;
2324

@@ -75,6 +76,7 @@ public void newNameResolver_acceptsHostAndPort() {
7576
assertThat(nameResolver).isNotNull();
7677
assertThat(nameResolver.getClass()).isSameInstanceAs(DnsNameResolver.class);
7778
assertThat(nameResolver.getServiceAuthority()).isEqualTo("localhost:443");
79+
assertThat(((DnsNameResolver) nameResolver).getPort()).isEqualTo(443);
7880
}
7981

8082
@Test
@@ -92,6 +94,15 @@ public void newNameResolver_rejectsNonDnsScheme() {
9294
assertThat(nameResolver).isNull();
9395
}
9496

97+
@Test
98+
public void newNameResolver_validDnsNameWithoutPort_usesDefaultPort() {
99+
DnsNameResolver nameResolver =
100+
(DnsNameResolver) newNameResolver("dns:/foo.googleapis.com", args);
101+
assertThat(nameResolver).isNotNull();
102+
assertThat(nameResolver.getServiceAuthority()).isEqualTo("foo.googleapis.com");
103+
assertThat(nameResolver.getPort()).isEqualTo(args.getDefaultPort());
104+
}
105+
95106
@Test
96107
public void newNameResolver_toleratesTrailingPathSegments() {
97108
NameResolver nameResolver = newNameResolver("dns:///foo.googleapis.com/ig/nor/ed", args);
@@ -108,6 +119,22 @@ public void newNameResolver_toleratesAuthority() {
108119
assertThat(nameResolver.getServiceAuthority()).isEqualTo("foo.googleapis.com");
109120
}
110121

122+
@Test
123+
public void newNameResolver_validIpv6Host() {
124+
NameResolver nameResolver = newNameResolver("dns:/%5B::1%5D", args);
125+
assertThat(nameResolver).isNotNull();
126+
assertThat(nameResolver.getClass()).isSameInstanceAs(DnsNameResolver.class);
127+
assertThat(nameResolver.getServiceAuthority()).isEqualTo("[::1]");
128+
}
129+
130+
@Test
131+
public void newNameResolver_invalidIpv6Host_throws() {
132+
IllegalArgumentException e =
133+
assertThrows(
134+
IllegalArgumentException.class, () -> newNameResolver("dns:/%5Binvalid%5D", args));
135+
assertThat(e).hasMessageThat().contains("invalid");
136+
}
137+
111138
private NameResolver newNameResolver(String uriString, NameResolver.Args args) {
112139
return enableRfc3986UrisParam
113140
? provider.newNameResolver(Uri.create(uriString), args)

core/src/test/java/io/grpc/internal/DnsNameResolverTest.java

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@
6464
import java.net.InetAddress;
6565
import java.net.InetSocketAddress;
6666
import java.net.SocketAddress;
67-
import java.net.URI;
6867
import java.net.UnknownHostException;
6968
import java.util.ArrayList;
7069
import java.util.Arrays;
@@ -112,7 +111,6 @@ public void uncaughtException(Thread t, Throwable e) {
112111
}
113112
});
114113

115-
private final DnsNameResolverProvider provider = new DnsNameResolverProvider();
116114
private final FakeClock fakeClock = new FakeClock();
117115
private final FakeClock fakeExecutor = new FakeClock();
118116
private static final FakeClock.TaskFilter NAME_RESOLVER_REFRESH_TASK_FILTER =
@@ -139,15 +137,6 @@ public Executor create() {
139137
public void close(Executor instance) {}
140138
}
141139

142-
private final NameResolver.Args args = NameResolver.Args.newBuilder()
143-
.setDefaultPort(DEFAULT_PORT)
144-
.setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR)
145-
.setSynchronizationContext(syncContext)
146-
.setServiceConfigParser(mock(ServiceConfigParser.class))
147-
.setChannelLogger(mock(ChannelLogger.class))
148-
.setScheduledExecutorService(fakeExecutor.getScheduledExecutorService())
149-
.build();
150-
151140
@Mock
152141
private NameResolver.Listener2 mockListener;
153142
@Captor
@@ -167,6 +156,7 @@ private RetryingNameResolver newResolver(String name, int defaultPort, boolean i
167156
isAndroid);
168157
}
169158

159+
170160
private RetryingNameResolver newResolver(
171161
String name,
172162
int defaultPort,
@@ -216,28 +206,6 @@ public void setUp() {
216206
when(mockListener.onResult2(isA(ResolutionResult.class))).thenReturn(Status.OK);
217207
}
218208

219-
@Test
220-
public void invalidDnsName() throws Exception {
221-
testInvalidUri(new URI("dns", null, "/[invalid]", null));
222-
}
223-
224-
@Test
225-
public void validIpv6() throws Exception {
226-
testValidUri(new URI("dns", null, "/[::1]", null), "[::1]", DEFAULT_PORT);
227-
}
228-
229-
@Test
230-
public void validDnsNameWithoutPort() throws Exception {
231-
testValidUri(new URI("dns", null, "/foo.googleapis.com", null),
232-
"foo.googleapis.com", DEFAULT_PORT);
233-
}
234-
235-
@Test
236-
public void validDnsNameWithPort() throws Exception {
237-
testValidUri(new URI("dns", null, "/foo.googleapis.com:456", null),
238-
"foo.googleapis.com:456", 456);
239-
}
240-
241209
@Test
242210
public void nullDnsName() {
243211
try {
@@ -1284,22 +1252,6 @@ public void parseServiceConfig_matches() {
12841252
assertThat(result.getConfig()).isEqualTo(ImmutableMap.of());
12851253
}
12861254

1287-
private void testInvalidUri(URI uri) {
1288-
try {
1289-
provider.newNameResolver(uri, args);
1290-
fail("Should have failed");
1291-
} catch (IllegalArgumentException e) {
1292-
// expected
1293-
}
1294-
}
1295-
1296-
private void testValidUri(URI uri, String exportedAuthority, int expectedPort) {
1297-
DnsNameResolver resolver = (DnsNameResolver) provider.newNameResolver(uri, args);
1298-
assertNotNull(resolver);
1299-
assertEquals(expectedPort, resolver.getPort());
1300-
assertEquals(exportedAuthority, resolver.getServiceAuthority());
1301-
}
1302-
13031255
private byte lastByte = 0;
13041256

13051257
private List<InetAddress> createAddressList(int n) throws UnknownHostException {

0 commit comments

Comments
 (0)