Skip to content
CAI
Software that uses CAICheck a score

dnsimple/dnstest

58.4

Adequate · 2 October 2026

4.5k

lines of production code

Erlang

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a DNS server implementation written in Erlang, focused on protocol compliance and testing. It manages DNS zone data and supports advanced features such as DNSSEC and ALIAS records. The codebase includes a dedicated test suite that validates behavior against RFC standards, specifically covering empty non-terminal nodes and wildcard resolution logic.

Features

Added private DNS zone data and record generators

The \priv\ directory now includes new JSON files defining DNS zone data for \example.com\, \minimal-dnssec.com\, \test.com\, and \wtest.com\, alongside Ruby scripts (\host\_record\_generator.rb\, \toomuchinfo\_record\_generator.rb\) to programmatically generate test records. These files provide the underlying data structures for internal testing and specification validation, supporting features such as DNSSEC, ALIAS records, and various record types.

priv · high confidence

Behavioural changes

Renamed DNS conformance test suite from erldns\_test to dnstest

The DNS server conformance testing application has been renamed from \erldns\_test\ to \dnstest\. This change updates the application source, module names, and internal dependencies (such as the test harness and metrics modules) to reflect the new identifier, while also migrating the logging implementation from \lager\ to the standard \logger\ library.

src · high confidence

Test coverage

Added test specifications for Empty Non-Terminal and wildcard DNS behaviors

Added new test suites in \src/tests/ent\_specs.erl\ and \src/tests/wildcard\_specs.erl\ to verify DNS server compliance with RFC 4592. The ENT tests validate that queries to empty non-terminal nodes correctly return SOA records in the authority section, including handling of DNSSEC-signed responses (RRSIG/NSEC) and ensuring NXNAME is not incorrectly set in NSEC bitmaps. The wildcard tests cover scenarios such as wildcard bounding by ENTs, interactions between CNAMEs and wildcards at the zone apex, and validation of long CNAME chains involving wildcards.

src/tests · high confidence

Dependencies

Migration to rebar3 and updated build tooling

The project has migrated from the legacy rebar build tool to rebar3, updating the build configuration to use modern plugins (rebar3\_hex, rebar3\_ex\_doc, rebar3\_lint, erlfmt) and stricter compiler warnings. This change includes switching the primary DNS dependency from a git-hosted 'dns' package to the hex package 'dns\_erlang' (version 5.0.18), removing the 'lager' dependency in favor of standard Erlang logging, and updating the test runner script to use rebar3 for compilation and configuration loading.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 55 → 58 (+3.7)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 95 → 95 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 42 → 48 (+6.3)
  • Readiness 73 → 76 (+2.7)
  • Security 87 → 94 (+6.5)
  • Event-Driven 48 → 48 (+0.0)

Resolved (3)

  • Coverage not measured — no coverage collector is wired up
  • Documentation: no usage examples (README.md)
  • Off-boarding risk: anonymized user #1

New (3)

  • Documentation: no contributor guidance (README.md)
  • Off-boarding risk: anonymized user #1
  • Outdated: dns_erlang

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

dnsimple/dnstest was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 9bfb1c1f60e8284326fd9cce2ef8b722b9969467 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.