Home / Function/ testQueryMx() — netty Function Reference

testQueryMx() — netty Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  f35f68f3_6da5_9b3e_f7f9_89190ed4326b["testQueryMx()"]
  b6215f36_0afe_a284_a3fd_3999e90a8e97["DnsNameResolverTest"]
  f35f68f3_6da5_9b3e_f7f9_89190ed4326b -->|defined in| b6215f36_0afe_a284_a3fd_3999e90a8e97
  963c626c_c0b4_c75d_8b92_70ab0d848c94["queryMx()"]
  f35f68f3_6da5_9b3e_f7f9_89190ed4326b -->|calls| 963c626c_c0b4_c75d_8b92_70ab0d848c94
  a94d6293_6df1_57c6_0dfb_5a85d1fa8553["assertNoQueriesMade()"]
  f35f68f3_6da5_9b3e_f7f9_89190ed4326b -->|calls| a94d6293_6df1_57c6_0dfb_5a85d1fa8553
  style f35f68f3_6da5_9b3e_f7f9_89190ed4326b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

resolver-dns/src/test/java/io/netty/resolver/dns/DnsNameResolverTest.java lines 677–736

    @ParameterizedTest
    @EnumSource(DnsNameResolverChannelStrategy.class)
    public void testQueryMx(DnsNameResolverChannelStrategy strategy) {
        DnsNameResolver resolver = newResolver(strategy).build();
        try {
            assertTrue(resolver.isRecursionDesired());

            Map<String, Future<AddressedEnvelope<DnsResponse, InetSocketAddress>>> futures =
                    new LinkedHashMap<String, Future<AddressedEnvelope<DnsResponse, InetSocketAddress>>>();
            for (String name : DOMAINS) {
                if (EXCLUSIONS_QUERY_MX.contains(name)) {
                    continue;
                }

                queryMx(resolver, futures, name);
            }

            for (Entry<String, Future<AddressedEnvelope<DnsResponse, InetSocketAddress>>> e : futures.entrySet()) {
                String hostname = e.getKey();
                Future<AddressedEnvelope<DnsResponse, InetSocketAddress>> f = e.getValue().awaitUninterruptibly();

                DnsResponse response = f.getNow().content();
                assertEquals(DnsResponseCode.NOERROR, response.code());

                final int answerCount = response.count(DnsSection.ANSWER);
                final List<DnsRecord> mxList = new ArrayList<DnsRecord>(answerCount);
                for (int i = 0; i < answerCount; i++) {
                    final DnsRecord r = response.recordAt(DnsSection.ANSWER, i);
                    if (r.type() == DnsRecordType.MX) {
                        mxList.add(r);
                    }
                }

                assertThat(mxList.size()).isGreaterThan(0);
                StringBuilder buf = new StringBuilder();
                for (DnsRecord r : mxList) {
                    ByteBuf recordContent = ((ByteBufHolder) r).content();

                    buf.append(StringUtil.NEWLINE);
                    buf.append('\t');
                    buf.append(r.name());
                    buf.append(' ');
                    buf.append(r.type().name());
                    buf.append(' ');
                    buf.append(recordContent.readUnsignedShort());
                    buf.append(' ');
                    buf.append(DnsResolveContext.decodeDomainName(recordContent));
                }

                logger.info("{} has the following MX records:{}", hostname, buf);
                response.release();

                // We only track query lifecycle if it is managed by the DnsNameResolverContext, and not direct calls
                // to query.
                assertNoQueriesMade(resolver);
            }
        } finally {
            resolver.close();
        }
    }

Domain

Subdomains

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free