5d1e5ca86c
feat: add comprehensive test suite for ExploreDNS
...
CI / test (pull_request) Failing after 2m36s
- Unit tests for all internal packages exceeding 80% coverage:
- internal/config: 86.2% (ParseMaxDepth, ParseRetries, validation paths)
- internal/dns: 82.9% (IterativeQueryWithExchange, mock DNS server, roots)
- internal/fingerprint: 96.4% (unchanged, already excellent)
- internal/output: 86.7% (formatters, stats, JSON/text output, hooks)
- internal/traverse: 86.7% (SetHooks, ResolveNS, processReferral,
ensureRDFalse, resolveGlueViaSystem, newAQuery, Referral.Resolve)
- Integration tests in internal/integration/:
- End-to-end traversal with mock DNS exchange function
- Referral chain traversal (root -> TLD -> authoritative)
- CNAME resolution and loop detection
- NXDOMAIN and SERVFAIL response handling
- Max depth enforcement
- Context cancellation
- TraverserHooks event delivery
- Mock DNS server helper in internal/dns/roots_test.go using miekg/dns
(enables deterministic testing without network dependency)
- CI updated with coverage reporting step
- Makefile: added 'cover' target for local HTML coverage reports
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 03:47:04 +10:00
multica-agent
fe1afe2a97
Phase 4.1: Error handling, edge cases, and robustness ( #11 )
CI / test (push) Failing after 2m36s
2026-06-07 17:24:00 +00:00
8e7beacc22
fix: address code review issues on PR #9
...
CI / test (pull_request) Waiting to run
- gofmt main.go to fix tab indentation in main() body
- stats.go ComputeSummary: return nil when Answers and ByType are empty
- dns/types.go: remove duplicate ParseQueryType (dead code)
- formatter.go: log hook errors to stderr when Debug > 0; add Debug to Config
- text.go referralID: remove redundant depth==0 branch
- text.go writeServers: remove version lookup placeholder string
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 02:32:58 +10:00
Gary Hansen and multica-agent
5a54834c5f
feat: implement output formatting and display (HAN-383)
...
CI / test (pull_request) Failing after 2m2s
Add text and JSON formatters with real-time progress via traverser hooks,
summary statistics, and CLI integration for --show-* and --json flags.
Co-authored-by: multica-agent <github@multica.ai >
2026-06-08 02:21:13 +10:00
multica-agent
876542b2de
feat: implement CLI flags and configuration handling (HAN-382) ( #8 )
CI / test (push) Failing after 3m57s
2026-06-07 16:08:39 +00:00
gary
39529dacbb
feat: implement traversal engine (HAN-380) ( #6 )
...
CI / test (push) Failing after 1m26s
Co-authored-by: Hansen IT Solutions <gary@hansenits.com >
Co-committed-by: Hansen IT Solutions <gary@hansenits.com >
2026-06-06 03:41:14 +00:00
Gary and multica-agent
db3ad498f6
feat: implement CachingResolver with per-server query caching
...
CI / test (pull_request) Failing after 3h13m39s
Add Resolver interface, BasicResolver, and CachingResolver to internal/dns.
CachingResolver wraps any Resolver with an in-memory cache keyed by
(server IP, name, type, class). Cache entries respect DNS TTL from
responses, falling back to a configurable default TTL. Thread-safe
using sync.RWMutex. Includes Len, Clear, and PurgeExpired methods
for cache management.
Closes HAN-379 (Phase 2.2).
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:58:46 +10:00
Gary and multica-agent
924fcbd43a
feat: implement root server discovery (HAN-378)
...
CI / test (pull_request) Failing after 1m17s
Add RootServer struct and DiscoverRoots function that queries the local
resolver for NS records of the root zone, resolves each root name to
A/AAAA addresses, and returns a list of RootServer structs.
Supports:
- Default: discovers a single root server from local resolver
- --root-server override to target a specific root server
- --all-root-servers to discover all 13 root servers
- --root-aaaa flag to include IPv6 addresses
Includes unit tests for all helper functions and integration tests
that skip gracefully when no resolver is available.
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:44:59 +10:00
Gary
2338abd14f
Merge remote-tracking branch 'origin/main' into agent/go-expert-developer/8e316e05
...
CI / test (pull_request) Failing after 3h12m56s
# Conflicts:
# go.mod
# go.sum
2026-06-05 15:34:57 +10:00
Gary and multica-agent
fce7920611
feat: add DNS query/response layer with miekg/dns
...
Phase 1.2 implementation:
- internal/dns/types.go: DNS record type constants (A, AAAA, NS, CNAME, SOA,
MX, TXT, SRV, PTR, ANY) with QNameType helper and EDNS0 defaults
- internal/dns/query.go: Query/QueryWithExchange with UDP, configurable
EDNS0 buffer size, TCP fallback on truncation, always-TCP mode, configurable
retries with timeout, context support, and injectable ExchangeFunc for testing
- internal/dns/decode.go: Response classification (answer, referral, NODATA,
NXDOMAIN, SERVFAIL), CNAME chain extraction with dedup, truncation/RCODE
detection, and section extraction utilities
32 unit tests covering all acceptance criteria.
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:14:56 +10:00
Gary and multica-agent
8090182e1a
feat: Go project scaffolding - module init, directory structure, CLI skeleton, Makefile, CI
...
CI / build (pull_request) Failing after 3h1m44s
Co-authored-by: multica-agent <github@multica.ai >
2026-06-05 15:08:29 +10:00