From bcb2eb1ecc79b2721dc5a2e0cca64008b601e431 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sun, 6 Aug 2017 05:54:24 -0700 Subject: [PATCH] all: gometalinter (#843) * kubernetes/reverse: remove deadcode * deadcode in errors and kubernetes removed * unnecessary conversion * constants * proxy: time.Since() * simplications * static check * Disable test/external_test --- core/dnsserver/server.go | 3 +- middleware/auto/setup.go | 2 +- middleware/backend_lookup.go | 2 +- middleware/dnssec/cache_test.go | 2 +- middleware/dnstap/handler.go | 7 +-- middleware/erratic/setup.go | 2 +- middleware/errors/errors.go | 7 --- middleware/file/lookup.go | 2 +- middleware/file/notify.go | 6 +-- middleware/kubernetes/controller.go | 9 ++-- middleware/kubernetes/handler_test.go | 20 ++++---- middleware/kubernetes/kubernetes.go | 20 +++----- middleware/kubernetes/kubernetes_test.go | 17 ------- middleware/kubernetes/setup.go | 1 - middleware/kubernetes/setup_test.go | 64 ++++++++++++------------ middleware/metrics/test/scrape.go | 14 +++--- middleware/pkg/replacer/replacer.go | 2 +- middleware/proxy/lookup.go | 2 +- middleware/proxy/proxy.go | 2 +- middleware/reverse/network.go | 19 ------- middleware/rewrite/edns0.go | 24 ++++++--- middleware/trace/setup.go | 2 +- middleware/trace/trace.go | 6 +-- request/request.go | 2 +- test/external_test.go | 18 +++---- 25 files changed, 105 insertions(+), 150 deletions(-) diff --git a/core/dnsserver/server.go b/core/dnsserver/server.go index 61ef6ac65..fb8653c18 100644 --- a/core/dnsserver/server.go +++ b/core/dnsserver/server.go @@ -187,7 +187,8 @@ func (s *Server) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) q := r.Question[0].Name b := make([]byte, len(q)) - off, end := 0, false + var off int + var end bool var dshandler *Config diff --git a/middleware/auto/setup.go b/middleware/auto/setup.go index 1f8fd3b6c..6bda11238 100644 --- a/middleware/auto/setup.go +++ b/middleware/auto/setup.go @@ -74,7 +74,7 @@ func setup(c *caddy.Controller) error { func autoParse(c *caddy.Controller) (Auto, error) { var a = Auto{ - loader: loader{template: "${1}", re: regexp.MustCompile(`db\.(.*)`), duration: time.Duration(60 * time.Second)}, + loader: loader{template: "${1}", re: regexp.MustCompile(`db\.(.*)`), duration: 60 * time.Second}, Zones: &Zones{}, } diff --git a/middleware/backend_lookup.go b/middleware/backend_lookup.go index 7621851c9..7ad011b98 100644 --- a/middleware/backend_lookup.go +++ b/middleware/backend_lookup.go @@ -218,7 +218,7 @@ func SRV(b ServiceBackend, zone string, state request.Request, opt Options) (rec // Internal name, we should have some info on them, either v4 or v6 // Clients expect a complete answer, because we are a recursor in their view. state1 := state.NewWithQuestion(srv.Target, dns.TypeA) - addr, debugAddr, e1 := A(b, zone, state1, nil, Options(opt)) + addr, debugAddr, e1 := A(b, zone, state1, nil, opt) if e1 == nil { extra = append(extra, addr...) debug = append(debug, debugAddr...) diff --git a/middleware/dnssec/cache_test.go b/middleware/dnssec/cache_test.go index b9434fcbe..7d42a90df 100644 --- a/middleware/dnssec/cache_test.go +++ b/middleware/dnssec/cache_test.go @@ -25,7 +25,7 @@ func TestCacheSet(t *testing.T) { state := request.Request{Req: m} k := hash(m.Answer) // calculate *before* we add the sig d := New([]string{"miek.nl."}, []*DNSKEY{dnskey}, nil, c) - m = d.Sign(state, "miek.nl.", time.Now().UTC()) + d.Sign(state, "miek.nl.", time.Now().UTC()) _, ok := d.get(k) if !ok { diff --git a/middleware/dnstap/handler.go b/middleware/dnstap/handler.go index 20121ff2e..0cf281e69 100644 --- a/middleware/dnstap/handler.go +++ b/middleware/dnstap/handler.go @@ -2,9 +2,10 @@ package dnstap import ( "fmt" - "golang.org/x/net/context" "io" + "golang.org/x/net/context" + "github.com/coredns/coredns/middleware" "github.com/coredns/coredns/middleware/dnstap/msg" "github.com/coredns/coredns/middleware/dnstap/taprw" @@ -33,10 +34,10 @@ func (h Dnstap) TapMessage(m *tap.Message) error { } func (h Dnstap) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { - rw := taprw.ResponseWriter{ResponseWriter: w, Taper: &h, Query: r, Pack: h.Pack} + rw := &taprw.ResponseWriter{ResponseWriter: w, Taper: &h, Query: r, Pack: h.Pack} rw.QueryEpoch() - code, err := middleware.NextOrFailure(h.Name(), h.Next, ctx, &rw, r) + code, err := middleware.NextOrFailure(h.Name(), h.Next, ctx, rw, r) if err != nil { // ignore dnstap errors return code, err diff --git a/middleware/erratic/setup.go b/middleware/erratic/setup.go index 714fc309b..cdfc3407d 100644 --- a/middleware/erratic/setup.go +++ b/middleware/erratic/setup.go @@ -65,7 +65,7 @@ func parseErratic(c *caddy.Controller) (*Erratic, error) { // Defaults. e.delay = 2 - e.duration = time.Duration(100 * time.Millisecond) + e.duration = 100 * time.Millisecond if len(args) == 0 { continue } diff --git a/middleware/errors/errors.go b/middleware/errors/errors.go index 057e65089..9b0bfa946 100644 --- a/middleware/errors/errors.go +++ b/middleware/errors/errors.go @@ -76,11 +76,4 @@ func (h errorHandler) recovery(ctx context.Context, w dns.ResponseWriter, r *dns h.Log.Printf(panicMsg) } -// debugMsg creates a debug message that gets send back to the client. -func debugMsg(rcode int, r *dns.Msg) *dns.Msg { - answer := new(dns.Msg) - answer.SetRcode(r, rcode) - return answer -} - const timeFormat = "02/Jan/2006:15:04:05 -0700" diff --git a/middleware/file/lookup.go b/middleware/file/lookup.go index 2ca1ec943..89e0f5a47 100644 --- a/middleware/file/lookup.go +++ b/middleware/file/lookup.go @@ -231,7 +231,7 @@ func (z *Zone) Lookup(state request.Request, qname string) ([]dns.RR, []dns.RR, ret := z.soa(do) if do { - deny, found := z.Tree.Prev(qname) + deny, _ := z.Tree.Prev(qname) // TODO(miek): *found* was not used here. nsec := z.typeFromElem(deny, dns.TypeNSEC, do) ret = append(ret, nsec...) diff --git a/middleware/file/notify.go b/middleware/file/notify.go index e8f518d25..b1628c3a6 100644 --- a/middleware/file/notify.go +++ b/middleware/file/notify.go @@ -61,12 +61,12 @@ func notify(zone string, to []string) error { return nil } -func notifyAddr(c *dns.Client, m *dns.Msg, s string) (err error) { - ret := new(dns.Msg) +func notifyAddr(c *dns.Client, m *dns.Msg, s string) error { + var err error code := dns.RcodeServerFailure for i := 0; i < 3; i++ { - ret, _, err = c.Exchange(m, s) + ret, _, err := c.Exchange(m, s) if err != nil { continue } diff --git a/middleware/kubernetes/controller.go b/middleware/kubernetes/controller.go index 29562c0a7..3d60718ee 100644 --- a/middleware/kubernetes/controller.go +++ b/middleware/kubernetes/controller.go @@ -51,11 +51,10 @@ type dnsControl struct { selector *labels.Selector - svcController *cache.Controller - podController *cache.Controller - nsController *cache.Controller - epController *cache.Controller - nodeController *cache.Controller + svcController *cache.Controller + podController *cache.Controller + nsController *cache.Controller + epController *cache.Controller svcLister cache.StoreToServiceLister podLister cache.StoreToPodLister diff --git a/middleware/kubernetes/handler_test.go b/middleware/kubernetes/handler_test.go index 9e38bc59f..04d64722f 100644 --- a/middleware/kubernetes/handler_test.go +++ b/middleware/kubernetes/handler_test.go @@ -273,32 +273,32 @@ func TestServeDNS(t *testing.T) { k.Next = testHandler(nextMWMap) ctx := context.TODO() - runServeDNSTests(t, dnsTestCases, k, ctx) - runServeDNSTests(t, autopathCases, k, ctx) - runServeDNSTests(t, autopathBareSearch, k, ctx) + runServeDNSTests(ctx, t, dnsTestCases, k) + runServeDNSTests(ctx, t, autopathCases, k) + runServeDNSTests(ctx, t, autopathBareSearch, k) //Set PodMode to Disabled k.PodMode = PodModeDisabled - runServeDNSTests(t, podModeDisabledCases, k, ctx) + runServeDNSTests(ctx, t, podModeDisabledCases, k) //Set PodMode to Insecure k.PodMode = PodModeInsecure - runServeDNSTests(t, podModeInsecureCases, k, ctx) + runServeDNSTests(ctx, t, podModeInsecureCases, k) //Set PodMode to Verified k.PodMode = PodModeVerified - runServeDNSTests(t, podModeVerifiedCases, k, ctx) + runServeDNSTests(ctx, t, podModeVerifiedCases, k) // Set ndots to 2 for the ndots test cases k.AutoPath.NDots = 2 - runServeDNSTests(t, autopath2NDotsCases, k, ctx) + runServeDNSTests(ctx, t, autopath2NDotsCases, k) k.AutoPath.NDots = defautNdots // Disable the NXDOMAIN override (enabled by default) k.OnNXDOMAIN = dns.RcodeNameError - runServeDNSTests(t, autopathCases, k, ctx) - runServeDNSTests(t, autopathBareSearchExpectNameErr, k, ctx) + runServeDNSTests(ctx, t, autopathCases, k) + runServeDNSTests(ctx, t, autopathBareSearchExpectNameErr, k) } -func runServeDNSTests(t *testing.T, dnsTestCases map[string](*test.Case), k Kubernetes, ctx context.Context) { +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() diff --git a/middleware/kubernetes/kubernetes.go b/middleware/kubernetes/kubernetes.go index 016cfc403..3649eb02c 100644 --- a/middleware/kubernetes/kubernetes.go +++ b/middleware/kubernetes/kubernetes.go @@ -100,13 +100,12 @@ type recordRequest struct { } var ( - errNoItems = errors.New("no items found") - errNsNotExposed = errors.New("namespace is not exposed") - errInvalidRequest = errors.New("invalid query name") - errZoneNotFound = errors.New("zone not found") - errAPIBadPodType = errors.New("expected type *api.Pod") - errPodsDisabled = errors.New("pod records disabled") - errResolvConfReadErr = errors.New("resolv.conf read error") + errNoItems = errors.New("no items found") + errNsNotExposed = errors.New("namespace is not exposed") + errInvalidRequest = errors.New("invalid query name") + errZoneNotFound = errors.New("zone not found") + errAPIBadPodType = errors.New("expected type *api.Pod") + errPodsDisabled = errors.New("pod records disabled") ) // Services implements the ServiceBackend interface. @@ -468,13 +467,6 @@ func (k *Kubernetes) getRecordsForK8sItems(services []service, pods []pod, r rec return records } -func ipFromPodName(podname string) string { - if strings.Count(podname, "-") == 3 && !strings.Contains(podname, "--") { - return strings.Replace(podname, "-", ".", -1) - } - return strings.Replace(podname, "-", ":", -1) -} - func (k *Kubernetes) findPodWithIP(ip string) (p *api.Pod) { if !k.AutoPath.Enabled { return nil diff --git a/middleware/kubernetes/kubernetes_test.go b/middleware/kubernetes/kubernetes_test.go index 268028c1e..ae3fbf149 100644 --- a/middleware/kubernetes/kubernetes_test.go +++ b/middleware/kubernetes/kubernetes_test.go @@ -260,23 +260,6 @@ func TestEndpointHostname(t *testing.T) { } } -func TestIpFromPodName(t *testing.T) { - var tests = []struct { - ip string - expected string - }{ - {"10-11-12-13", "10.11.12.13"}, - {"1-2-3-4", "1.2.3.4"}, - {"1-2-3--A-B-C", "1:2:3::A:B:C"}, - } - for _, test := range tests { - result := ipFromPodName(test.ip) - if result != test.expected { - t.Errorf("Expected ip for podname '%v' to be '%v', but got '%v'", test.ip, test.expected, result) - } - } -} - type APIConnServiceTest struct{} func (APIConnServiceTest) Run() { return } diff --git a/middleware/kubernetes/setup.go b/middleware/kubernetes/setup.go index a12673a13..d56b788f9 100644 --- a/middleware/kubernetes/setup.go +++ b/middleware/kubernetes/setup.go @@ -242,7 +242,6 @@ func kubernetesParse(c *caddy.Controller) (*Kubernetes, error) { const ( defaultResyncPeriod = 5 * time.Minute - defaultPodMode = PodModeDisabled defautNdots = 0 defaultResolvConfFile = "/etc/resolv.conf" defaultOnNXDOMAIN = dns.RcodeSuccess diff --git a/middleware/kubernetes/setup_test.go b/middleware/kubernetes/setup_test.go index c8e84a724..9512c8fbf 100644 --- a/middleware/kubernetes/setup_test.go +++ b/middleware/kubernetes/setup_test.go @@ -54,7 +54,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -70,7 +70,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -87,7 +87,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -105,7 +105,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -123,7 +123,7 @@ func TestKubernetesParse(t *testing.T) { 1, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -141,7 +141,7 @@ func TestKubernetesParse(t *testing.T) { 2, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -159,7 +159,7 @@ func TestKubernetesParse(t *testing.T) { 0, 30 * time.Second, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -177,7 +177,7 @@ func TestKubernetesParse(t *testing.T) { 0, 15 * time.Minute, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -195,7 +195,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "environment=prod", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -213,7 +213,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "application=nginx,environment in (production,qa,staging)", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -235,7 +235,7 @@ func TestKubernetesParse(t *testing.T) { 2, 15 * time.Minute, "application=nginx,environment in (production,qa,staging)", - defaultPodMode, + PodModeDisabled, nil, true, nil, @@ -252,7 +252,7 @@ func TestKubernetesParse(t *testing.T) { -1, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -268,7 +268,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -286,7 +286,7 @@ func TestKubernetesParse(t *testing.T) { -1, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -304,7 +304,7 @@ func TestKubernetesParse(t *testing.T) { -1, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -322,7 +322,7 @@ func TestKubernetesParse(t *testing.T) { 0, 0 * time.Minute, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -340,7 +340,7 @@ func TestKubernetesParse(t *testing.T) { 0, 0 * time.Second, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -358,7 +358,7 @@ func TestKubernetesParse(t *testing.T) { 0, 0 * time.Second, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -376,7 +376,7 @@ func TestKubernetesParse(t *testing.T) { 0, 0 * time.Second, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -394,7 +394,7 @@ func TestKubernetesParse(t *testing.T) { 0, 0 * time.Second, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -489,7 +489,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, []net.IPNet{parseCidr("10.0.0.0/24"), parseCidr("10.0.1.0/24")}, false, nil, @@ -508,7 +508,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -527,7 +527,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -546,7 +546,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, []string{"13.14.15.16:53"}, @@ -565,7 +565,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -585,7 +585,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -607,7 +607,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -626,7 +626,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -650,7 +650,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -668,7 +668,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -686,7 +686,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, @@ -704,7 +704,7 @@ func TestKubernetesParse(t *testing.T) { 0, defaultResyncPeriod, "", - defaultPodMode, + PodModeDisabled, nil, false, nil, diff --git a/middleware/metrics/test/scrape.go b/middleware/metrics/test/scrape.go index c748be209..a21c0061d 100644 --- a/middleware/metrics/test/scrape.go +++ b/middleware/metrics/test/scrape.go @@ -69,7 +69,7 @@ type ( func Scrape(t *testing.T, url string) []*MetricFamily { mfChan := make(chan *dto.MetricFamily, 1024) - go fetchMetricFamilies(t, url, mfChan) + go fetchMetricFamilies(url, mfChan) result := []*MetricFamily{} for mf := range mfChan { @@ -177,20 +177,20 @@ func makeBuckets(m *dto.Metric) map[string]string { return result } -func fetchMetricFamilies(t *testing.T, url string, ch chan<- *dto.MetricFamily) { +func fetchMetricFamilies(url string, ch chan<- *dto.MetricFamily) { defer close(ch) req, err := http.NewRequest("GET", url, nil) if err != nil { - t.Fatalf("creating GET request for URL %q failed: %s", url, err) + return } req.Header.Add("Accept", acceptHeader) resp, err := http.DefaultClient.Do(req) if err != nil { - t.Fatalf("executing GET request for URL %q failed: %s", url, err) + return } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - t.Fatalf("GET request for URL %q returned HTTP status %s", url, resp.Status) + return } mediatype, params, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) @@ -203,7 +203,7 @@ func fetchMetricFamilies(t *testing.T, url string, ch chan<- *dto.MetricFamily) if err == io.EOF { break } - t.Fatalf("reading metric family protocol buffer failed: %s", err) + return } ch <- mf } @@ -214,7 +214,7 @@ func fetchMetricFamilies(t *testing.T, url string, ch chan<- *dto.MetricFamily) var parser expfmt.TextParser metricFamilies, err := parser.TextToMetricFamilies(resp.Body) if err != nil { - t.Fatal("reading text format failed:", err) + return } for _, mf := range metricFamilies { ch <- mf diff --git a/middleware/pkg/replacer/replacer.go b/middleware/pkg/replacer/replacer.go index 5227808ae..5f5e15cd7 100644 --- a/middleware/pkg/replacer/replacer.go +++ b/middleware/pkg/replacer/replacer.go @@ -60,7 +60,7 @@ func New(r *dns.Msg, rr *dnsrecorder.Recorder, emptyValue string) Replacer { // Header placeholders (case-insensitive) rep.replacements[headerReplacer+"id}"] = strconv.Itoa(int(r.Id)) - rep.replacements[headerReplacer+"opcode}"] = strconv.Itoa(int(r.Opcode)) + rep.replacements[headerReplacer+"opcode}"] = strconv.Itoa(r.Opcode) rep.replacements[headerReplacer+"do}"] = boolToString(req.Do()) rep.replacements[headerReplacer+"bufsize}"] = strconv.Itoa(req.Size()) diff --git a/middleware/proxy/lookup.go b/middleware/proxy/lookup.go index fa6d1ddf2..a6c714f39 100644 --- a/middleware/proxy/lookup.go +++ b/middleware/proxy/lookup.go @@ -97,7 +97,7 @@ func (p Proxy) lookup(state request.Request) (*dns.Msg, error) { // Since Select() should give us "up" hosts, keep retrying // hosts until timeout (or until we get a nil host). - for time.Now().Sub(start) < tryDuration { + for time.Since(start) < tryDuration { host := upstream.Select() if host == nil { return nil, errUnreachable diff --git a/middleware/proxy/proxy.go b/middleware/proxy/proxy.go index 4a574982d..8780330ed 100644 --- a/middleware/proxy/proxy.go +++ b/middleware/proxy/proxy.go @@ -109,7 +109,7 @@ func (p Proxy) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) ( // Since Select() should give us "up" hosts, keep retrying // hosts until timeout (or until we get a nil host). - for time.Now().Sub(start) < tryDuration { + for time.Since(start) < tryDuration { host := upstream.Select() if host == nil { diff --git a/middleware/reverse/network.go b/middleware/reverse/network.go index da3cb613b..80d533382 100644 --- a/middleware/reverse/network.go +++ b/middleware/reverse/network.go @@ -74,25 +74,6 @@ func (network *network) ipToHostname(ip net.IP) (name string) { return strings.Replace(network.Template, templateNameIP, name, 1) } -// just the same from net.ip package, but with uint8 -func uitoa(val uint8) string { - if val == 0 { - // avoid string allocation - return "0" - } - var buf [20]byte // big enough for 64bit value base 10 - i := len(buf) - 1 - for val >= 10 { - q := val / 10 - buf[i] = byte('0' + val - q*10) - i-- - val = q - } - // val < 10 - buf[i] = byte('0' + val) - return string(buf[i:]) -} - type networks []network func (n networks) Len() int { return len(n) } diff --git a/middleware/rewrite/edns0.go b/middleware/rewrite/edns0.go index 1a0685312..913299a14 100644 --- a/middleware/rewrite/edns0.go +++ b/middleware/rewrite/edns0.go @@ -37,20 +37,21 @@ func (rule *edns0NsidRule) Rewrite(r *dns.Msg) Result { result := RewriteIgnored o := setupEdns0Opt(r) found := false +Option: for _, s := range o.Option { switch e := s.(type) { case *dns.EDNS0_NSID: - if rule.action == "replace" || rule.action == "set" { + if rule.action == Replace || rule.action == Set { e.Nsid = "" // make sure it is empty for request result = RewriteDone } found = true - break + break Option } } // add option if not found - if !found && (rule.action == "append" || rule.action == "set") { + if !found && (rule.action == Append || rule.action == Set) { o.SetDo(true) o.Option = append(o.Option, &dns.EDNS0_NSID{Code: dns.EDNS0NSID, Nsid: ""}) result = RewriteDone @@ -68,7 +69,7 @@ func (rule *edns0LocalRule) Rewrite(r *dns.Msg) Result { switch e := s.(type) { case *dns.EDNS0_LOCAL: if rule.code == e.Code { - if rule.action == "replace" || rule.action == "set" { + if rule.action == Replace || rule.action == Set { e.Data = rule.data result = RewriteDone } @@ -79,7 +80,7 @@ func (rule *edns0LocalRule) Rewrite(r *dns.Msg) Result { } // add option if not found - if !found && (rule.action == "append" || rule.action == "set") { + if !found && (rule.action == Append || rule.action == Set) { o.SetDo(true) var opt dns.EDNS0_LOCAL opt.Code = rule.code @@ -100,9 +101,9 @@ func newEdns0Rule(args ...string) (Rule, error) { ruleType := strings.ToLower(args[0]) action := strings.ToLower(args[1]) switch action { - case "append": - case "replace": - case "set": + case Append: + case Replace: + case Set: default: return nil, fmt.Errorf("invalid action: %q", action) } @@ -139,3 +140,10 @@ func newEdns0LocalRule(action, code, data string) (*edns0LocalRule, error) { return &edns0LocalRule{action: action, code: uint16(c), data: decoded}, nil } + +// These are all defined actions. +const ( + Replace = "replace" + Set = "set" + Append = "append" +) diff --git a/middleware/trace/setup.go b/middleware/trace/setup.go index a6eb8c340..601472fee 100644 --- a/middleware/trace/setup.go +++ b/middleware/trace/setup.go @@ -97,7 +97,7 @@ func traceParse(c *caddy.Controller) (*trace, error) { func normalizeEndpoint(epType, ep string) (string, error) { switch epType { case "zipkin": - if strings.Index(ep, "http") == -1 { + if !strings.Contains(ep, "http") { ep = "http://" + ep + "/api/v1/spans" } return ep, nil diff --git a/middleware/trace/trace.go b/middleware/trace/trace.go index 39b7d6750..86561871a 100644 --- a/middleware/trace/trace.go +++ b/middleware/trace/trace.go @@ -56,10 +56,8 @@ func (t *trace) setupZipkin() error { recorder := zipkin.NewRecorder(collector, false, t.ServiceEndpoint, t.serviceName) t.tracer, err = zipkin.NewTracer(recorder, zipkin.ClientServerSameSpan(t.clientServer)) - if err != nil { - return err - } - return nil + + return err } // Name implements the Handler interface. diff --git a/request/request.go b/request/request.go index d371d9c21..00a05b072 100644 --- a/request/request.go +++ b/request/request.go @@ -118,7 +118,7 @@ func (r *Request) Size() int { size := 0 if o := r.Req.IsEdns0(); o != nil { - if o.Do() == true { + if o.Do() { r.do = doTrue } else { r.do = doFalse diff --git a/test/external_test.go b/test/external_test.go index e5827a49c..9109f1f29 100644 --- a/test/external_test.go +++ b/test/external_test.go @@ -11,10 +11,12 @@ import ( // Go get external example middleware, compile it into CoreDNS // and check if it is really there, but running coredns -plugins. -func TestExternalMiddlewareCompile(t *testing.T) { +// Dangerous test as it messes with your git tree, maybe use tag? +func testExternalMiddlewareCompile(t *testing.T) { if err := addExampleMiddleware(); err != nil { t.Fatal(err) } + defer run(t, gitReset) if _, err := run(t, goGet); err != nil { t.Fatal(err) @@ -56,17 +58,15 @@ func addExampleMiddleware() error { defer f.Close() _, err = f.WriteString(example) - if err != nil { - return err - } - return nil + return err } var ( - goBuild = exec.Command("go", "build") - goGen = exec.Command("go", "generate") - goGet = exec.Command("go", "get", "github.com/coredns/example") - coredns = exec.Command("./coredns", "-plugins") + goBuild = exec.Command("go", "build") + goGen = exec.Command("go", "generate") + goGet = exec.Command("go", "get", "github.com/coredns/example") + gitReset = exec.Command("git", "checkout", "core/*") + coredns = exec.Command("./coredns", "-plugins") ) const example = "1001:example:github.com/coredns/example"