Home / Class/ DefaultDnsRecordDecoderTest Class — netty Architecture

DefaultDnsRecordDecoderTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  818a470d_46ea_7cd1_0f64_8b71e08f0a90["DefaultDnsRecordDecoderTest"]
  2d77e074_496c_a0a5_1d98_a0169bd18470["DefaultDnsRecordDecoderTest.java"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|defined in| 2d77e074_496c_a0a5_1d98_a0169bd18470
  f87177ec_f895_fc13_1566_61fa632ed4aa["testDecodeName()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| f87177ec_f895_fc13_1566_61fa632ed4aa
  235b910e_1653_02f4_98ec_8d678aa1b396["testDecodeNameWithoutTerminator()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 235b910e_1653_02f4_98ec_8d678aa1b396
  8ee70944_63b2_5193_fef5_ee7701dd1f62["testDecodeNameWithExtraTerminator()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 8ee70944_63b2_5193_fef5_ee7701dd1f62
  58753271_a0dd_3993_1978_2568f17dbdb8["testDecodeEmptyName()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 58753271_a0dd_3993_1978_2568f17dbdb8
  83930da2_59b1_2403_23b2_f59e9f866869["testDecodeEmptyNameFromEmptyBuffer()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 83930da2_59b1_2403_23b2_f59e9f866869
  d41d1534_6651_9ba6_28a3_bee9f8d4b0eb["testDecodeEmptyNameFromExtraZeroes()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| d41d1534_6651_9ba6_28a3_bee9f8d4b0eb
  5882db57_4e67_eebd_2da2_ca6b17580dbc["testDecodePtrRecord()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 5882db57_4e67_eebd_2da2_ca6b17580dbc
  e4950f18_dddb_edfc_2b19_64fa85858b8a["testdecompressCompressPointer()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| e4950f18_dddb_edfc_2b19_64fa85858b8a
  be0ce679_536c_ac51_53a9_3b428e8fb0e0["testdecompressNestedCompressionPointer()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| be0ce679_536c_ac51_53a9_3b428e8fb0e0
  62722244_eeb1_18de_1cb2_15cd687d1b35["testDecodeCompressionRDataPointer()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 62722244_eeb1_18de_1cb2_15cd687d1b35
  61196592_34f2_ca4d_f8c5_fee310fff0d9["testDecodeCompressionRDataPointerMX()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 61196592_34f2_ca4d_f8c5_fee310fff0d9
  d960a3ab_a905_c75a_923b_871cf8ae8326["testDecodeMessageCompression()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| d960a3ab_a905_c75a_923b_871cf8ae8326
  43e430a5_942c_0a28_0f69_117f79881632["testTruncatedPacket()"]
  818a470d_46ea_7cd1_0f64_8b71e08f0a90 -->|method| 43e430a5_942c_0a28_0f69_117f79881632

Relationship Graph

Source Code

codec-dns/src/test/java/io/netty/handler/codec/dns/DefaultDnsRecordDecoderTest.java lines 26–301

public class DefaultDnsRecordDecoderTest {

    @Test
    public void testDecodeName() {
        testDecodeName("netty.io.", Unpooled.wrappedBuffer(new byte[] {
                5, 'n', 'e', 't', 't', 'y', 2, 'i', 'o', 0
        }));
    }

    @Test
    public void testDecodeNameWithoutTerminator() {
        testDecodeName("netty.io.", Unpooled.wrappedBuffer(new byte[] {
                5, 'n', 'e', 't', 't', 'y', 2, 'i', 'o'
        }));
    }

    @Test
    public void testDecodeNameWithExtraTerminator() {
        // Should not be decoded as 'netty.io..'
        testDecodeName("netty.io.", Unpooled.wrappedBuffer(new byte[] {
                5, 'n', 'e', 't', 't', 'y', 2, 'i', 'o', 0, 0
        }));
    }

    @Test
    public void testDecodeEmptyName() {
        testDecodeName(".", Unpooled.buffer().writeByte(0));
    }

    @Test
    public void testDecodeEmptyNameFromEmptyBuffer() {
        testDecodeName(".", Unpooled.EMPTY_BUFFER);
    }

    @Test
    public void testDecodeEmptyNameFromExtraZeroes() {
        testDecodeName(".", Unpooled.wrappedBuffer(new byte[] { 0, 0 }));
    }

    private static void testDecodeName(String expected, ByteBuf buffer) {
        try {
            DefaultDnsRecordDecoder decoder = new DefaultDnsRecordDecoder();
            assertEquals(expected, decoder.decodeName0(buffer));
        } finally {
            buffer.release();
        }
    }

    @Test
    public void testDecodePtrRecord() throws Exception {
        DefaultDnsRecordDecoder decoder = new DefaultDnsRecordDecoder();
        ByteBuf buffer = Unpooled.buffer().writeByte(0);
        int readerIndex = buffer.readerIndex();
        int writerIndex = buffer.writerIndex();
        try {
            DnsPtrRecord record = (DnsPtrRecord) decoder.decodeRecord(
                    "netty.io", DnsRecordType.PTR, DnsRecord.CLASS_IN, 60, buffer, 0, 1);
            assertEquals("netty.io.", record.name());
            assertEquals(DnsRecord.CLASS_IN, record.dnsClass());
            assertEquals(60, record.timeToLive());
            assertEquals(DnsRecordType.PTR, record.type());
            assertEquals(readerIndex, buffer.readerIndex());
            assertEquals(writerIndex, buffer.writerIndex());
        } finally {
            buffer.release();
        }
    }

    @Test
    public void testdecompressCompressPointer() {
        byte[] compressionPointer = {
                5, 'n', 'e', 't', 't', 'y', 2, 'i', 'o', 0,
                (byte) 0xC0, 0
        };
        ByteBuf buffer = Unpooled.wrappedBuffer(compressionPointer);
        ByteBuf uncompressed = null;
        try {
            uncompressed = DnsCodecUtil.decompressDomainName(buffer.duplicate().setIndex(10, 12));
            assertEquals(0, ByteBufUtil.compare(buffer.duplicate().setIndex(0, 10), uncompressed));
        } finally {
            buffer.release();

Frequently Asked Questions

What is the DefaultDnsRecordDecoderTest class?
DefaultDnsRecordDecoderTest is a class in the netty codebase, defined in codec-dns/src/test/java/io/netty/handler/codec/dns/DefaultDnsRecordDecoderTest.java.
Where is DefaultDnsRecordDecoderTest defined?
DefaultDnsRecordDecoderTest is defined in codec-dns/src/test/java/io/netty/handler/codec/dns/DefaultDnsRecordDecoderTest.java at line 26.

Analyze Your Own Codebase

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

Try Supermodel Free