aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2016-09-21 17:01:19 +0100
committerGravatar GitHub <noreply@github.com> 2016-09-21 17:01:19 +0100
commit5301c5af5fde0ad5bf063e12decd4c5202047457 (patch)
treefc9957fc5382285f27c12436b9f4da9aae670548 /test
parent7b79458c8a659a4cc8fffb5f678321a0fdd09333 (diff)
downloadcoredns-5301c5af5fde0ad5bf063e12decd4c5202047457.tar.gz
coredns-5301c5af5fde0ad5bf063e12decd4c5202047457.tar.zst
coredns-5301c5af5fde0ad5bf063e12decd4c5202047457.zip
Run golint and go vet (#276)
Cleanup the errors and removed deadcode along the way. The leaves some error laying around, mostly about commenting exported identifier. We should look hard if those really are needed.
Diffstat (limited to 'test')
-rw-r--r--test/helpers.go250
-rw-r--r--test/helpers_test.go5
-rw-r--r--test/proxy_test.go2
-rw-r--r--test/responsewriter.go28
-rw-r--r--test/server.go65
-rw-r--r--test/server_test.go5
-rw-r--r--test/tests.go12
7 files changed, 16 insertions, 351 deletions
diff --git a/test/helpers.go b/test/helpers.go
deleted file mode 100644
index 01a6f156b..000000000
--- a/test/helpers.go
+++ /dev/null
@@ -1,250 +0,0 @@
-package test
-
-import (
- "testing"
-
- "github.com/miekg/dns"
- "golang.org/x/net/context"
-)
-
-type Sect int
-
-const (
- Answer Sect = iota
- Ns
- Extra
-)
-
-type RRSet []dns.RR
-
-func (p RRSet) Len() int { return len(p) }
-func (p RRSet) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
-func (p RRSet) Less(i, j int) bool { return p[i].String() < p[j].String() }
-
-// If the TTL of a record is 303 we don't care what the TTL is.
-type Case struct {
- Qname string
- Qtype uint16
- Rcode int
- Do bool
- Answer []dns.RR
- Ns []dns.RR
- Extra []dns.RR
-}
-
-func (c Case) Msg() *dns.Msg {
- m := new(dns.Msg)
- m.SetQuestion(dns.Fqdn(c.Qname), c.Qtype)
- if c.Do {
- o := new(dns.OPT)
- o.Hdr.Name = "."
- o.Hdr.Rrtype = dns.TypeOPT
- o.SetDo()
- o.SetUDPSize(4096)
- m.Extra = []dns.RR{o}
- }
- return m
-}
-
-func A(rr string) *dns.A { r, _ := dns.NewRR(rr); return r.(*dns.A) }
-func AAAA(rr string) *dns.AAAA { r, _ := dns.NewRR(rr); return r.(*dns.AAAA) }
-func CNAME(rr string) *dns.CNAME { r, _ := dns.NewRR(rr); return r.(*dns.CNAME) }
-func SRV(rr string) *dns.SRV { r, _ := dns.NewRR(rr); return r.(*dns.SRV) }
-func SOA(rr string) *dns.SOA { r, _ := dns.NewRR(rr); return r.(*dns.SOA) }
-func NS(rr string) *dns.NS { r, _ := dns.NewRR(rr); return r.(*dns.NS) }
-func PTR(rr string) *dns.PTR { r, _ := dns.NewRR(rr); return r.(*dns.PTR) }
-func TXT(rr string) *dns.TXT { r, _ := dns.NewRR(rr); return r.(*dns.TXT) }
-func MX(rr string) *dns.MX { r, _ := dns.NewRR(rr); return r.(*dns.MX) }
-func RRSIG(rr string) *dns.RRSIG { r, _ := dns.NewRR(rr); return r.(*dns.RRSIG) }
-func NSEC(rr string) *dns.NSEC { r, _ := dns.NewRR(rr); return r.(*dns.NSEC) }
-func DNSKEY(rr string) *dns.DNSKEY { r, _ := dns.NewRR(rr); return r.(*dns.DNSKEY) }
-
-func OPT(bufsize int, do bool) *dns.OPT {
- o := new(dns.OPT)
- o.Hdr.Name = "."
- o.Hdr.Rrtype = dns.TypeOPT
- o.SetVersion(0)
- o.SetUDPSize(uint16(bufsize))
- if do {
- o.SetDo()
- }
- return o
-}
-
-func Header(t *testing.T, tc Case, resp *dns.Msg) bool {
- if resp.Rcode != tc.Rcode {
- t.Errorf("rcode is %q, expected %q", dns.RcodeToString[resp.Rcode], dns.RcodeToString[tc.Rcode])
- return false
- }
-
- if len(resp.Answer) != len(tc.Answer) {
- t.Errorf("answer for %q contained %d results, %d expected", tc.Qname, len(resp.Answer), len(tc.Answer))
- return false
- }
- if len(resp.Ns) != len(tc.Ns) {
- t.Errorf("authority for %q contained %d results, %d expected", tc.Qname, len(resp.Ns), len(tc.Ns))
- return false
- }
- if len(resp.Extra) != len(tc.Extra) {
- t.Errorf("additional for %q contained %d results, %d expected", tc.Qname, len(resp.Extra), len(tc.Extra))
- return false
- }
- return true
-}
-
-func Section(t *testing.T, tc Case, sect Sect, rr []dns.RR) bool {
- section := []dns.RR{}
- switch sect {
- case 0:
- section = tc.Answer
- case 1:
- section = tc.Ns
- case 2:
- section = tc.Extra
- }
-
- for i, a := range rr {
- if a.Header().Name != section[i].Header().Name {
- t.Errorf("rr %d should have a Header Name of %q, but has %q", i, section[i].Header().Name, a.Header().Name)
- return false
- }
- // 303 signals: don't care what the ttl is.
- if section[i].Header().Ttl != 303 && a.Header().Ttl != section[i].Header().Ttl {
- if _, ok := section[i].(*dns.OPT); !ok {
- // we check edns0 bufize on this one
- t.Errorf("rr %d should have a Header TTL of %d, but has %d", i, section[i].Header().Ttl, a.Header().Ttl)
- return false
- }
- }
- if a.Header().Rrtype != section[i].Header().Rrtype {
- t.Errorf("rr %d should have a header rr type of %d, but has %d", i, section[i].Header().Rrtype, a.Header().Rrtype)
- return false
- }
-
- switch x := a.(type) {
- case *dns.SRV:
- if x.Priority != section[i].(*dns.SRV).Priority {
- t.Errorf("rr %d should have a Priority of %d, but has %d", i, section[i].(*dns.SRV).Priority, x.Priority)
- return false
- }
- if x.Weight != section[i].(*dns.SRV).Weight {
- t.Errorf("rr %d should have a Weight of %d, but has %d", i, section[i].(*dns.SRV).Weight, x.Weight)
- return false
- }
- if x.Port != section[i].(*dns.SRV).Port {
- t.Errorf("rr %d should have a Port of %d, but has %d", i, section[i].(*dns.SRV).Port, x.Port)
- return false
- }
- if x.Target != section[i].(*dns.SRV).Target {
- t.Errorf("rr %d should have a Target of %q, but has %q", i, section[i].(*dns.SRV).Target, x.Target)
- return false
- }
- case *dns.RRSIG:
- if x.TypeCovered != section[i].(*dns.RRSIG).TypeCovered {
- t.Errorf("rr %d should have a TypeCovered of %d, but has %d", i, section[i].(*dns.RRSIG).TypeCovered, x.TypeCovered)
- return false
- }
- if x.Labels != section[i].(*dns.RRSIG).Labels {
- t.Errorf("rr %d should have a Labels of %d, but has %d", i, section[i].(*dns.RRSIG).Labels, x.Labels)
- return false
- }
- if x.SignerName != section[i].(*dns.RRSIG).SignerName {
- t.Errorf("rr %d should have a SignerName of %d, but has %d", i, section[i].(*dns.RRSIG).SignerName, x.SignerName)
- return false
- }
- case *dns.NSEC:
- if x.NextDomain != section[i].(*dns.NSEC).NextDomain {
- t.Errorf("rr %d should have a NextDomain of %d, but has %d", i, section[i].(*dns.NSEC).NextDomain, x.NextDomain)
- return false
- }
- // TypeBitMap
- case *dns.A:
- if x.A.String() != section[i].(*dns.A).A.String() {
- t.Errorf("rr %d should have a Address of %q, but has %q", i, section[i].(*dns.A).A.String(), x.A.String())
- return false
- }
- case *dns.AAAA:
- if x.AAAA.String() != section[i].(*dns.AAAA).AAAA.String() {
- t.Errorf("rr %d should have a Address of %q, but has %q", i, section[i].(*dns.AAAA).AAAA.String(), x.AAAA.String())
- return false
- }
- case *dns.TXT:
- for j, txt := range x.Txt {
- if txt != section[i].(*dns.TXT).Txt[j] {
- t.Errorf("rr %d should have a Txt of %q, but has %q", i, section[i].(*dns.TXT).Txt[j], txt)
- return false
- }
- }
- case *dns.SOA:
- tt := section[i].(*dns.SOA)
- if x.Ns != tt.Ns {
- t.Errorf("SOA nameserver should be %q, but is %q", x.Ns, tt.Ns)
- return false
- }
- case *dns.PTR:
- tt := section[i].(*dns.PTR)
- if x.Ptr != tt.Ptr {
- t.Errorf("PTR ptr should be %q, but is %q", x.Ptr, tt.Ptr)
- return false
- }
- case *dns.CNAME:
- tt := section[i].(*dns.CNAME)
- if x.Target != tt.Target {
- t.Errorf("CNAME target should be %q, but is %q", x.Target, tt.Target)
- return false
- }
- case *dns.MX:
- tt := section[i].(*dns.MX)
- if x.Mx != tt.Mx {
- t.Errorf("MX Mx should be %q, but is %q", x.Mx, tt.Mx)
- return false
- }
- if x.Preference != tt.Preference {
- t.Errorf("MX Preference should be %q, but is %q", x.Preference, tt.Preference)
- return false
- }
- case *dns.NS:
- tt := section[i].(*dns.NS)
- if x.Ns != tt.Ns {
- t.Errorf("NS nameserver should be %q, but is %q", x.Ns, tt.Ns)
- return false
- }
- case *dns.OPT:
- tt := section[i].(*dns.OPT)
- if x.UDPSize() != tt.UDPSize() {
- t.Errorf("OPT UDPSize should be %d, but is %d", tt.UDPSize(), x.UDPSize())
- return false
- }
- if x.Do() != tt.Do() {
- t.Errorf("OPT DO should be %t, but is %t", tt.Do(), x.Do())
- return false
- }
- }
- }
- return true
-}
-
-func ErrorHandler() Handler {
- return HandlerFunc(func(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- m := new(dns.Msg)
- m.SetRcode(r, dns.RcodeServerFailure)
- w.WriteMsg(m)
- return dns.RcodeServerFailure, nil
- })
-}
-
-// Copied here to prevent an import cycle.
-type (
- // HandlerFunc is a convenience type like dns.HandlerFunc, except
- // ServeDNS returns an rcode and an error.
- HandlerFunc func(context.Context, dns.ResponseWriter, *dns.Msg) (int, error)
-
- Handler interface {
- ServeDNS(context.Context, dns.ResponseWriter, *dns.Msg) (int, error)
- }
-)
-
-// ServeDNS implements the Handler interface.
-func (f HandlerFunc) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- return f(ctx, w, r)
-}
diff --git a/test/helpers_test.go b/test/helpers_test.go
deleted file mode 100644
index 2aa1fe106..000000000
--- a/test/helpers_test.go
+++ /dev/null
@@ -1,5 +0,0 @@
-package test
-
-import "testing"
-
-func TestA(t *testing.T) { A("miek.nl. IN A 127.0.0.1") } // should not crash
diff --git a/test/proxy_test.go b/test/proxy_test.go
index e946f4354..9e2dd9aab 100644
--- a/test/proxy_test.go
+++ b/test/proxy_test.go
@@ -59,6 +59,6 @@ func TestLookupProxy(t *testing.T) {
t.Errorf("Expected RR to A, got: %d", resp.Answer[0].Header().Rrtype)
}
if resp.Answer[0].(*dns.A).A.String() != "127.0.0.1" {
- t.Errorf("Expected 127.0.0.1, got: %d", resp.Answer[0].(*dns.A).A.String())
+ t.Errorf("Expected 127.0.0.1, got: %s", resp.Answer[0].(*dns.A).A.String())
}
}
diff --git a/test/responsewriter.go b/test/responsewriter.go
deleted file mode 100644
index fb70d7e8d..000000000
--- a/test/responsewriter.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package test
-
-import (
- "net"
-
- "github.com/miekg/dns"
-)
-
-type ResponseWriter struct{}
-
-func (t *ResponseWriter) LocalAddr() net.Addr {
- ip := net.ParseIP("127.0.0.1")
- port := 53
- return &net.UDPAddr{IP: ip, Port: port, Zone: ""}
-}
-
-func (t *ResponseWriter) RemoteAddr() net.Addr {
- ip := net.ParseIP("10.240.0.1")
- port := 40212
- return &net.UDPAddr{IP: ip, Port: port, Zone: ""}
-}
-
-func (t *ResponseWriter) WriteMsg(m *dns.Msg) error { return nil }
-func (t *ResponseWriter) Write(buf []byte) (int, error) { return len(buf), nil }
-func (t *ResponseWriter) Close() error { return nil }
-func (t *ResponseWriter) TsigStatus() error { return nil }
-func (t *ResponseWriter) TsigTimersOnly(bool) { return }
-func (t *ResponseWriter) Hijack() { return }
diff --git a/test/server.go b/test/server.go
index d3eab4135..97e8070e3 100644
--- a/test/server.go
+++ b/test/server.go
@@ -1,70 +1,22 @@
package test
import (
- "net"
- "sync"
- "testing"
- "time"
-
+ // Hook in CoreDNS.
_ "github.com/miekg/coredns/core"
"github.com/mholt/caddy"
- "github.com/miekg/dns"
)
-// TCPServer returns a generic DNS server listening for TCP connections on laddr.
-func TCPServer(t *testing.T, laddr string) (*dns.Server, string, error) {
- l, err := net.Listen("tcp", laddr)
- if err != nil {
- return nil, "", err
- }
-
- server := &dns.Server{Listener: l, ReadTimeout: time.Hour, WriteTimeout: time.Hour}
-
- waitLock := sync.Mutex{}
- waitLock.Lock()
- server.NotifyStartedFunc = func() { t.Logf("started TCP server on %s", l.Addr()); waitLock.Unlock() }
-
- go func() {
- server.ActivateAndServe()
- l.Close()
- }()
-
- waitLock.Lock()
- return server, l.Addr().String(), nil
-}
-
-// UDPServer returns a generic DNS server listening for UDP connections on laddr.
-func UDPServer(t *testing.T, laddr string) (*dns.Server, string, error) {
- pc, err := net.ListenPacket("udp", laddr)
- if err != nil {
- return nil, "", err
- }
- server := &dns.Server{PacketConn: pc, ReadTimeout: time.Hour, WriteTimeout: time.Hour}
-
- waitLock := sync.Mutex{}
- waitLock.Lock()
- server.NotifyStartedFunc = func() { t.Logf("started UDP server on %s", pc.LocalAddr()); waitLock.Unlock() }
-
- go func() {
- server.ActivateAndServe()
- pc.Close()
- }()
-
- waitLock.Lock()
- return server, pc.LocalAddr().String(), nil
-}
-
// CoreDNSServer returns a CoreDNS test server. It just takes a normal Corefile as input.
func CoreDNSServer(corefile string) (*caddy.Instance, error) {
caddy.Quiet = true
return caddy.Start(NewInput(corefile))
}
-// CoreDNSSserverStop stops a server.
+// CoreDNSServerStop stops a server.
func CoreDNSServerStop(i *caddy.Instance) { i.Stop() }
-// CoreDNSServeRPorts returns the ports the instance is listening on. The integer k indicates
+// CoreDNSServerPorts returns the ports the instance is listening on. The integer k indicates
// which ServerListener you want.
func CoreDNSServerPorts(i *caddy.Instance, k int) (udp, tcp string) {
srvs := i.Servers()
@@ -83,14 +35,21 @@ func CoreDNSServerPorts(i *caddy.Instance, k int) (udp, tcp string) {
return
}
+// Input implements the caddy.Input interface and acts as an easy way to use a string as a Corefile.
type Input struct {
corefile []byte
}
+// NewInput returns a pointer to Input, containing the corefile string as input.
func NewInput(corefile string) *Input {
return &Input{corefile: []byte(corefile)}
}
-func (i *Input) Body() []byte { return i.corefile }
-func (i *Input) Path() string { return "Corefile" }
+// Body implements the Input interface.
+func (i *Input) Body() []byte { return i.corefile }
+
+// Path implements the Input interface.
+func (i *Input) Path() string { return "Corefile" }
+
+// ServerType implements the Input interface.
func (i *Input) ServerType() string { return "dns" }
diff --git a/test/server_test.go b/test/server_test.go
index 903922a04..807bfb643 100644
--- a/test/server_test.go
+++ b/test/server_test.go
@@ -40,8 +40,9 @@ func TestProxyToChaosServer(t *testing.T) {
}
func chaosTest(t *testing.T, server string) {
- m := Msg("version.bind.", dns.TypeTXT, nil)
- m.Question[0].Qclass = dns.ClassCHAOS
+ m := new(dns.Msg)
+ m.Question = make([]dns.Question, 1)
+ m.Question[0] = dns.Question{Qclass: dns.ClassCHAOS, Name: "version.bind.", Qtype: dns.TypeTXT}
r, err := dns.Exchange(m, server)
if err != nil {
diff --git a/test/tests.go b/test/tests.go
deleted file mode 100644
index fb2853e9a..000000000
--- a/test/tests.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package test
-
-import "github.com/miekg/dns"
-
-func Msg(zone string, typ uint16, o *dns.OPT) *dns.Msg {
- m := new(dns.Msg)
- m.SetQuestion(zone, typ)
- if o != nil {
- m.Extra = []dns.RR{o}
- }
- return m
-}