diff options
Diffstat (limited to 'middleware/file/secondary_test.go')
-rw-r--r-- | middleware/file/secondary_test.go | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/middleware/file/secondary_test.go b/middleware/file/secondary_test.go deleted file mode 100644 index cdb051d26..000000000 --- a/middleware/file/secondary_test.go +++ /dev/null @@ -1,168 +0,0 @@ -package file - -import ( - "fmt" - "io/ioutil" - "log" - "testing" - - "github.com/coredns/coredns/middleware/test" - "github.com/coredns/coredns/request" - - "github.com/miekg/dns" -) - -// TODO(miek): should test notifies as well, ie start test server (a real coredns one)... -// setup other test server that sends notify, see if CoreDNS comes calling for a zone -// tranfer - -func TestLess(t *testing.T) { - const ( - min = 0 - max = 4294967295 - low = 12345 - high = 4000000000 - ) - - if less(min, max) { - t.Fatalf("less: should be false") - } - if !less(max, min) { - t.Fatalf("less: should be true") - } - if !less(high, low) { - t.Fatalf("less: should be true") - } - if !less(7, 9) { - t.Fatalf("less; should be true") - } -} - -type soa struct { - serial uint32 -} - -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) - } -} - -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) -} - -const testZone = "secondary.miek.nl." - -func TestShouldTransfer(t *testing.T) { - soa := soa{250} - log.SetOutput(ioutil.Discard) - - 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} - - // when we have a nil SOA (initial state) - 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: %d", soa.serial) - } - // 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 TestTransferIn(t *testing.T) { - soa := soa{250} - log.SetOutput(ioutil.Discard) - - 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.Expired = new(bool) - z.origin = testZone - z.TransferFrom = []string{addrstr} - - err = z.TransferIn() - if err != nil { - t.Fatalf("unable to run TransferIn: %v", err) - } - if z.Apex.SOA.String() != fmt.Sprintf("%s 3600 IN SOA bla. bla. 250 0 0 0 0", testZone) { - t.Fatalf("unknown SOA transferred") - } -} - -func TestIsNotify(t *testing.T) { - z := new(Zone) - z.Expired = new(bool) - z.origin = testZone - state := newRequest(testZone, dns.TypeSOA) - // need to set opcode - state.Req.Opcode = dns.OpcodeNotify - - z.TransferFrom = []string{"10.240.0.1:53"} // IP from from testing/responseWriter - if !z.isNotify(state) { - t.Fatal("should have been valid notify") - } - z.TransferFrom = []string{"10.240.0.2:53"} - if z.isNotify(state) { - t.Fatal("should have been invalid notify") - } -} - -func newRequest(zone string, qtype uint16) request.Request { - m := new(dns.Msg) - m.SetQuestion("example.com.", dns.TypeA) - m.SetEdns0(4097, true) - return request.Request{W: &test.ResponseWriter{}, Req: m} -} |