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
This commit is contained in:
Miek Gieben 2017-08-06 05:54:24 -07:00 committed by GitHub
parent 964f04f443
commit bcb2eb1ecc
25 changed files with 105 additions and 150 deletions

View file

@ -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

View file

@ -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{},
}

View file

@ -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...)

View file

@ -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 {

View file

@ -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

View file

@ -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
}

View file

@ -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"

View file

@ -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...)

View file

@ -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
}

View file

@ -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

View file

@ -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()

View file

@ -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

View file

@ -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 }

View file

@ -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

View file

@ -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,

View file

@ -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

View file

@ -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())

View file

@ -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

View file

@ -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 {

View file

@ -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) }

View file

@ -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"
)

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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"