Home / Function/ testCnameWithAAndAdditionalsAndAuthorities() — netty Function Reference

testCnameWithAAndAdditionalsAndAuthorities() — netty Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  16957a7e_a653_d639_c72b_55c78ef63b54["testCnameWithAAndAdditionalsAndAuthorities()"]
  b6215f36_0afe_a284_a3fd_3999e90a8e97["DnsNameResolverTest"]
  16957a7e_a653_d639_c72b_55c78ef63b54 -->|defined in| b6215f36_0afe_a284_a3fd_3999e90a8e97
  df4510f5_88a8_20fd_2366_a4c543cdf3b8["resolve()"]
  16957a7e_a653_d639_c72b_55c78ef63b54 -->|calls| df4510f5_88a8_20fd_2366_a4c543cdf3b8
  e0db6033_0923_3a43_22a1_11714277de6c["clear()"]
  16957a7e_a653_d639_c72b_55c78ef63b54 -->|calls| e0db6033_0923_3a43_22a1_11714277de6c
  style 16957a7e_a653_d639_c72b_55c78ef63b54 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java lines 4326–4396

    @ParameterizedTest
    @EnumSource(DnsNameResolverChannelStrategy.class)
    public void testCnameWithAAndAdditionalsAndAuthorities(DnsNameResolverChannelStrategy strategy) throws Exception {
        final String hostname = "test.netty.io";
        final String cname = "cname.netty.io";

        final List<String> nameServers = new ArrayList<String>();

        for (int i = 0; i < 13; i++) {
            nameServers.add("ns" + i + ".foo.bar");
        }

        TestDnsServer server = new TestDnsServer(new RecordStore() {
            @Override
            public Set<ResourceRecord> getRecords(QuestionRecord questionRecord) {
                ResourceRecordModifier rm = new ResourceRecordModifier();
                rm.setDnsClass(RecordClass.IN);
                rm.setDnsName(hostname);
                rm.setDnsTtl(10000);
                rm.setDnsType(RecordType.CNAME);
                rm.put(DnsAttribute.DOMAIN_NAME, cname);

                Set<ResourceRecord> records = new LinkedHashSet<ResourceRecord>();
                records.add(rm.getEntry());
                records.add(newARecord(cname, "10.0.0.2"));
                return records;
            }
        }) {
            @Override
            protected DnsMessage filterMessage(DnsMessage message) {
                for (QuestionRecord record: message.getQuestionRecords()) {
                    if (record.getDomainName().equals(hostname)) {
                        // Let's add some extra records.
                        message.getAuthorityRecords().clear();
                        message.getAdditionalRecords().clear();

                        for (String nameserver: nameServers) {
                            message.getAuthorityRecords().add(TestDnsServer.newNsRecord(".", nameserver));
                            message.getAdditionalRecords().add(newAddressRecord(nameserver, RecordType.A, "10.0.0.1"));
                            message.getAdditionalRecords().add(newAddressRecord(nameserver, RecordType.AAAA, "::1"));
                        }

                        return message;
                    }
                }
                return message;
            }
        };
        server.start();
        EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());

        SingletonDnsServerAddressStreamProvider provider =
                new SingletonDnsServerAddressStreamProvider(server.localAddress());
        final DnsNameResolver resolver = new DnsNameResolver(
                group.next(), new ReflectiveChannelFactory<DatagramChannel>(NioDatagramChannel.class), null, false,
                NoopDnsCache.INSTANCE, NoopDnsCnameCache.INSTANCE, NoopAuthoritativeDnsServerCache.INSTANCE, null,
                NoopDnsQueryLifecycleObserverFactory.INSTANCE, 2000, ResolvedAddressTypes.IPV4_ONLY,
                true, 8, true, 4096,
                false, HostsFileEntriesResolver.DEFAULT,
                provider, new ThreadLocalNameServerAddressStream(provider),
                new String [] { "k8se-apps.svc.cluster.local, svc.cluster.local, cluster.local" }, 1,
                true, false, 0, strategy);
        try {
            InetAddress address = resolver.resolve(hostname).sync().getNow();
            assertArrayEquals(new byte[] { 10, 0, 0, 2 }, address.getAddress());
        } finally {
            resolver.close();
            group.shutdownGracefully(0, 0, TimeUnit.SECONDS);
            server.stop();
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does testCnameWithAAndAdditionalsAndAuthorities() do?
testCnameWithAAndAdditionalsAndAuthorities() is a function in the netty codebase, defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java.
Where is testCnameWithAAndAdditionalsAndAuthorities() defined?
testCnameWithAAndAdditionalsAndAuthorities() is defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java at line 4326.
What does testCnameWithAAndAdditionalsAndAuthorities() call?
testCnameWithAAndAdditionalsAndAuthorities() calls 2 function(s): clear, resolve.

Analyze Your Own Codebase

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

Try Supermodel Free