func TestShouldTransfer(t *testing.T) { soa := soa{250} dns.HandleFunc(testZone, soa.Handler) defer dns.HandleRemove(testZone) s, addrstr, err := test.TCPServer("127.0.0.1:0") if err != nil { t.Fatalf("unable to run test server: %v", err) } defer s.Shutdown() z := new(Zone) z.origin = testZone z.TransferFrom = []string{addrstr} // Serial smaller z.Apex.SOA = test.SOA(fmt.Sprintf("%s IN SOA bla. bla. %d 0 0 0 0 ", testZone, soa.serial-1)) should, err := z.shouldTransfer() if err != nil { t.Fatalf("unable to run shouldTransfer: %v", err) } if !should { t.Fatalf("shouldTransfer should return true for serial: %q", soa.serial-1) } // Serial equal z.Apex.SOA = test.SOA(fmt.Sprintf("%s IN SOA bla. bla. %d 0 0 0 0 ", testZone, soa.serial)) should, err = z.shouldTransfer() if err != nil { t.Fatalf("unable to run shouldTransfer: %v", err) } if should { t.Fatalf("shouldTransfer should return false for serial: %d", soa.serial) } }
func BenchmarkLookupDNSSEC(b *testing.B) { zone, err := Parse(strings.NewReader(dbMiekNL_signed), testzone, "stdin") if err != nil { return } fm := File{Next: test.ErrorHandler(), Zones: Zones{Z: map[string]*Zone{testzone: zone}, Names: []string{testzone}}} ctx := context.TODO() rec := middleware.NewResponseRecorder(&test.ResponseWriter{}) tc := test.Case{ Qname: "b.miek.nl.", Qtype: dns.TypeA, Do: true, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.NSEC("archive.miek.nl. 14400 IN NSEC go.dns.miek.nl. CNAME RRSIG NSEC"), test.RRSIG("archive.miek.nl. 14400 IN RRSIG NSEC 8 3 14400 20160426031301 20160327031301 12051 miek.nl. jEpx8lcp4do5fWXg="), test.NSEC("miek.nl. 14400 IN NSEC a.miek.nl. A NS SOA MX AAAA RRSIG NSEC DNSKEY"), test.RRSIG("miek.nl. 14400 IN RRSIG NSEC 8 2 14400 20160426031301 20160327031301 12051 miek.nl. mFfc3r/9PSC1H6oSpdC"), test.RRSIG("miek.nl. 1800 IN RRSIG SOA 8 2 1800 20160426031301 20160327031301 12051 miek.nl. FIrzy07acBbtyQczy1dc="), test.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"), }, } m := tc.Msg() b.ResetTimer() for i := 0; i < b.N; i++ { fm.ServeDNS(ctx, rec, m) } }
func (s *soa) TransferHandler(w dns.ResponseWriter, req *dns.Msg) { m := new(dns.Msg) m.SetReply(req) m.Answer = make([]dns.RR, 1) m.Answer[0] = test.SOA(fmt.Sprintf("%s IN SOA bla. bla. %d 0 0 0 0 ", testZone, s.serial)) w.WriteMsg(m) }
func (s *soa) Handler(w dns.ResponseWriter, req *dns.Msg) { m := new(dns.Msg) m.SetReply(req) switch req.Question[0].Qtype { case dns.TypeSOA: m.Answer = make([]dns.RR, 1) m.Answer[0] = test.SOA(fmt.Sprintf("%s IN SOA bla. bla. %d 0 0 0 0 ", testZone, s.serial)) w.WriteMsg(m) case dns.TypeAXFR: m.Answer = make([]dns.RR, 4) m.Answer[0] = test.SOA(fmt.Sprintf("%s IN SOA bla. bla. %d 0 0 0 0 ", testZone, s.serial)) m.Answer[1] = test.A(fmt.Sprintf("%s IN A 127.0.0.1", testZone)) m.Answer[2] = test.A(fmt.Sprintf("%s IN A 127.0.0.1", testZone)) m.Answer[3] = test.SOA(fmt.Sprintf("%s IN SOA bla. bla. %d 0 0 0 0 ", testZone, s.serial)) w.WriteMsg(m) } }
var dnsTestCasesDebug = []test.Case{ { Qname: "o-o.debug.dom.skydns.test.", Qtype: dns.TypeA, Answer: []dns.RR{ test.A("dom.skydns.test. 300 IN A 127.0.0.1"), test.A("dom.skydns.test. 300 IN A 127.0.0.2"), }, Extra: []dns.RR{ test.TXT(`a.dom.skydns.test. 300 CH TXT "127.0.0.1:0(10,0,,false)[0,]"`), test.TXT(`b.sub.dom.skydns.test. 300 CH TXT "127.0.0.2:0(10,0,,false)[0,]"`), }, }, { Qname: "o-o.debug.dom.skydns.test.", Qtype: dns.TypeTXT, Ns: []dns.RR{ test.SOA("skydns.test. 300 IN SOA ns.dns.skydns.test. hostmaster.skydns.test. 1463943291 7200 1800 86400 60"), }, Extra: []dns.RR{ test.TXT(`a.dom.skydns.test. 300 CH TXT "127.0.0.1:0(10,0,,false)[0,]"`), test.TXT(`b.sub.dom.skydns.test. 300 CH TXT "127.0.0.2:0(10,0,,false)[0,]"`), }, }, } var dnsTestCasesDebugFalse = []test.Case{ { Qname: "o-o.debug.dom.skydns.test.", Qtype: dns.TypeA, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("skydns.test. 300 IN SOA ns.dns.skydns.test. hostmaster.skydns.test. 1463943291 7200 1800 86400 60"), },
// SRV Test { Qname: "a.server1.dev.region1.skydns.test.", Qtype: dns.TypeSRV, Answer: []dns.RR{test.SRV("a.server1.dev.region1.skydns.test. 300 SRV 10 100 8080 dev.server1.")}, }, // SRV Test (case test) { Qname: "a.SERVer1.dEv.region1.skydns.tEst.", Qtype: dns.TypeSRV, Answer: []dns.RR{test.SRV("a.SERVer1.dEv.region1.skydns.tEst. 300 SRV 10 100 8080 dev.server1.")}, }, // NXDOMAIN Test { Qname: "doesnotexist.skydns.test.", Qtype: dns.TypeA, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("skydns.test. 300 SOA ns.dns.skydns.test. hostmaster.skydns.test. 0 0 0 0 0"), }, }, // A Test { Qname: "a.server1.prod.region1.skydns.test.", Qtype: dns.TypeA, Answer: []dns.RR{test.A("a.server1.prod.region1.skydns.test. 300 A 10.0.0.1")}, }, // SRV Test where target is IP address { Qname: "a.server1.prod.region1.skydns.test.", Qtype: dns.TypeSRV, Answer: []dns.RR{test.SRV("a.server1.prod.region1.skydns.test. 300 SRV 10 100 8080 a.server1.prod.region1.skydns.test.")}, Extra: []dns.RR{test.A("a.server1.prod.region1.skydns.test. 300 A 10.0.0.1")}, }, // AAAA Test {
"sort" "strings" "testing" "github.com/miekg/coredns/middleware" "github.com/miekg/coredns/middleware/test" "github.com/miekg/dns" "golang.org/x/net/context" ) var entTestCases = []test.Case{ { Qname: "b.c.miek.nl.", Qtype: dns.TypeA, Ns: []dns.RR{ test.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"), }, }, { Qname: "b.c.miek.nl.", Qtype: dns.TypeA, Do: true, Ns: []dns.RR{ test.NSEC("a.miek.nl. 14400 IN NSEC a.b.c.miek.nl. A RRSIG NSEC"), test.RRSIG("a.miek.nl. 14400 IN RRSIG NSEC 8 3 14400 20160502144311 20160402144311 12051 miek.nl. d5XZEy6SUpq98ZKUlzqhAfkLI9pQPc="), test.RRSIG("miek.nl. 1800 IN RRSIG SOA 8 2 1800 20160502144311 20160402144311 12051 miek.nl. KegoBxA3Tbrhlc4cEdkRiteIkOfsq"), test.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"), }, Extra: []dns.RR{test.OPT(4096, true)}, }, } func TestLookupENT(t *testing.T) {
func testNxdomainMsg() *dns.Msg { return &dns.Msg{MsgHdr: dns.MsgHdr{Rcode: dns.RcodeNameError}, Question: []dns.Question{dns.Question{Name: "ww.miek.nl.", Qclass: dns.ClassINET, Qtype: dns.TypeTXT}}, Ns: []dns.RR{test.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1461471181 14400 3600 604800 14400")}, } }
{Text: strings.Repeat("0", 400), Key: "large400.skydns.test."}, {Text: strings.Repeat("0", 600), Key: "large600.skydns.test."}, {Text: strings.Repeat("0", 2000), Key: "large2000.skydns.test."}, // duplicate ip address {Host: "10.11.11.10", Key: "http.multiport.http.skydns.test.", Port: 80}, {Host: "10.11.11.10", Key: "https.multiport.http.skydns.test.", Port: 443}, } var dnsTestCasesOther = []test.Case{ // MX Tests { // NODATA as this is not an Mail: true record. Qname: "a.server1.dev.region1.skydns.test.", Qtype: dns.TypeMX, Ns: []dns.RR{ test.SOA("skydns.test. 300 SOA ns.dns.skydns.test. hostmaster.skydns.test. 0 0 0 0 0"), }, }, { Qname: "a.mail.skydns.test.", Qtype: dns.TypeMX, Answer: []dns.RR{test.MX("a.mail.skydns.test. 300 IN MX 50 mx.skydns.test.")}, Extra: []dns.RR{ test.A("a.ipaddr.skydns.test. 300 IN A 172.16.1.1"), test.CNAME("mx.skydns.test. 300 IN CNAME a.ipaddr.skydns.test."), }, }, { Qname: "mx2.skydns.test.", Qtype: dns.TypeMX, Answer: []dns.RR{ test.MX("mx2.skydns.test. 300 IN MX 10 a.ipaddr.skydns.test."), test.MX("mx2.skydns.test. 300 IN MX 10 b.ipaddr.skydns.test."),