Commit 5e999155 authored by Sandeep Rajan's avatar Sandeep Rajan Committed by Chris O'Haver

Middleware/Kubernetes: Add RR check to K8s integration tests (#884)

parent f901b0ce
...@@ -25,7 +25,7 @@ env: ...@@ -25,7 +25,7 @@ env:
# IPv6 is needed by some of the CoreDNS test cases. The VM environment # IPv6 is needed by some of the CoreDNS test cases. The VM environment
# is needed to have access to sudo in the test environment. Sudo is # is needed to have access to sudo in the test environment. Sudo is
# needed to have docker in the test environment. Docker is needed to # needed to have docker in the test environment. Docker is needed to
# launch a kubernetes instance in the test environment. # launch a Kubernetes instance in the test environment.
# (Dependencies are fun! :) ) # (Dependencies are fun! :) )
before_install: before_install:
- cat /proc/net/if_inet6 - cat /proc/net/if_inet6
...@@ -51,5 +51,6 @@ before_script: ...@@ -51,5 +51,6 @@ before_script:
script: script:
- make TEST_TYPE=$TEST_TYPE travis - make TEST_TYPE=$TEST_TYPE travis
after_success: after_success:
- bash <(curl -s https://codecov.io/bash) - bash <(curl -s https://codecov.io/bash)
...@@ -235,19 +235,8 @@ func runServeDNSTests(ctx context.Context, t *testing.T, dnsTestCases map[string ...@@ -235,19 +235,8 @@ func runServeDNSTests(ctx context.Context, t *testing.T, dnsTestCases map[string
} }
// Before sorting, make sure that CNAMES do not appear after their target records // Before sorting, make sure that CNAMES do not appear after their target records
for i, c := range resp.Answer { test.CNAMEOrder(t, resp)
if c.Header().Rrtype != dns.TypeCNAME {
continue
}
for _, a := range resp.Answer[:i] {
if a.Header().Name != c.(*dns.CNAME).Target {
continue
}
t.Errorf("%v: CNAME found after target record\n", testname)
t.Logf("%v Received:\n %v\n", testname, resp)
}
}
test.SortAndCheck(t, resp, tc) test.SortAndCheck(t, resp, tc)
} }
} }
......
...@@ -13,7 +13,7 @@ type sect int ...@@ -13,7 +13,7 @@ type sect int
const ( const (
// Answer is the answer section in an Msg. // Answer is the answer section in an Msg.
Answer sect = iota Answer sect = iota
// Ns is the authrotitative section in an Msg. // Ns is the authoritative section in an Msg.
Ns Ns
// Extra is the additional section in an Msg. // Extra is the additional section in an Msg.
Extra Extra
...@@ -264,6 +264,23 @@ func Section(t *testing.T, tc Case, sec sect, rr []dns.RR) bool { ...@@ -264,6 +264,23 @@ func Section(t *testing.T, tc Case, sec sect, rr []dns.RR) bool {
return true return true
} }
// CNAMEOrder makes sure that CNAMES do not appear after their target records
func CNAMEOrder(t *testing.T, res *dns.Msg) {
for i, c := range res.Answer {
if c.Header().Rrtype != dns.TypeCNAME {
continue
}
for _, a := range res.Answer[:i] {
if a.Header().Name != c.(*dns.CNAME).Target {
continue
}
t.Errorf("CNAME found after target record\n")
t.Logf("%v\n", res)
}
}
}
// SortAndCheck sorts resp and the checks the header and three sections against the testcase in tc. // SortAndCheck sorts resp and the checks the header and three sections against the testcase in tc.
func SortAndCheck(t *testing.T, resp *dns.Msg, tc Case) { func SortAndCheck(t *testing.T, resp *dns.Msg, tc Case) {
sort.Sort(RRSet(resp.Answer)) sort.Sort(RRSet(resp.Answer))
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment