testCNAMERecursiveResolveDifferentNameServersForDomains() — netty Function Reference
Architecture documentation for the testCNAMERecursiveResolveDifferentNameServersForDomains() function in DnsNameResolverTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 4bf8dec4_7f4f_0784_f54c_310ce5445c4a["testCNAMERecursiveResolveDifferentNameServersForDomains()"] b6215f36_0afe_a284_a3fd_3999e90a8e97["DnsNameResolverTest"] 4bf8dec4_7f4f_0784_f54c_310ce5445c4a -->|defined in| b6215f36_0afe_a284_a3fd_3999e90a8e97 ef2cf45f_c2d6_70e5_01ac_e5eddd31affe["assertResolvedAddress()"] 4bf8dec4_7f4f_0784_f54c_310ce5445c4a -->|calls| ef2cf45f_c2d6_70e5_01ac_e5eddd31affe df4510f5_88a8_20fd_2366_a4c543cdf3b8["resolve()"] 4bf8dec4_7f4f_0784_f54c_310ce5445c4a -->|calls| df4510f5_88a8_20fd_2366_a4c543cdf3b8 style 4bf8dec4_7f4f_0784_f54c_310ce5445c4a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java lines 3640–3711
@ParameterizedTest
@EnumSource(DnsNameResolverChannelStrategy.class)
public void testCNAMERecursiveResolveDifferentNameServersForDomains(DnsNameResolverChannelStrategy strategy)
throws IOException {
final String firstName = "firstname.com";
final String secondName = "secondname.com";
final String lastName = "lastname.com";
final String ipv4Addr = "1.2.3.4";
final TestDnsServer dnsServer2 = new TestDnsServer(new RecordStore() {
@Override
public Set<ResourceRecord> getRecords(QuestionRecord question) {
ResourceRecordModifier rm = new ResourceRecordModifier();
rm.setDnsClass(RecordClass.IN);
rm.setDnsName(question.getDomainName());
rm.setDnsTtl(100);
if (question.getDomainName().equals(firstName)) {
rm.setDnsType(RecordType.CNAME);
rm.put(DnsAttribute.DOMAIN_NAME, secondName);
} else if (question.getDomainName().equals(lastName)) {
rm.setDnsType(question.getRecordType());
rm.put(DnsAttribute.IP_ADDRESS, ipv4Addr);
} else {
return null;
}
return Collections.singleton(rm.getEntry());
}
});
dnsServer2.start();
final TestDnsServer dnsServer3 = new TestDnsServer(new RecordStore() {
@Override
public Set<ResourceRecord> getRecords(QuestionRecord question) {
if (question.getDomainName().equals(secondName)) {
ResourceRecordModifier rm = new ResourceRecordModifier();
rm.setDnsClass(RecordClass.IN);
rm.setDnsName(question.getDomainName());
rm.setDnsTtl(100);
rm.setDnsType(RecordType.CNAME);
rm.put(DnsAttribute.DOMAIN_NAME, lastName);
return Collections.singleton(rm.getEntry());
}
return null;
}
});
dnsServer3.start();
DnsNameResolver resolver = null;
try {
resolver = newResolver(strategy)
.resolveCache(NoopDnsCache.INSTANCE)
.cnameCache(NoopDnsCnameCache.INSTANCE)
.recursionDesired(true)
.maxQueriesPerResolve(16)
.nameServerProvider(new DnsServerAddressStreamProvider() {
@Override
public DnsServerAddressStream nameServerAddressStream(String hostname) {
if (hostname.equals(secondName + '.')) {
return DnsServerAddresses.singleton(dnsServer3.localAddress()).stream();
}
return DnsServerAddresses.singleton(dnsServer2.localAddress()).stream();
}
})
.resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED).build();
assertResolvedAddress(resolver.resolve(firstName).syncUninterruptibly().getNow(), ipv4Addr, firstName);
} finally {
dnsServer2.stop();
dnsServer3.stop();
if (resolver != null) {
resolver.close();
}
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does testCNAMERecursiveResolveDifferentNameServersForDomains() do?
testCNAMERecursiveResolveDifferentNameServersForDomains() is a function in the netty codebase, defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java.
Where is testCNAMERecursiveResolveDifferentNameServersForDomains() defined?
testCNAMERecursiveResolveDifferentNameServersForDomains() is defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java at line 3640.
What does testCNAMERecursiveResolveDifferentNameServersForDomains() call?
testCNAMERecursiveResolveDifferentNameServersForDomains() calls 2 function(s): assertResolvedAddress, resolve.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free