diff options
author | 2017-08-18 12:57:23 +0100 | |
---|---|---|
committer | 2017-08-18 12:57:23 +0100 | |
commit | cc4e4a0626bf8881e2ae8b2c1e52e09c6308e74e (patch) | |
tree | b1124a42abe78eff2b7944b2b65895522133b61c /test | |
parent | 5a1875120cceeaa90f065a4fa7dccffb8c535a71 (diff) | |
download | coredns-cc4e4a0626bf8881e2ae8b2c1e52e09c6308e74e.tar.gz coredns-cc4e4a0626bf8881e2ae8b2c1e52e09c6308e74e.tar.zst coredns-cc4e4a0626bf8881e2ae8b2c1e52e09c6308e74e.zip |
mw/autopath: integration test with erratic (#930)
Add integration test with erratic. For this erratic now also returns an
autopath searchpath. This tests the whole chain; i.e registring a
searchfunction and calling that from autopath.
This tests does a autopathing domain and a non-autopathing one.
Diffstat (limited to 'test')
-rw-r--r-- | test/erratic_autopath_test.go | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/test/erratic_autopath_test.go b/test/erratic_autopath_test.go new file mode 100644 index 000000000..cd9a077d1 --- /dev/null +++ b/test/erratic_autopath_test.go @@ -0,0 +1,85 @@ +package test + +import ( + "testing" + + "github.com/miekg/dns" +) + +func TestLookupAutoPathErratic(t *testing.T) { + corefile := `.:0 { + erratic + autopath @erratic + proxy . 8.8.8.8:53 + debug + } +` + i, err := CoreDNSServer(corefile) + if err != nil { + t.Fatalf("Could not get CoreDNS serving instance: %s", err) + } + + udp, _ := CoreDNSServerPorts(i, 0) + if udp == "" { + t.Fatalf("Could not get UDP listening port") + } + defer i.Stop() + + tests := []struct { + qname string + expectedAnswer string + expectedType uint16 + }{ + {"google.com.a.example.org.", "google.com.a.example.org.", dns.TypeCNAME}, + {"google.com.", "google.com.", dns.TypeA}, + } + + for i, tc := range tests { + m := new(dns.Msg) + // erratic always returns this search path: "a.example.org.", "b.example.org.", "". + m.SetQuestion(tc.qname, dns.TypeA) + + r, err := dns.Exchange(m, udp) + if err != nil { + t.Fatalf("Test %d, failed to sent query: %q", i, err) + } + if len(r.Answer) == 0 { + t.Fatalf("Test %d, answer section should have RRs", i) + } + if x := r.Answer[0].Header().Name; x != tc.expectedAnswer { + t.Fatalf("Test %d, expected answer %s, got %s", i, tc.expectedAnswer, x) + } + if x := r.Answer[0].Header().Rrtype; x != tc.expectedType { + t.Fatalf("Test %d, expected answer type %d, got %d", i, tc.expectedType, x) + } + } +} + +func TestAutoPathErraticNotLoaded(t *testing.T) { + corefile := `.:0 { + autopath @erratic + proxy . 8.8.8.8:53 + debug + } +` + i, err := CoreDNSServer(corefile) + if err != nil { + t.Fatalf("Could not get CoreDNS serving instance: %s", err) + } + + udp, _ := CoreDNSServerPorts(i, 0) + if udp == "" { + t.Fatalf("Could not get UDP listening port") + } + defer i.Stop() + + m := new(dns.Msg) + m.SetQuestion("google.com.a.example.org.", dns.TypeA) + r, err := dns.Exchange(m, udp) + if err != nil { + t.Fatalf("Failed to sent query: %q", err) + } + if r.Rcode != dns.RcodeNameError { + t.Fatalf("Expected NXDOMAIN, got %d", r.Rcode) + } +} |