Home / Class/ TestDnsServer Class — netty Architecture

TestDnsServer Class — netty Architecture

Architecture documentation for the TestDnsServer class in TestDnsServer.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  71489dd4_f2db_bc9c_dccb_68c8b965b92e["TestDnsServer"]
  671a7057_027f_0237_34ae_461bd20152cd["TestDnsServer.java"]
  71489dd4_f2db_bc9c_dccb_68c8b965b92e -->|defined in| 671a7057_027f_0237_34ae_461bd20152cd
  02d13266_8909_ab53_2f40_b9a92fab0662["TestDnsServer()"]
  71489dd4_f2db_bc9c_dccb_68c8b965b92e -->|method| 02d13266_8909_ab53_2f40_b9a92fab0662
  f8c36079_ab33_c60d_6b32_52c7a080b447["start()"]
  71489dd4_f2db_bc9c_dccb_68c8b965b92e -->|method| f8c36079_ab33_c60d_6b32_52c7a080b447
  254ea3eb_1e86_43df_7d60_af73884bc23d["InetSocketAddress()"]
  71489dd4_f2db_bc9c_dccb_68c8b965b92e -->|method| 254ea3eb_1e86_43df_7d60_af73884bc23d
  212585fd_a17c_e040_64fc_8c2a9bf4950e["DnsMessage()"]
  71489dd4_f2db_bc9c_dccb_68c8b965b92e -->|method| 212585fd_a17c_e040_64fc_8c2a9bf4950e
  811f11bc_5f47_ec60_967f_060e233c7266["ResourceRecord()"]
  71489dd4_f2db_bc9c_dccb_68c8b965b92e -->|method| 811f11bc_5f47_ec60_967f_060e233c7266

Relationship Graph

Source Code

resolver-dns/src/test/java/io/netty/resolver/dns/TestDnsServer.java lines 59–371

class TestDnsServer extends DnsServer {
    private static final Map<String, byte[]> BYTES = new HashMap<String, byte[]>();
    private static final String[] IPV6_ADDRESSES;

    static {
        BYTES.put("::1", new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1});
        BYTES.put("0:0:0:0:0:0:1:1", new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1});
        BYTES.put("0:0:0:0:0:1:1:1", new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1});
        BYTES.put("0:0:0:0:1:1:1:1", new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1});
        BYTES.put("0:0:0:1:1:1:1:1", new byte[]{0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1});
        BYTES.put("0:0:1:1:1:1:1:1", new byte[]{0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1});
        BYTES.put("0:1:1:1:1:1:1:1", new byte[]{0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1});
        BYTES.put("1:1:1:1:1:1:1:1", new byte[]{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1});

        IPV6_ADDRESSES = BYTES.keySet().toArray(new String[0]);
    }

    private final RecordStore store;

    TestDnsServer(Set<String> domains) {
        this(new TestRecordStore(domains));
    }

    TestDnsServer(RecordStore store) {
        this.store = store;
    }

    @Override
    public void start() throws IOException {
        start(null);
    }

    /**
     * Start the {@link TestDnsServer} but drop all {@link RecordType} queries
     * and not send any response to these at all.
     */
    public void start(final RecordType dropRecordType) throws IOException {
        start(dropRecordType, new InetSocketAddress(NetUtil.LOCALHOST4, 0));
    }

    public void start(final RecordType dropRecordType, InetSocketAddress address) throws IOException {
        UdpTransport transport = new UdpTransport(address.getHostName(), address.getPort());
        setTransports(transport);

        DatagramAcceptor acceptor = transport.getAcceptor();

        acceptor.setHandler(new DnsProtocolHandler(this, store) {
            @Override
            public void sessionCreated(IoSession session) {
                // USe our own codec to support AAAA testing
                session.getFilterChain()
                        .addFirst("codec", new ProtocolCodecFilter(
                                new TestDnsProtocolUdpCodecFactory(dropRecordType)));
            }
        });

        ((DatagramSessionConfig) acceptor.getSessionConfig()).setReuseAddress(true);

        // Start the listener
        acceptor.bind();
    }

    public InetSocketAddress localAddress() {
        return (InetSocketAddress) getTransports()[0].getAcceptor().getLocalAddress();
    }

    protected DnsMessage filterMessage(DnsMessage message) {
        return message;
    }

    protected static ResourceRecord newARecord(String name, String ipAddress) {
        return newAddressRecord(name, RecordType.A, ipAddress);
    }

    protected static ResourceRecord newNsRecord(String dnsname, String domainName) {
        ResourceRecordModifier rm = new ResourceRecordModifier();
        rm.setDnsClass(RecordClass.IN);
        rm.setDnsName(dnsname);
        rm.setDnsTtl(100);
        rm.setDnsType(RecordType.NS);
        rm.put(DnsAttribute.DOMAIN_NAME, domainName);

Frequently Asked Questions

What is the TestDnsServer class?
TestDnsServer is a class in the netty codebase, defined in resolver-dns/src/test/java/io/netty/resolver/dns/TestDnsServer.java.
Where is TestDnsServer defined?
TestDnsServer is defined in resolver-dns/src/test/java/io/netty/resolver/dns/TestDnsServer.java at line 59.

Analyze Your Own Codebase

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

Try Supermodel Free