[PR #2667] [MERGED] Add RFC 8906 conformance tests #3216

Closed
opened 2026-03-16 11:31:42 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/hickory-dns/hickory-dns/pull/2667
Author: @divergentdave
Created: 12/11/2024
Status: Merged
Merged: 12/13/2024
Merged by: @djc

Base: mainHead: david/rfc8906-conformance


📝 Commits (10+)

  • 588fd16 replace if-else with match
  • a6fccc1 dns-test: add support for unknown query types
  • ea014dc dns-test: add option to set EDNS version
  • 1324c2d dns-test: detect if OPT is present in dig output
  • c95e6bf dns-test: add Z flag option to dig settings
  • 5f61b9b dns-test: parse "MBZ" from dig output
  • 5758faf dns-test: add opcode and header-only dig options
  • 9078e19 dns-test: add NOTIMP return code
  • 713514c dns-test: parse opcode from dig output
  • d20ddda dns-test: add TCP option to dig settings

📊 Changes

10 files changed (+1508 additions, -31 deletions)

View changed files

📝 conformance/packages/conformance-tests/src/name_server.rs (+1 -0)
conformance/packages/conformance-tests/src/name_server/rfc8906.rs (+18 -0)
conformance/packages/conformance-tests/src/name_server/rfc8906/basic.rs (+193 -0)
conformance/packages/conformance-tests/src/name_server/rfc8906/extended.rs (+255 -0)
📝 conformance/packages/conformance-tests/src/resolver/dns.rs (+1 -0)
conformance/packages/conformance-tests/src/resolver/dns/rfc8906.rs (+23 -0)
conformance/packages/conformance-tests/src/resolver/dns/rfc8906/basic.rs (+211 -0)
conformance/packages/conformance-tests/src/resolver/dns/rfc8906/extended.rs (+279 -0)
📝 conformance/packages/dns-test/src/client.rs (+505 -27)
📝 conformance/packages/dns-test/src/record.rs (+22 -4)

📄 Description

This adds a conformance test suite for RFC 8906. All the tests in section 8 are translated to the dns-test framework. I had to add a number of features to the wrapper around dig, since the tests use a wide range of command-line flags, and the expected behavior includes fields of the output we weren't using previously. See #2572.

Currently, Hickory is only failing the two tests regarding unknown opcodes, because it fails to respond, instead of responding with NOTIMP. BIND passes all tests. Unbound is failing two tests regarding flags in specific error responses.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/hickory-dns/hickory-dns/pull/2667 **Author:** [@divergentdave](https://github.com/divergentdave) **Created:** 12/11/2024 **Status:** ✅ Merged **Merged:** 12/13/2024 **Merged by:** [@djc](https://github.com/djc) **Base:** `main` ← **Head:** `david/rfc8906-conformance` --- ### 📝 Commits (10+) - [`588fd16`](https://github.com/hickory-dns/hickory-dns/commit/588fd16e55ebcb62b5c247120dfd941e84eccddb) replace if-else with match - [`a6fccc1`](https://github.com/hickory-dns/hickory-dns/commit/a6fccc17e8ae626842f4dc44652d43d69ff5fb46) dns-test: add support for unknown query types - [`ea014dc`](https://github.com/hickory-dns/hickory-dns/commit/ea014dc52e811d8da6112178b0518c741237c61f) dns-test: add option to set EDNS version - [`1324c2d`](https://github.com/hickory-dns/hickory-dns/commit/1324c2d02824ca2145404a3d4d7237a08a0f21a2) dns-test: detect if OPT is present in dig output - [`c95e6bf`](https://github.com/hickory-dns/hickory-dns/commit/c95e6bfb7cd2d7d1de89546693742005bb19d3ff) dns-test: add Z flag option to dig settings - [`5f61b9b`](https://github.com/hickory-dns/hickory-dns/commit/5f61b9bce91819cbbf3717617d4c276e5d4611d6) dns-test: parse "MBZ" from dig output - [`5758faf`](https://github.com/hickory-dns/hickory-dns/commit/5758faf400eff73250d3da16627ff39d74903585) dns-test: add opcode and header-only dig options - [`9078e19`](https://github.com/hickory-dns/hickory-dns/commit/9078e19b2bdd29978c279da47a5cd2cfe90c7e6f) dns-test: add NOTIMP return code - [`713514c`](https://github.com/hickory-dns/hickory-dns/commit/713514c8c31c21eb0912b4d529d861cf34dbdb38) dns-test: parse opcode from dig output - [`d20ddda`](https://github.com/hickory-dns/hickory-dns/commit/d20dddab76ea40335ad7a66fca116410bb8b6d68) dns-test: add TCP option to dig settings ### 📊 Changes **10 files changed** (+1508 additions, -31 deletions) <details> <summary>View changed files</summary> 📝 `conformance/packages/conformance-tests/src/name_server.rs` (+1 -0) ➕ `conformance/packages/conformance-tests/src/name_server/rfc8906.rs` (+18 -0) ➕ `conformance/packages/conformance-tests/src/name_server/rfc8906/basic.rs` (+193 -0) ➕ `conformance/packages/conformance-tests/src/name_server/rfc8906/extended.rs` (+255 -0) 📝 `conformance/packages/conformance-tests/src/resolver/dns.rs` (+1 -0) ➕ `conformance/packages/conformance-tests/src/resolver/dns/rfc8906.rs` (+23 -0) ➕ `conformance/packages/conformance-tests/src/resolver/dns/rfc8906/basic.rs` (+211 -0) ➕ `conformance/packages/conformance-tests/src/resolver/dns/rfc8906/extended.rs` (+279 -0) 📝 `conformance/packages/dns-test/src/client.rs` (+505 -27) 📝 `conformance/packages/dns-test/src/record.rs` (+22 -4) </details> ### 📄 Description This adds a conformance test suite for RFC 8906. All the tests in section 8 are translated to the dns-test framework. I had to add a number of features to the wrapper around `dig`, since the tests use a wide range of command-line flags, and the expected behavior includes fields of the output we weren't using previously. See #2572. Currently, Hickory is only failing the two tests regarding unknown opcodes, because it fails to respond, instead of responding with `NOTIMP`. BIND passes all tests. Unbound is failing two tests regarding flags in specific error responses. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-16 11:31:42 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/hickory-dns#3216
No description provided.