Skip to content

Commit 1f8f15f

Browse files
committed
core: clarify dns javadoc/tests about trailing path segments
1 parent 65596ae commit 1f8f15f

File tree

2 files changed

+25
-20
lines changed

2 files changed

+25
-20
lines changed

core/src/main/java/io/grpc/internal/DnsNameResolverProvider.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,12 @@
3333
* A provider for {@link DnsNameResolver}.
3434
*
3535
* <p>It resolves a target URI whose scheme is {@code "dns"}. The (optional) authority of the target
36-
* URI is reserved for the address of alternative DNS server (not implemented yet). The first path
37-
* segment of the hierarchical target URI is interpreted as an RFC 2396 "server-based" authority and
38-
* used as the "service authority" of the resulting {@link NameResolver}. The "host" part of this
39-
* authority is the name to be resolved by DNS. The "port" part of this authority (if present) will
40-
* become the port number for all {@link InetSocketAddress} produced by this resolver. For example:
36+
* URI is reserved for the address of alternative DNS server (not implemented yet). The target URI
37+
* must be hierarchical and have exactly one path segment which will be interpreted as an RFC 2396
38+
* "server-based" authority and used as the "service authority" of the resulting {@link
39+
* NameResolver}. The "host" part of this authority is the name to be resolved by DNS. The "port"
40+
* part of this authority (if present) will become the port number for all {@link InetSocketAddress}
41+
* produced by this resolver. For example:
4142
*
4243
* <ul>
4344
* <li>{@code "dns:///foo.googleapis.com:8080"} (using default DNS)</li>

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

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,21 +47,23 @@ public static Iterable<Object[]> data() {
4747

4848
@Parameter public boolean enableRfc3986UrisParam;
4949

50-
private final SynchronizationContext syncContext = new SynchronizationContext(
51-
new Thread.UncaughtExceptionHandler() {
52-
@Override
53-
public void uncaughtException(Thread t, Throwable e) {
54-
throw new AssertionError(e);
55-
}
56-
});
57-
private final NameResolver.Args args = NameResolver.Args.newBuilder()
58-
.setDefaultPort(8080)
59-
.setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR)
60-
.setSynchronizationContext(syncContext)
61-
.setServiceConfigParser(mock(ServiceConfigParser.class))
62-
.setChannelLogger(mock(ChannelLogger.class))
63-
.setScheduledExecutorService(fakeClock.getScheduledExecutorService())
64-
.build();
50+
private final SynchronizationContext syncContext =
51+
new SynchronizationContext(
52+
new Thread.UncaughtExceptionHandler() {
53+
@Override
54+
public void uncaughtException(Thread t, Throwable e) {
55+
throw new AssertionError(e);
56+
}
57+
});
58+
private final NameResolver.Args args =
59+
NameResolver.Args.newBuilder()
60+
.setDefaultPort(8080)
61+
.setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR)
62+
.setSynchronizationContext(syncContext)
63+
.setServiceConfigParser(mock(ServiceConfigParser.class))
64+
.setChannelLogger(mock(ChannelLogger.class))
65+
.setScheduledExecutorService(fakeClock.getScheduledExecutorService())
66+
.build();
6567

6668
private DnsNameResolverProvider provider = new DnsNameResolverProvider();
6769

@@ -103,6 +105,8 @@ public void newNameResolver_validDnsNameWithoutPort_usesDefaultPort() {
103105
assertThat(nameResolver.getPort()).isEqualTo(args.getDefaultPort());
104106
}
105107

108+
// TODO(jdcormie): Trailing path segments *should* be forbidden. This test just demonstrates that
109+
// both newNameResolver() overloads behave the same with respect to this bug.
106110
@Test
107111
public void newNameResolver_toleratesTrailingPathSegments() {
108112
NameResolver nameResolver = newNameResolver("dns:///foo.googleapis.com/ig/nor/ed", args);

0 commit comments

Comments
 (0)