From 9452a0a3bca1a2d1b389cf45c6d8de157c0044ec Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sat, 2 Sep 2017 18:49:50 +0200 Subject: [PATCH] mw/kubernetes: test cleanup (#1020) Move tests infra to look like all other middleware, and some small cleanups. --- .../kubernetes/handler_pod_disabled_test.go | 24 ++++---- .../kubernetes/handler_pod_insecure_test.go | 14 ++--- .../kubernetes/handler_pod_verified_test.go | 17 +++--- middleware/kubernetes/handler_test.go | 58 ++++++++++++------- 4 files changed, 60 insertions(+), 53 deletions(-) diff --git a/middleware/kubernetes/handler_pod_disabled_test.go b/middleware/kubernetes/handler_pod_disabled_test.go index 59aa3e3a9..b1fb7604c 100644 --- a/middleware/kubernetes/handler_pod_disabled_test.go +++ b/middleware/kubernetes/handler_pod_disabled_test.go @@ -10,23 +10,19 @@ import ( "golang.org/x/net/context" ) -var podModeDisabledCases = map[string](test.Case){ - - "A Record Pod mode = Case 1": { +var podModeDisabledCases = []test.Case{ + { Qname: "10-240-0-1.podns.pod.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeNameError, - Error: errPodsDisabled, - Answer: []dns.RR{}, + Rcode: dns.RcodeNameError, + Error: errPodsDisabled, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, }, - - "A Record Pod mode = Case 2": { + { Qname: "172-0-0-2.podns.pod.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeNameError, - Error: errPodsDisabled, - Answer: []dns.RR{}, + Rcode: dns.RcodeNameError, + Error: errPodsDisabled, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, @@ -41,14 +37,14 @@ func TestServeDNSModeDisabled(t *testing.T) { k.podMode = podModeDisabled ctx := context.TODO() - for testname, tc := range podModeDisabledCases { + for i, tc := range podModeDisabledCases { r := tc.Msg() w := dnsrecorder.New(&test.ResponseWriter{}) _, err := k.ServeDNS(ctx, w, r) if err != tc.Error { - t.Errorf("%v expected no error, got %v\n", testname, err) + t.Errorf("Test %d expected no error, got %v", i, err) return } if tc.Error != nil { @@ -57,7 +53,7 @@ func TestServeDNSModeDisabled(t *testing.T) { 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) + t.Fatalf("Test %d, got nil message and no error for %q", i, r.Question[0].Name) } test.SortAndCheck(t, resp, tc) diff --git a/middleware/kubernetes/handler_pod_insecure_test.go b/middleware/kubernetes/handler_pod_insecure_test.go index cdcab4f9b..bc09f3c4f 100644 --- a/middleware/kubernetes/handler_pod_insecure_test.go +++ b/middleware/kubernetes/handler_pod_insecure_test.go @@ -10,17 +10,15 @@ import ( "golang.org/x/net/context" ) -var podModeInsecureCases = map[string](test.Case){ - - "A Record Pod mode = Case 1": { +var podModeInsecureCases = []test.Case{ + { Qname: "10-240-0-1.podns.pod.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.A("10-240-0-1.podns.pod.cluster.local. 0 IN A 10.240.0.1"), }, }, - - "A Record Pod mode = Case 2": { + { Qname: "172-0-0-2.podns.pod.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ @@ -37,14 +35,14 @@ func TestServeDNSModeInsecure(t *testing.T) { ctx := context.TODO() k.podMode = podModeInsecure - for testname, tc := range podModeInsecureCases { + for i, tc := range podModeInsecureCases { r := tc.Msg() w := dnsrecorder.New(&test.ResponseWriter{}) _, err := k.ServeDNS(ctx, w, r) if err != tc.Error { - t.Errorf("%v expected no error, got %v\n", testname, err) + t.Errorf("Test %d expected no error, got %v", i, err) return } if tc.Error != nil { @@ -53,7 +51,7 @@ func TestServeDNSModeInsecure(t *testing.T) { 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) + t.Fatalf("Test %d, got nil message and no error for %q", i, r.Question[0].Name) } test.SortAndCheck(t, resp, tc) diff --git a/middleware/kubernetes/handler_pod_verified_test.go b/middleware/kubernetes/handler_pod_verified_test.go index 45686df9e..879e785af 100644 --- a/middleware/kubernetes/handler_pod_verified_test.go +++ b/middleware/kubernetes/handler_pod_verified_test.go @@ -10,20 +10,17 @@ import ( "golang.org/x/net/context" ) -var podModeVerifiedCases = map[string](test.Case){ - - "A Record Pod mode = Case 1": { +var podModeVerifiedCases = []test.Case{ + { Qname: "10-240-0-1.podns.pod.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.A("10-240-0-1.podns.pod.cluster.local. 0 IN A 10.240.0.1"), }, }, - - "A Record Pod mode = Case 2": { + { Qname: "172-0-0-2.podns.pod.cluster.local.", Qtype: dns.TypeA, - Rcode: dns.RcodeNameError, - Answer: []dns.RR{}, + Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, @@ -38,14 +35,14 @@ func TestServeDNSModeVerified(t *testing.T) { ctx := context.TODO() k.podMode = podModeVerified - for testname, tc := range podModeVerifiedCases { + for i, tc := range podModeVerifiedCases { r := tc.Msg() w := dnsrecorder.New(&test.ResponseWriter{}) _, err := k.ServeDNS(ctx, w, r) if err != tc.Error { - t.Errorf("%v expected no error, got %v\n", testname, err) + t.Errorf("Test %d expected no error, got %v", i, err) return } if tc.Error != nil { @@ -54,7 +51,7 @@ func TestServeDNSModeVerified(t *testing.T) { 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) + t.Fatalf("Test %d, got nil message and no error for %q", i, r.Question[0].Name) } test.SortAndCheck(t, resp, tc) diff --git a/middleware/kubernetes/handler_test.go b/middleware/kubernetes/handler_test.go index 03058910d..8ab51aff8 100644 --- a/middleware/kubernetes/handler_test.go +++ b/middleware/kubernetes/handler_test.go @@ -11,54 +11,61 @@ import ( "k8s.io/client-go/1.5/pkg/api" ) -var dnsTestCases = map[string](test.Case){ - "A Service": { +var dnsTestCases = []test.Case{ + // A Service + { Qname: "svc1.testns.svc.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.A("svc1.testns.svc.cluster.local. 5 IN A 10.0.0.1"), }, }, - "A Service (wildcard)": { + // A Service (wildcard) + { Qname: "svc1.*.svc.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.A("svc1.*.svc.cluster.local. 5 IN A 10.0.0.1"), }, }, - "SRV Service (wildcard, root)": { + { Qname: "svc1.testns.svc.cluster.local.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess, Answer: []dns.RR{test.SRV("svc1.testns.svc.cluster.local. 303 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")}, Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1")}, }, - "SRV Service (wildcard)": { + // SRV Service (wildcard) + { Qname: "svc1.*.svc.cluster.local.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess, Answer: []dns.RR{test.SRV("svc1.*.svc.cluster.local. 303 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")}, Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1")}, }, - "SRV Service (wildcards)": { + // SRV Service (wildcards) + { Qname: "*.any.svc1.*.svc.cluster.local.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess, Answer: []dns.RR{test.SRV("*.any.svc1.*.svc.cluster.local. 303 IN SRV 0 100 80 svc1.testns.svc.cluster.local.")}, Extra: []dns.RR{test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1")}, }, - "A Service (wildcards)": { + // A Service (wildcards) + { Qname: "*.any.svc1.*.svc.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.A("*.any.svc1.*.svc.cluster.local. 303 IN A 10.0.0.1"), }, }, - "SRV Service Not udp/tcp": { + // SRV Service Not udp/tcp + { Qname: "*._not-udp-or-tcp.svc1.testns.svc.cluster.local.", Qtype: dns.TypeSRV, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, }, - "SRV Service": { + // SRV Service + { Qname: "_http._tcp.svc1.testns.svc.cluster.local.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ @@ -68,7 +75,8 @@ var dnsTestCases = map[string](test.Case){ test.A("svc1.testns.svc.cluster.local. 303 IN A 10.0.0.1"), }, }, - "A Service (Headless)": { + // A Service (Headless) + { Qname: "hdls1.testns.svc.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ @@ -76,7 +84,8 @@ var dnsTestCases = map[string](test.Case){ test.A("hdls1.testns.svc.cluster.local. 303 IN A 172.0.0.3"), }, }, - "SRV Service (Headless)": { + // SRV Service (Headless) + { Qname: "_http._tcp.hdls1.testns.svc.cluster.local.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ @@ -88,49 +97,56 @@ var dnsTestCases = map[string](test.Case){ test.A("172-0-0-3.hdls1.testns.svc.cluster.local. 303 IN A 172.0.0.3"), }, }, - "CNAME External": { + // CNAME External + { Qname: "external.testns.svc.cluster.local.", Qtype: dns.TypeCNAME, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.CNAME("external.testns.svc.cluster.local. 303 IN CNAME ext.interwebs.test."), }, }, - "AAAA Service (existing service)": { + // AAAA Service (existing service) + { Qname: "svc1.testns.svc.cluster.local.", Qtype: dns.TypeAAAA, Rcode: dns.RcodeSuccess, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, }, - "AAAA Service (non-existing service)": { + // AAAA Service (non-existing service) + { Qname: "svc0.testns.svc.cluster.local.", Qtype: dns.TypeAAAA, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, }, - "A Service (non-existing service)": { + // A Service (non-existing service) + { Qname: "svc0.testns.svc.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, }, - "TXT Schema": { + // TXT Schema + { Qname: "dns-version.cluster.local.", Qtype: dns.TypeTXT, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.TXT("dns-version.cluster.local 28800 IN TXT 1.0.1"), }, }, - "A Service (Headless) does not exist": { + // A Service (Headless) does not exist + { Qname: "bogusendpoint.hdls1.testns.svc.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 60"), }, }, - "A Service does not exist": { + // A Service does not exist + { Qname: "bogusendpoint.svc0.testns.svc.cluster.local.", Qtype: dns.TypeA, Rcode: dns.RcodeNameError, Ns: []dns.RR{ @@ -146,14 +162,14 @@ func TestServeDNS(t *testing.T) { k.Next = test.NextHandler(dns.RcodeSuccess, nil) ctx := context.TODO() - for testname, tc := range dnsTestCases { + for i, tc := range dnsTestCases { r := tc.Msg() w := dnsrecorder.New(&test.ResponseWriter{}) _, err := k.ServeDNS(ctx, w, r) if err != tc.Error { - t.Errorf("%v expected no error, got %v\n", testname, err) + t.Errorf("Test %d expected no error, got %v", i, err) return } if tc.Error != nil { @@ -162,7 +178,7 @@ func TestServeDNS(t *testing.T) { 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) + t.Fatalf("Test %d, got nil message and no error for %q", i, r.Question[0].Name) } // Before sorting, make sure that CNAMES do not appear after their target records