diff options
author | 2021-07-10 07:34:53 +0200 | |
---|---|---|
committer | 2021-07-10 07:34:53 +0200 | |
commit | d17e50afc7e231b0389596cbe69b82f85e4221f3 (patch) | |
tree | 2ea387dabb3ba899ee0c87bffe59101b0ea829f5 /plugin/trace/trace_test.go | |
parent | 6efda5293e012238d34157c6eca29c0e5cbf7119 (diff) | |
download | coredns-d17e50afc7e231b0389596cbe69b82f85e4221f3.tar.gz coredns-d17e50afc7e231b0389596cbe69b82f85e4221f3.tar.zst coredns-d17e50afc7e231b0389596cbe69b82f85e4221f3.zip |
plugin/trace: fix rcode tag in case of no response (#4742)
Signed-off-by: Ondrej Benkovsky <ondrej.benkovsky@wandera.com>
Diffstat (limited to 'plugin/trace/trace_test.go')
-rw-r--r-- | plugin/trace/trace_test.go | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/plugin/trace/trace_test.go b/plugin/trace/trace_test.go index 233f63207..dae546f8d 100644 --- a/plugin/trace/trace_test.go +++ b/plugin/trace/trace_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/coredns/caddy" + "github.com/coredns/coredns/plugin" "github.com/coredns/coredns/plugin/pkg/dnstest" "github.com/coredns/coredns/plugin/pkg/rcode" "github.com/coredns/coredns/plugin/test" @@ -43,23 +44,33 @@ func TestTrace(t *testing.T) { cases := []struct { name string rcode int + status int question *dns.Msg - server string err error }{ { name: "NXDOMAIN", rcode: dns.RcodeNameError, + status: dns.RcodeSuccess, question: new(dns.Msg).SetQuestion("example.org.", dns.TypeA), }, { name: "NOERROR", rcode: dns.RcodeSuccess, + status: dns.RcodeSuccess, question: new(dns.Msg).SetQuestion("example.net.", dns.TypeCNAME), }, { name: "SERVFAIL", rcode: dns.RcodeServerFailure, + status: dns.RcodeSuccess, + question: new(dns.Msg).SetQuestion("example.net.", dns.TypeA), + err: errors.New("test error"), + }, + { + name: "No response written", + rcode: dns.RcodeServerFailure, + status: dns.RcodeServerFailure, question: new(dns.Msg).SetQuestion("example.net.", dns.TypeA), err: errors.New("test error"), }, @@ -71,13 +82,12 @@ func TestTrace(t *testing.T) { m := mocktracer.New() tr := &trace{ Next: test.HandlerFunc(func(_ context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { - m := new(dns.Msg) - m.SetRcode(r, tc.rcode) - w.WriteMsg(m) - if tc.err != nil { - return tc.rcode, tc.err + if plugin.ClientWrite(tc.status) { + m := new(dns.Msg) + m.SetRcode(r, tc.rcode) + w.WriteMsg(m) } - return tc.rcode, nil + return tc.status, tc.err }), every: 1, tracer: m, |