⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.TruthJUnit.assume;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;

Expand Down Expand Up @@ -75,6 +76,7 @@ public void newNameResolver_acceptsHostAndPort() {
assertThat(nameResolver).isNotNull();
assertThat(nameResolver.getClass()).isSameInstanceAs(DnsNameResolver.class);
assertThat(nameResolver.getServiceAuthority()).isEqualTo("localhost:443");
assertThat(((DnsNameResolver) nameResolver).getPort()).isEqualTo(443);
}

@Test
Expand All @@ -92,6 +94,15 @@ public void newNameResolver_rejectsNonDnsScheme() {
assertThat(nameResolver).isNull();
}

@Test
public void newNameResolver_validDnsNameWithoutPort_usesDefaultPort() {
DnsNameResolver nameResolver =
(DnsNameResolver) newNameResolver("dns:/foo.googleapis.com", args);
assertThat(nameResolver).isNotNull();
assertThat(nameResolver.getServiceAuthority()).isEqualTo("foo.googleapis.com");
assertThat(nameResolver.getPort()).isEqualTo(args.getDefaultPort());
}

@Test
public void newNameResolver_toleratesTrailingPathSegments() {
NameResolver nameResolver = newNameResolver("dns:///foo.googleapis.com/ig/nor/ed", args);
Expand All @@ -108,6 +119,22 @@ public void newNameResolver_toleratesAuthority() {
assertThat(nameResolver.getServiceAuthority()).isEqualTo("foo.googleapis.com");
}

@Test
public void newNameResolver_validIpv6Host() {
NameResolver nameResolver = newNameResolver("dns:/%5B::1%5D", args);
assertThat(nameResolver).isNotNull();
assertThat(nameResolver.getClass()).isSameInstanceAs(DnsNameResolver.class);
assertThat(nameResolver.getServiceAuthority()).isEqualTo("[::1]");
}

@Test
public void newNameResolver_invalidIpv6Host_throws() {
IllegalArgumentException e =
assertThrows(
IllegalArgumentException.class, () -> newNameResolver("dns:/%5Binvalid%5D", args));
assertThat(e).hasMessageThat().contains("invalid");
}

private NameResolver newNameResolver(String uriString, NameResolver.Args args) {
return enableRfc3986UrisParam
? provider.newNameResolver(Uri.create(uriString), args)
Expand Down
50 changes: 1 addition & 49 deletions core/src/test/java/io/grpc/internal/DnsNameResolverTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.URI;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -112,7 +111,6 @@ public void uncaughtException(Thread t, Throwable e) {
}
});

private final DnsNameResolverProvider provider = new DnsNameResolverProvider();
private final FakeClock fakeClock = new FakeClock();
private final FakeClock fakeExecutor = new FakeClock();
private static final FakeClock.TaskFilter NAME_RESOLVER_REFRESH_TASK_FILTER =
Expand All @@ -139,15 +137,6 @@ public Executor create() {
public void close(Executor instance) {}
}

private final NameResolver.Args args = NameResolver.Args.newBuilder()
.setDefaultPort(DEFAULT_PORT)
.setProxyDetector(GrpcUtil.DEFAULT_PROXY_DETECTOR)
.setSynchronizationContext(syncContext)
.setServiceConfigParser(mock(ServiceConfigParser.class))
.setChannelLogger(mock(ChannelLogger.class))
.setScheduledExecutorService(fakeExecutor.getScheduledExecutorService())
.build();

@Mock
private NameResolver.Listener2 mockListener;
@Captor
Expand All @@ -169,6 +158,7 @@ private RetryingNameResolver newResolver(String name, int defaultPort, boolean i
isAndroid);
}


private RetryingNameResolver newResolver(
String name,
int defaultPort,
Expand Down Expand Up @@ -231,28 +221,6 @@ public void restoreSystemProperty() {
}
}

@Test
public void invalidDnsName() throws Exception {
testInvalidUri(new URI("dns", null, "/[invalid]", null));
}

@Test
public void validIpv6() throws Exception {
testValidUri(new URI("dns", null, "/[::1]", null), "[::1]", DEFAULT_PORT);
}

@Test
public void validDnsNameWithoutPort() throws Exception {
testValidUri(new URI("dns", null, "/foo.googleapis.com", null),
"foo.googleapis.com", DEFAULT_PORT);
}

@Test
public void validDnsNameWithPort() throws Exception {
testValidUri(new URI("dns", null, "/foo.googleapis.com:456", null),
"foo.googleapis.com:456", 456);
}

@Test
public void nullDnsName() {
try {
Expand Down Expand Up @@ -1299,22 +1267,6 @@ public void parseServiceConfig_matches() {
assertThat(result.getConfig()).isEqualTo(ImmutableMap.of());
}

private void testInvalidUri(URI uri) {
try {
provider.newNameResolver(uri, args);
fail("Should have failed");
} catch (IllegalArgumentException e) {
// expected
}
}

private void testValidUri(URI uri, String exportedAuthority, int expectedPort) {
DnsNameResolver resolver = (DnsNameResolver) provider.newNameResolver(uri, args);
assertNotNull(resolver);
assertEquals(expectedPort, resolver.getPort());
assertEquals(exportedAuthority, resolver.getServiceAuthority());
}

private byte lastByte = 0;

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