Home / Class/ TestRecordStore Class — netty Architecture

TestRecordStore Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  a8e56c50_d48b_837d_216e_3be7d06f256c["TestRecordStore"]
  671a7057_027f_0237_34ae_461bd20152cd["TestDnsServer.java"]
  a8e56c50_d48b_837d_216e_3be7d06f256c -->|defined in| 671a7057_027f_0237_34ae_461bd20152cd
  e7d64e72_92f8_60c5_813d_4ad9651983a3["index()"]
  a8e56c50_d48b_837d_216e_3be7d06f256c -->|method| e7d64e72_92f8_60c5_813d_4ad9651983a3
  8c86c80c_e981_921f_4ff0_f03e8a303293["String()"]
  a8e56c50_d48b_837d_216e_3be7d06f256c -->|method| 8c86c80c_e981_921f_4ff0_f03e8a303293
  e27e23c5_6cbd_8a77_13df_7d63c3a0c2e1["ipPart()"]
  a8e56c50_d48b_837d_216e_3be7d06f256c -->|method| e27e23c5_6cbd_8a77_13df_7d63c3a0c2e1
  e5fb0312_c7c7_c99d_cd4f_c44db9178067["TestRecordStore()"]
  a8e56c50_d48b_837d_216e_3be7d06f256c -->|method| e5fb0312_c7c7_c99d_cd4f_c44db9178067
  324cc55f_3212_4860_e147_77ca0e16fb72["getRecords()"]
  a8e56c50_d48b_837d_216e_3be7d06f256c -->|method| 324cc55f_3212_4860_e147_77ca0e16fb72

Relationship Graph

Source Code

resolver-dns/src/test/java/io/netty/resolver/dns/TestDnsServer.java lines 282–353

    private static final class TestRecordStore implements RecordStore {
        private static final int[] NUMBERS = new int[254];
        private static final char[] CHARS = new char[26];

        static {
            for (int i = 0; i < NUMBERS.length; i++) {
                NUMBERS[i] = i + 1;
            }

            for (int i = 0; i < CHARS.length; i++) {
                CHARS[i] = (char) ('a' + i);
            }
        }

        private static int index(int arrayLength) {
            return Math.abs(ThreadLocalRandom.current().nextInt()) % arrayLength;
        }

        private static String nextDomain() {
            return CHARS[index(CHARS.length)] + ".netty.io";
        }

        private static String nextIp() {
            return ipPart() + "." + ipPart() + '.' + ipPart() + '.' + ipPart();
        }

        private static int ipPart() {
            return NUMBERS[index(NUMBERS.length)];
        }

        private static String nextIp6() {
            return IPV6_ADDRESSES[index(IPV6_ADDRESSES.length)];
        }

        private final Set<String> domains;

        private TestRecordStore(Set<String> domains) {
            this.domains = domains;
        }

        @Override
        public Set<ResourceRecord> getRecords(QuestionRecord questionRecord) {
            String name = questionRecord.getDomainName();
            if (domains.contains(name)) {
                Map<String, Object> attr = new HashMap<String, Object>();
                switch (questionRecord.getRecordType()) {
                    case A:
                        do {
                            attr.put(DnsAttribute.IP_ADDRESS.toLowerCase(Locale.US), nextIp());
                        } while (ThreadLocalRandom.current().nextBoolean());
                        break;
                    case AAAA:
                        do {
                            attr.put(DnsAttribute.IP_ADDRESS.toLowerCase(Locale.US), nextIp6());
                        } while (ThreadLocalRandom.current().nextBoolean());
                        break;
                    case MX:
                        int priority = 0;
                        do {
                            attr.put(DnsAttribute.DOMAIN_NAME.toLowerCase(Locale.US), nextDomain());
                            attr.put(DnsAttribute.MX_PREFERENCE.toLowerCase(Locale.US), String.valueOf(++priority));
                        } while (ThreadLocalRandom.current().nextBoolean());
                        break;
                    default:
                        return null;
                }
                return Collections.<ResourceRecord>singleton(
                        new TestResourceRecord(name, questionRecord.getRecordType(), attr));
            }
            return null;
        }
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free