testFollowNsRedirects() — netty Function Reference
Architecture documentation for the testFollowNsRedirects() function in DnsNameResolverTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD d2c4f806_547d_c83f_0c4a_272a5a398d07["testFollowNsRedirects()"] b6215f36_0afe_a284_a3fd_3999e90a8e97["DnsNameResolverTest"] d2c4f806_547d_c83f_0c4a_272a5a398d07 -->|defined in| b6215f36_0afe_a284_a3fd_3999e90a8e97 2bdecd5c_adb7_56a1_7077_0b7f5c59a1d0["testFollowNsRedirectsNoopCaches()"] 2bdecd5c_adb7_56a1_7077_0b7f5c59a1d0 -->|calls| d2c4f806_547d_c83f_0c4a_272a5a398d07 d81f9ad1_1113_dd0e_86fb_b7e2e4b3ed21["testFollowNsRedirectsNoopDnsCache()"] d81f9ad1_1113_dd0e_86fb_b7e2e4b3ed21 -->|calls| d2c4f806_547d_c83f_0c4a_272a5a398d07 ff1582c1_f10a_35d6_076c_8b48366632fd["testFollowNsRedirectsNoopAuthoritativeDnsServerCache()"] ff1582c1_f10a_35d6_076c_8b48366632fd -->|calls| d2c4f806_547d_c83f_0c4a_272a5a398d07 75e48225_105d_0e15_21ba_a94afed7454c["testFollowNsRedirectsDefaultCaches()"] 75e48225_105d_0e15_21ba_a94afed7454c -->|calls| d2c4f806_547d_c83f_0c4a_272a5a398d07 48ebc5b6_b7e1_3b3b_55d4_944dc230153b["testFollowNsRedirectAndTrySecondNsOnTimeout()"] 48ebc5b6_b7e1_3b3b_55d4_944dc230153b -->|calls| d2c4f806_547d_c83f_0c4a_272a5a398d07 9aeb37f5_19fc_2fe5_b0e2_37475f79afa9["testFollowNsRedirectAndTrySecondNsOnTimeoutDefaultCaches()"] 9aeb37f5_19fc_2fe5_b0e2_37475f79afa9 -->|calls| d2c4f806_547d_c83f_0c4a_272a5a398d07 6379f5e9_9105_8ed2_288e_b124a4c8863f["InetSocketAddress()"] d2c4f806_547d_c83f_0c4a_272a5a398d07 -->|calls| 6379f5e9_9105_8ed2_288e_b124a4c8863f f68a278a_d1e5_7598_a2d3_c261c81029bc["get()"] d2c4f806_547d_c83f_0c4a_272a5a398d07 -->|calls| f68a278a_d1e5_7598_a2d3_c261c81029bc e0db6033_0923_3a43_22a1_11714277de6c["clear()"] d2c4f806_547d_c83f_0c4a_272a5a398d07 -->|calls| e0db6033_0923_3a43_22a1_11714277de6c style d2c4f806_547d_c83f_0c4a_272a5a398d07 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java lines 1606–1737
private void testFollowNsRedirects(DnsNameResolverChannelStrategy strategy, DnsCache cache,
AuthoritativeDnsServerCache authoritativeDnsServerCache,
final boolean invalidNsFirst) throws Exception {
final String domain = "netty.io";
final String ns1Name = "ns1." + domain;
final String ns2Name = "ns2." + domain;
final InetAddress expected = InetAddress.getByAddress("some.record." + domain, new byte[] { 10, 10, 10, 10 });
// This is used to simulate a query timeout...
final DatagramSocket socket = new DatagramSocket(new InetSocketAddress(0));
final TestDnsServer dnsServerAuthority = new TestDnsServer(new RecordStore() {
@Override
public Set<ResourceRecord> getRecords(QuestionRecord question) {
if (question.getDomainName().equals(expected.getHostName())) {
return Collections.singleton(newARecord(
expected.getHostName(), expected.getHostAddress()));
}
return Collections.emptySet();
}
});
dnsServerAuthority.start();
TestDnsServer redirectServer = new TestDnsServer(new HashSet<String>(
asList(expected.getHostName(), ns1Name, ns2Name))) {
@Override
protected DnsMessage filterMessage(DnsMessage message) {
for (QuestionRecord record: message.getQuestionRecords()) {
if (record.getDomainName().equals(expected.getHostName())) {
message.getAdditionalRecords().clear();
message.getAnswerRecords().clear();
if (invalidNsFirst) {
message.getAuthorityRecords().add(TestDnsServer.newNsRecord(domain, ns2Name));
message.getAuthorityRecords().add(TestDnsServer.newNsRecord(domain, ns1Name));
} else {
message.getAuthorityRecords().add(TestDnsServer.newNsRecord(domain, ns1Name));
message.getAuthorityRecords().add(TestDnsServer.newNsRecord(domain, ns2Name));
}
return message;
}
}
return message;
}
};
redirectServer.start();
EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());
SingletonDnsServerAddressStreamProvider provider =
new SingletonDnsServerAddressStreamProvider(redirectServer.localAddress());
final DnsNameResolver resolver = new DnsNameResolver(
group.next(), new ReflectiveChannelFactory<DatagramChannel>(NioDatagramChannel.class), null, false,
cache, NoopDnsCnameCache.INSTANCE, authoritativeDnsServerCache, null,
NoopDnsQueryLifecycleObserverFactory.INSTANCE, 2000, ResolvedAddressTypes.IPV4_ONLY, true,
10, true, 4096, false, HostsFileEntriesResolver.DEFAULT,
provider, new ThreadLocalNameServerAddressStream(provider), DnsNameResolver.DEFAULT_SEARCH_DOMAINS,
0, true, false, 0, strategy) {
@Override
InetSocketAddress newRedirectServerAddress(InetAddress server) {
try {
if (server.getHostName().startsWith(ns1Name)) {
return new InetSocketAddress(InetAddress.getByAddress(ns1Name,
dnsServerAuthority.localAddress().getAddress().getAddress()),
dnsServerAuthority.localAddress().getPort());
}
if (server.getHostName().startsWith(ns2Name)) {
return new InetSocketAddress(InetAddress.getByAddress(ns2Name,
NetUtil.LOCALHOST.getAddress()), socket.getLocalPort());
}
} catch (UnknownHostException e) {
throw new IllegalStateException(e);
}
return super.newRedirectServerAddress(server);
}
};
try {
List<InetAddress> resolved = resolver.resolveAll(expected.getHostName()).syncUninterruptibly().getNow();
assertEquals(1, resolved.size());
assertEquals(expected, resolved.get(0));
List<InetAddress> resolved2 = resolver.resolveAll(expected.getHostName()).syncUninterruptibly().getNow();
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does testFollowNsRedirects() do?
testFollowNsRedirects() is a function in the netty codebase, defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java.
Where is testFollowNsRedirects() defined?
testFollowNsRedirects() is defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java at line 1606.
What does testFollowNsRedirects() call?
testFollowNsRedirects() calls 3 function(s): InetSocketAddress, clear, get.
What calls testFollowNsRedirects()?
testFollowNsRedirects() is called by 6 function(s): testFollowNsRedirectAndTrySecondNsOnTimeout, testFollowNsRedirectAndTrySecondNsOnTimeoutDefaultCaches, testFollowNsRedirectsDefaultCaches, testFollowNsRedirectsNoopAuthoritativeDnsServerCache, testFollowNsRedirectsNoopCaches, testFollowNsRedirectsNoopDnsCache.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free