Home / Function/ secondDnsServerShouldBeUsedBeforeCNAME() — netty Function Reference

secondDnsServerShouldBeUsedBeforeCNAME() — netty Function Reference

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

Function java Buffer Telemetry calls 3 called by 2

Entity Profile

Dependency Diagram

graph TD
  186250a6_f53b_f0ce_285e_6f39948fa9f4["secondDnsServerShouldBeUsedBeforeCNAME()"]
  b6215f36_0afe_a284_a3fd_3999e90a8e97["DnsNameResolverTest"]
  186250a6_f53b_f0ce_285e_6f39948fa9f4 -->|defined in| b6215f36_0afe_a284_a3fd_3999e90a8e97
  448d31bb_3210_e247_a2ee_339c44ef69a4["secondDnsServerShouldBeUsedBeforeCNAMEFirstServerNotStarted()"]
  448d31bb_3210_e247_a2ee_339c44ef69a4 -->|calls| 186250a6_f53b_f0ce_285e_6f39948fa9f4
  fbb23f94_d075_89f5_0b9c_da85be5e6d1b["secondDnsServerShouldBeUsedBeforeCNAMEFirstServerFailResolve()"]
  fbb23f94_d075_89f5_0b9c_da85be5e6d1b -->|calls| 186250a6_f53b_f0ce_285e_6f39948fa9f4
  6379f5e9_9105_8ed2_288e_b124a4c8863f["InetSocketAddress()"]
  186250a6_f53b_f0ce_285e_6f39948fa9f4 -->|calls| 6379f5e9_9105_8ed2_288e_b124a4c8863f
  7a611112_a604_0b21_1e10_2062ec771951["DnsNameResolverBuilder()"]
  186250a6_f53b_f0ce_285e_6f39948fa9f4 -->|calls| 7a611112_a604_0b21_1e10_2062ec771951
  df4510f5_88a8_20fd_2366_a4c543cdf3b8["resolve()"]
  186250a6_f53b_f0ce_285e_6f39948fa9f4 -->|calls| df4510f5_88a8_20fd_2366_a4c543cdf3b8
  style 186250a6_f53b_f0ce_285e_6f39948fa9f4 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java lines 1281–1335

    private static void secondDnsServerShouldBeUsedBeforeCNAME(
            DnsNameResolverChannelStrategy strategy, boolean startDnsServer1) throws IOException {
        final String knownHostName = "netty.io";
        final TestDnsServer dnsServer1 = new TestDnsServer(Collections.singleton("notnetty.com"));
        final TestDnsServer dnsServer2 = new TestDnsServer(Collections.singleton(knownHostName));
        DnsNameResolver resolver = null;
        try {
            final InetSocketAddress dnsServer1Address;
            if (startDnsServer1) {
                dnsServer1.start();
                dnsServer1Address = dnsServer1.localAddress();
            } else {
                // Some address where a DNS server will not be running.
                dnsServer1Address = new InetSocketAddress("127.0.0.1", 22);
            }
            dnsServer2.start();

            TestRecursiveCacheDnsQueryLifecycleObserverFactory lifecycleObserverFactory =
                    new TestRecursiveCacheDnsQueryLifecycleObserverFactory();

            DnsNameResolverBuilder builder = new DnsNameResolverBuilder(group.next())
                    .dnsQueryLifecycleObserverFactory(lifecycleObserverFactory)
                    .resolvedAddressTypes(ResolvedAddressTypes.IPV4_ONLY)
                    .datagramChannelType(NioDatagramChannel.class)
                    .queryTimeoutMillis(1000) // We expect timeouts if startDnsServer1 is false
                    .optResourceEnabled(false)
                    .ndots(1)
                    .datagramChannelStrategy(strategy);

            builder.nameServerProvider(new SequentialDnsServerAddressStreamProvider(dnsServer1Address,
                    dnsServer2.localAddress()));
            resolver = builder.build();
            assertNotNull(resolver.resolve(knownHostName).syncUninterruptibly().getNow());

            TestDnsQueryLifecycleObserver observer = lifecycleObserverFactory.observers.poll();
            assertNotNull(observer);
            assertEquals(1, lifecycleObserverFactory.observers.size());
            assertEquals(2, observer.events.size());
            QueryWrittenEvent writtenEvent = (QueryWrittenEvent) observer.events.poll();
            assertEquals(dnsServer1Address, writtenEvent.dnsServerAddress);
            QueryFailedEvent failedEvent = (QueryFailedEvent) observer.events.poll();

            observer = lifecycleObserverFactory.observers.poll();
            assertEquals(2, observer.events.size());
            writtenEvent = (QueryWrittenEvent) observer.events.poll();
            assertEquals(dnsServer2.localAddress(), writtenEvent.dnsServerAddress);
            QuerySucceededEvent succeededEvent = (QuerySucceededEvent) observer.events.poll();
        } finally {
            if (resolver != null) {
                resolver.close();
            }
            dnsServer1.stop();
            dnsServer2.stop();
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does secondDnsServerShouldBeUsedBeforeCNAME() do?
secondDnsServerShouldBeUsedBeforeCNAME() is a function in the netty codebase, defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java.
Where is secondDnsServerShouldBeUsedBeforeCNAME() defined?
secondDnsServerShouldBeUsedBeforeCNAME() is defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java at line 1281.
What does secondDnsServerShouldBeUsedBeforeCNAME() call?
secondDnsServerShouldBeUsedBeforeCNAME() calls 3 function(s): DnsNameResolverBuilder, InetSocketAddress, resolve.
What calls secondDnsServerShouldBeUsedBeforeCNAME()?
secondDnsServerShouldBeUsedBeforeCNAME() is called by 2 function(s): secondDnsServerShouldBeUsedBeforeCNAMEFirstServerFailResolve, secondDnsServerShouldBeUsedBeforeCNAMEFirstServerNotStarted.

Analyze Your Own Codebase

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

Try Supermodel Free