diff options
Diffstat (limited to 'middleware/kubernetes/handler_test.go')
-rw-r--r-- | middleware/kubernetes/handler_test.go | 154 |
1 files changed, 4 insertions, 150 deletions
diff --git a/middleware/kubernetes/handler_test.go b/middleware/kubernetes/handler_test.go index dc6b62923..f27caaa99 100644 --- a/middleware/kubernetes/handler_test.go +++ b/middleware/kubernetes/handler_test.go @@ -5,7 +5,6 @@ import ( "sort" "testing" - "github.com/coredns/coredns/middleware/kubernetes/autopath" "github.com/coredns/coredns/middleware/pkg/dnsrecorder" "github.com/coredns/coredns/middleware/test" @@ -169,97 +168,6 @@ var podModeVerifiedCases = map[string](*test.Case){ }, } -var autopathCases = map[string](*test.Case){ - "A Autopath Service (Second Search)": { - Qname: "svc1.testns.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{ - test.CNAME("svc1.testns.podns.svc.cluster.local. 0 IN CNAME svc1.testns.svc.cluster.local."), - test.A("svc1.testns.svc.cluster.local. 0 IN A 10.0.0.1"), - }, - }, - "A Autopath Service (Third Search)": { - Qname: "svc1.testns.svc.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{ - test.CNAME("svc1.testns.svc.podns.svc.cluster.local. 0 IN CNAME svc1.testns.svc.cluster.local."), - test.A("svc1.testns.svc.cluster.local. 0 IN A 10.0.0.1"), - }, - }, - "A Autopath Next Middleware (Host Domain Search)": { - Qname: "test1.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{ - test.CNAME("test1.podns.svc.cluster.local. 0 IN CNAME test1.hostdom.test."), - test.A("test1.hostdom.test. 0 IN A 11.22.33.44"), - }, - }, - "A Autopath Service (Bare Search)": { - Qname: "svc1.testns.svc.cluster.local.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{ - test.CNAME("svc1.testns.svc.cluster.local.podns.svc.cluster.local. 0 IN CNAME svc1.testns.svc.cluster.local."), - test.A("svc1.testns.svc.cluster.local. 0 IN A 10.0.0.1"), - }, - }, - "A Autopath Next Middleware (Bare Search)": { - Qname: "test2.interwebs.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{ - test.CNAME("test2.interwebs.podns.svc.cluster.local. 0 IN CNAME test2.interwebs."), - test.A("test2.interwebs. 0 IN A 55.66.77.88"), - }, - }, - "AAAA Autopath Next Middleware (Bare Search)": { - Qname: "test2.interwebs.podns.svc.cluster.local.", Qtype: dns.TypeAAAA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{ - test.CNAME("test2.interwebs.podns.svc.cluster.local. 0 IN CNAME test2.interwebs."), - test.AAAA("test2.interwebs. 0 IN AAAA 5555:6666:7777::8888"), - }, - }, -} -var autopathBareSearch = map[string](*test.Case){ - "A Autopath Next Middleware (Bare Search) Non-existing OnNXDOMAIN default": { - Qname: "nothere.interwebs.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{}, - }, -} -var autopathBareSearchExpectNameErr = map[string](*test.Case){ - "A Autopath Next Middleware (Bare Search) Non-existing OnNXDOMAIN disabled": { - Qname: "nothere.interwebs.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeNameError, - Answer: []dns.RR{}, - }, -} -var autopath2NDotsCases = map[string](*test.Case){ - "A Service (0 Dots)": { - Qname: "foo.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeNameError, - Answer: []dns.RR{}, - Ns: []dns.RR{ - test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), - }, - }, - "A Service (1 Dots)": { - Qname: "foo.foo.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeNameError, - Answer: []dns.RR{}, - Ns: []dns.RR{ - test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), - }, - }, - "A Service (2 Dots)": { - Qname: "foo.foo.foo.podns.svc.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeSuccess, - Answer: []dns.RR{ - test.A("foo.foo.foo.hostdom.test. 0 IN A 11.22.33.44"), - test.CNAME("foo.foo.foo.podns.svc.cluster.local. 0 IN CNAME foo.foo.foo.hostdom.test."), - }, - }, -} - func TestServeDNS(t *testing.T) { k := Kubernetes{Zones: []string{"cluster.local."}} @@ -268,15 +176,11 @@ func TestServeDNS(t *testing.T) { k.ReverseCidrs = []net.IPNet{*cidr} k.Federations = []Federation{{name: "fed", zone: "federal.test."}} k.APIConn = &APIConnServeTest{} - k.autoPath = new(autopath.AutoPath) - k.autoPath.HostSearchPath = []string{"hostdom.test"} k.interfaceAddrsFunc = localPodIP - k.Next = testHandler(nextMWMap) + k.Next = test.NextHandler(dns.RcodeSuccess, nil) ctx := context.TODO() runServeDNSTests(ctx, t, dnsTestCases, k) - runServeDNSTests(ctx, t, autopathCases, k) - runServeDNSTests(ctx, t, autopathBareSearch, k) //Set PodMode to Disabled k.PodMode = PodModeDisabled @@ -287,21 +191,10 @@ func TestServeDNS(t *testing.T) { //Set PodMode to Verified k.PodMode = PodModeVerified runServeDNSTests(ctx, t, podModeVerifiedCases, k) - - // Set ndots to 2 for the ndots test cases - k.autoPath.NDots = 2 - runServeDNSTests(ctx, t, autopath2NDotsCases, k) - k.autoPath.NDots = defautNdots - // Disable the NXDOMAIN override (enabled by default) - k.autoPath.OnNXDOMAIN = dns.RcodeNameError - runServeDNSTests(ctx, t, autopathCases, k) - runServeDNSTests(ctx, t, autopathBareSearchExpectNameErr, k) - } func runServeDNSTests(ctx context.Context, t *testing.T, dnsTestCases map[string](*test.Case), k Kubernetes) { for testname, tc := range dnsTestCases { - testname = "\nTest Case \"" + testname + "\"" r := tc.Msg() w := dnsrecorder.New(&test.ResponseWriter{}) @@ -316,6 +209,9 @@ func runServeDNSTests(ctx context.Context, t *testing.T, dnsTestCases map[string } resp := w.Msg + if resp == nil { + t.Fatalf("got nil message and no error for %q: %s %d", testname, r.Question[0].Name, r.Question[0].Qtype) + } // Before sorting, make sure that CNAMES do not appear after their target records for i, c := range resp.Answer { @@ -355,48 +251,6 @@ func runServeDNSTests(ctx context.Context, t *testing.T, dnsTestCases map[string } } -// next middleware question->answer map - -var nextMWMap = map[dns.Question]dns.Msg{ - {Name: "test1.hostdom.test.", Qtype: dns.TypeA, Qclass: dns.ClassINET}: { - Answer: []dns.RR{test.A("test1.hostdom.test. 0 IN A 11.22.33.44")}, - }, - {Name: "test2.interwebs.", Qtype: dns.TypeA, Qclass: dns.ClassINET}: { - Answer: []dns.RR{test.A("test2.interwebs. 0 IN A 55.66.77.88")}, - }, - {Name: "test2.interwebs.", Qtype: dns.TypeAAAA, Qclass: dns.ClassINET}: { - Answer: []dns.RR{test.AAAA("test2.interwebs. 0 IN AAAA 5555:6666:7777::8888")}, - }, - {Name: "foo.hostdom.test.", Qtype: dns.TypeA, Qclass: dns.ClassINET}: { - Answer: []dns.RR{test.A("foo.hostdom.test. 0 IN A 11.22.33.44")}, - }, - {Name: "foo.foo.hostdom.test.", Qtype: dns.TypeA, Qclass: dns.ClassINET}: { - Answer: []dns.RR{test.A("foo.foo.hostdom.test. 0 IN A 11.22.33.44")}, - }, - {Name: "foo.foo.foo.hostdom.test.", Qtype: dns.TypeA, Qclass: dns.ClassINET}: { - Answer: []dns.RR{test.A("foo.foo.foo.hostdom.test. 0 IN A 11.22.33.44")}, - }, -} - -// testHandler returns a Handler that returns an answer for the question in the -// request per the question->answer map qMap. -func testHandler(qMap map[dns.Question]dns.Msg) test.Handler { - return test.HandlerFunc(func(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { - m := new(dns.Msg) - m.SetReply(r) - msg, ok := qMap[r.Question[0]] - if !ok { - r.Rcode = dns.RcodeNameError - return dns.RcodeNameError, nil - } - r.Rcode = dns.RcodeSuccess - m.Answer = append(m.Answer, msg.Answer...) - m.Extra = append(m.Extra, msg.Extra...) - w.WriteMsg(m) - return dns.RcodeSuccess, nil - }) -} - type APIConnServeTest struct{} func (APIConnServeTest) Run() { return } |