racket-dns-2012/resolver-test.rkt

58 lines
1.8 KiB
Racket

#lang racket/base
;; Noddy representation of a zone, and various zone and RRSet utilities.
(require racket/unit)
(require racket/pretty)
(require racket/set)
(require racket/match)
(require "api.rkt")
(require "codec.rkt")
(require "zonedb.rkt")
(require "network-query.rkt")
(require "resolver.rkt")
(require "test-rrs.rkt")
;; (require racket/trace)
;; (trace ;;resolve-from-zone
;; ;;build-referral
;; ;;incorporate-claims
;; ;;additional-section/a
;; ;;network-query
;; ;;network-query/addresses
;; ;;dns-message->claims
;; ;;negative-network-query-result
;; ;;closest-untried-nameservers
;; ;;answer-from-zone
;; ;;merge-replies
;; ;;in-bailiwick?
;; )
(define (drive-resolver qr)
(match qr
[(resolver-network-query q zone ns-rr addresses k)
(write `(INTERMEDIATE ,q ,ns-rr (,(length addresses) addresses))) (newline)
(network-query/addresses 'foo q zone ns-rr addresses
(lambda (qr) (drive-resolver (k qr))))]
[_ qr]))
(define (run-question name qtype)
(drive-resolver
(resolve-from-zone (question name qtype 'in)
(compile-zone-db
;; (list (rr '() 'ns 'in 30 '(#"google-public-dns-a" #"google" #"com"))
;; (rr '(#"google-public-dns-a" #"google" #"com") 'a 'in 30 '#(8 8 8 8)))
test-roots
)
#f
#t
(set)
values)))
;;(pretty-print (run-question '(#"www" #"google" #"com") 'a))
;;(pretty-print (run-question '(#"vapour" #"eighty-twenty" #"org") 'a))
;;(pretty-print (run-question '(#"eighty-twenty" #"org") 'a))
(pretty-print (run-question '(#"www" #"eighty-twenty" #"org") 'a))
;;(pretty-print (run-question '(#"foo" #"rallyx" #"ccs" #"neu" #"edu") 'a))
;;(pretty-print (run-question '(#"rallyx" #"ccs" #"neu" #"edu") 'a))