Home / Function/ testCNAMERecursiveResolveDifferentNameServersForDomains() — netty Function Reference

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

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