Home / Function/ testCNAMERecursiveResolve() — netty Function Reference

testCNAMERecursiveResolve() — netty Function Reference

Architecture documentation for the testCNAMERecursiveResolve() function in DnsNameResolverTest.java from the netty codebase.

Function java Buffer Telemetry calls 1 called by 2

Entity Profile

Dependency Diagram

graph TD
  9953463c_c29f_79ad_8840_75b66327f65a["testCNAMERecursiveResolve()"]
  b6215f36_0afe_a284_a3fd_3999e90a8e97["DnsNameResolverTest"]
  9953463c_c29f_79ad_8840_75b66327f65a -->|defined in| b6215f36_0afe_a284_a3fd_3999e90a8e97
  85179375_f20d_a320_7ede_8d8f765f4b5c["testCNAMEResolveAllIpv4()"]
  85179375_f20d_a320_7ede_8d8f765f4b5c -->|calls| 9953463c_c29f_79ad_8840_75b66327f65a
  dea2e913_516d_e013_fb0c_d9cbdf002b4f["testCNAMEResolveAllIpv6()"]
  dea2e913_516d_e013_fb0c_d9cbdf002b4f -->|calls| 9953463c_c29f_79ad_8840_75b66327f65a
  df4510f5_88a8_20fd_2366_a4c543cdf3b8["resolve()"]
  9953463c_c29f_79ad_8840_75b66327f65a -->|calls| df4510f5_88a8_20fd_2366_a4c543cdf3b8
  style 9953463c_c29f_79ad_8840_75b66327f65a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java lines 952–1016

    private static void testCNAMERecursiveResolve(DnsNameResolverChannelStrategy strategy, boolean ipv4Preferred)
            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 String ipv6Addr = "::1";
        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);
                rm.setDnsType(RecordType.CNAME);

                if (question.getDomainName().equals(firstName)) {
                    rm.put(DnsAttribute.DOMAIN_NAME, secondName);
                } else if (question.getDomainName().equals(secondName)) {
                    rm.put(DnsAttribute.DOMAIN_NAME, lastName);
                } else if (question.getDomainName().equals(lastName)) {
                    rm.setDnsType(question.getRecordType());
                    switch (question.getRecordType()) {
                        case A:
                            rm.put(DnsAttribute.IP_ADDRESS, ipv4Addr);
                            break;
                        case AAAA:
                            rm.put(DnsAttribute.IP_ADDRESS, ipv6Addr);
                            break;
                        default:
                            return null;
                    }
                } else {
                    return null;
                }
                return Collections.singleton(rm.getEntry());
            }
        });
        dnsServer2.start();
        DnsNameResolver resolver = null;
        try {
            DnsNameResolverBuilder builder = newResolver(strategy)
                    .recursionDesired(true)
                    .maxQueriesPerResolve(16)
                    .nameServerProvider(new SingletonDnsServerAddressStreamProvider(dnsServer2.localAddress()));
            if (ipv4Preferred) {
                builder.resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED);
            } else {
                builder.resolvedAddressTypes(ResolvedAddressTypes.IPV6_PREFERRED);
            }
            resolver = builder.build();
            InetAddress resolvedAddress = resolver.resolve(firstName).syncUninterruptibly().getNow();
            if (ipv4Preferred) {
                assertEquals(ipv4Addr, resolvedAddress.getHostAddress());
            } else {
                assertEquals(ipv6Addr, NetUtil.toAddressString(resolvedAddress));
            }
            assertEquals(firstName, resolvedAddress.getHostName());
        } finally {
            dnsServer2.stop();
            if (resolver != null) {
                resolver.close();
            }
        }
    }

Domain

Subdomains

Calls

Frequently Asked Questions

What does testCNAMERecursiveResolve() do?
testCNAMERecursiveResolve() is a function in the netty codebase, defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java.
Where is testCNAMERecursiveResolve() defined?
testCNAMERecursiveResolve() is defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java at line 952.
What does testCNAMERecursiveResolve() call?
testCNAMERecursiveResolve() calls 1 function(s): resolve.
What calls testCNAMERecursiveResolve()?
testCNAMERecursiveResolve() is called by 2 function(s): testCNAMEResolveAllIpv4, testCNAMEResolveAllIpv6.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free