Skip to content

Commit

Permalink
*: update Makefile.common with new staticcheck (#404)
Browse files Browse the repository at this point in the history
Signed-off-by: Simon Pasquier <[email protected]>
  • Loading branch information
simonpasquier authored Jan 7, 2019
1 parent 0601bd6 commit 22be143
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 39 deletions.
56 changes: 33 additions & 23 deletions Makefile.common
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ GO ?= go
GOFMT ?= $(GO)fmt
FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH)))
GOOPTS ?=
GOHOSTOS ?= $(shell $(GO) env GOHOSTOS)
GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH)

GO_VERSION ?= $(shell $(GO) version)
GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION))
Expand Down Expand Up @@ -62,17 +64,30 @@ PROMU := $(FIRST_GOPATH)/bin/promu
STATICCHECK := $(FIRST_GOPATH)/bin/staticcheck
pkgs = ./...

GO_VERSION ?= $(shell $(GO) version)
GO_BUILD_PLATFORM ?= $(subst /,-,$(lastword $(GO_VERSION)))
ifeq (arm, $(GOHOSTARCH))
GOHOSTARM ?= $(shell GOARM= $(GO) env GOARM)
GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)v$(GOHOSTARM)
else
GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)
endif

PROMU_VERSION ?= 0.2.0
PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
STATICCHECK_VERSION ?= 2019.1
STATICCHECK_URL := https://github.com/dominikh/go-tools/releases/download/$(STATICCHECK_VERSION)/staticcheck_$(GOHOSTOS)_$(GOHOSTARCH)

PREFIX ?= $(shell pwd)
BIN_DIR ?= $(shell pwd)
DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))
DOCKER_REPO ?= prom

ifeq ($(GOHOSTARCH),amd64)
ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows))
# Only supported on amd64
test-flags := -race
endif
endif

.PHONY: all
all: precheck style staticcheck unused build test

Expand Down Expand Up @@ -110,12 +125,12 @@ common-test-short:
.PHONY: common-test
common-test:
@echo ">> running all tests"
GO111MODULE=$(GO111MODULE) $(GO) test -race $(GOOPTS) $(pkgs)
GO111MODULE=$(GO111MODULE) $(GO) test $(test-flags) $(GOOPTS) $(pkgs)

.PHONY: common-format
common-format:
@echo ">> formatting code"
GO111MODULE=$(GO111MODULE) $(GO) fmt $(GOOPTS) $(pkgs)
GO111MODULE=$(GO111MODULE) $(GO) fmt $(pkgs)

.PHONY: common-vet
common-vet:
Expand All @@ -125,8 +140,12 @@ common-vet:
.PHONY: common-staticcheck
common-staticcheck: $(STATICCHECK)
@echo ">> running staticcheck"
chmod +x $(STATICCHECK)
ifdef GO111MODULE
GO111MODULE=$(GO111MODULE) $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" -checks "SA*" $(pkgs)
# 'go list' needs to be executed before staticcheck to prepopulate the modules cache.
# Otherwise staticcheck might fail randomly for some reason not yet explained.
GO111MODULE=$(GO111MODULE) $(GO) list -e -compiled -test=true -export=false -deps=true -find=false -tags= -- ./... > /dev/null
GO111MODULE=$(GO111MODULE) $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs)
else
$(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs)
endif
Expand All @@ -140,8 +159,9 @@ else
ifdef GO111MODULE
@echo ">> running check for unused/missing packages in go.mod"
GO111MODULE=$(GO111MODULE) $(GO) mod tidy
ifeq (,$(wildcard vendor))
@git diff --exit-code -- go.sum go.mod
ifneq (,$(wildcard vendor))
else
@echo ">> running check for unused packages in vendor/"
GO111MODULE=$(GO111MODULE) $(GO) mod vendor
@git diff --exit-code -- go.sum go.mod vendor/
Expand Down Expand Up @@ -175,30 +195,20 @@ common-docker-tag-latest:
promu: $(PROMU)

$(PROMU):
curl -s -L $(PROMU_URL) | tar -xvz -C /tmp
mkdir -v -p $(FIRST_GOPATH)/bin
cp -v /tmp/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(PROMU)
$(eval PROMU_TMP := $(shell mktemp -d))
curl -s -L $(PROMU_URL) | tar -xvzf - -C $(PROMU_TMP)
mkdir -p $(FIRST_GOPATH)/bin
cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu
rm -r $(PROMU_TMP)

.PHONY: proto
proto:
@echo ">> generating code from proto files"
@./scripts/genproto.sh

.PHONY: $(STATICCHECK)
$(STATICCHECK):
ifdef GO111MODULE
# Get staticcheck from a temporary directory to avoid modifying the local go.{mod,sum}.
# See https://github.com/golang/go/issues/27643.
# For now, we are using the next branch of staticcheck because master isn't compatible yet with Go modules.
tmpModule=$$(mktemp -d 2>&1) && \
mkdir -p $${tmpModule}/staticcheck && \
cd "$${tmpModule}"/staticcheck && \
GO111MODULE=on $(GO) mod init example.com/staticcheck && \
GO111MODULE=on GOOS= GOARCH= $(GO) get -u honnef.co/go/tools/cmd/staticcheck@next && \
rm -rf $${tmpModule};
else
GOOS= GOARCH= GO111MODULE=off $(GO) get -u honnef.co/go/tools/cmd/staticcheck
endif
mkdir -p $(FIRST_GOPATH)/bin
curl -s -L $(STATICCHECK_URL) > $(STATICCHECK)

ifdef GOVENDOR
.PHONY: $(GOVENDOR)
Expand Down
6 changes: 3 additions & 3 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ func (sc *SafeConfig) ReloadConfig(confFile string) (err error) {

yamlFile, err := ioutil.ReadFile(confFile)
if err != nil {
return fmt.Errorf("Error reading config file: %s", err)
return fmt.Errorf("error reading config file: %s", err)
}

if err := yaml.UnmarshalStrict(yamlFile, c); err != nil {
return fmt.Errorf("Error parsing config file: %s", err)
return fmt.Errorf("error parsing config file: %s", err)
}

sc.Lock()
Expand Down Expand Up @@ -145,7 +145,7 @@ func (s *DNSProbe) UnmarshalYAML(unmarshal func(interface{}) error) error {
return err
}
if s.QueryName == "" {
return errors.New("Query name must be set for DNS module")
return errors.New("query name must be set for DNS module")
}
return nil
}
Expand Down
6 changes: 3 additions & 3 deletions config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ func TestLoadBadConfigs(t *testing.T) {
}{
{
ConfigFile: "testdata/blackbox-bad.yml",
ExpectedError: "Error parsing config file: yaml: unmarshal errors:\n line 50: field invalid_extra_field not found in type config.plain",
ExpectedError: "error parsing config file: yaml: unmarshal errors:\n line 50: field invalid_extra_field not found in type config.plain",
},
{
ConfigFile: "testdata/blackbox-bad2.yml",
ExpectedError: "Error parsing config file: at most one of bearer_token & bearer_token_file must be configured",
ExpectedError: "error parsing config file: at most one of bearer_token & bearer_token_file must be configured",
},
{
ConfigFile: "testdata/invalid-dns-module.yml",
ExpectedError: "Error parsing config file: Query name must be set for DNS module",
ExpectedError: "error parsing config file: query name must be set for DNS module",
},
}
for i, test := range tests {
Expand Down
2 changes: 0 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,6 @@ func probeHandler(w http.ResponseWriter, r *http.Request, c *config.Config, logg

type scrapeLogger struct {
next log.Logger
module string
target string
buffer bytes.Buffer
bufferLogger log.Logger
}
Expand Down
2 changes: 1 addition & 1 deletion prober/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ func ProbeDNS(ctx context.Context, target string, module config.Module, registry

level.Info(logger).Log("msg", "Making DNS query", "target", target, "dial_protocol", dialProtocol, "query", module.DNS.QueryName, "type", qt)
timeoutDeadline, _ := ctx.Deadline()
client.Timeout = timeoutDeadline.Sub(time.Now())
client.Timeout = time.Until(timeoutDeadline)
response, _, err := client.Exchange(msg, target)
if err != nil {
level.Error(logger).Log("msg", "Error while sending a DNS query", "err", err)
Expand Down
2 changes: 1 addition & 1 deletion prober/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ func ProbeHTTP(ctx context.Context, target string, module config.Module, registr
redirects = len(via)
if redirects > 10 || httpConfig.NoFollowRedirects {
level.Info(logger).Log("msg", "Not following redirect")
return errors.New("Don't follow redirects")
return errors.New("don't follow redirects")
}
return nil
}
Expand Down
6 changes: 2 additions & 4 deletions prober/icmp.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,6 @@ func ProbeICMP(ctx context.Context, target string, module config.Module, registr

registry.MustRegister(durationGaugeVec)

timeoutDeadline, _ := ctx.Deadline()
deadline := time.Now().Add(timeoutDeadline.Sub(time.Now()))

ip, lookupTime, err := chooseProtocol(module.ICMP.IPProtocol, module.ICMP.IPProtocolFallback, target, registry, logger)
if err != nil {
level.Warn(logger).Log("msg", "Error resolving address", "err", err)
Expand Down Expand Up @@ -165,6 +162,7 @@ func ProbeICMP(ctx context.Context, target string, module config.Module, registr
}

rb := make([]byte, 65536)
deadline, _ := ctx.Deadline()
if err := socket.SetReadDeadline(deadline); err != nil {
level.Error(logger).Log("msg", "Error setting socket deadline", "err", err)
return
Expand All @@ -188,7 +186,7 @@ func ProbeICMP(ctx context.Context, target string, module config.Module, registr
rb[2] = 0
rb[3] = 0
}
if bytes.Compare(rb[:n], wb) == 0 {
if bytes.Equal(rb[:n], wb) {
durationGaugeVec.WithLabelValues("rtt").Add(time.Since(rttStart).Seconds())
level.Info(logger).Log("msg", "Found matching reply packet")
return true
Expand Down
2 changes: 1 addition & 1 deletion prober/tcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func dialTCP(ctx context.Context, target string, module config.Module, registry
srcIP := net.ParseIP(module.TCP.SourceIPAddress)
if srcIP == nil {
level.Error(logger).Log("msg", "Error parsing source ip address", "srcIP", module.TCP.SourceIPAddress)
return nil, fmt.Errorf("Error parsing source ip address: %s", module.TCP.SourceIPAddress)
return nil, fmt.Errorf("error parsing source ip address: %s", module.TCP.SourceIPAddress)
}
level.Info(logger).Log("msg", "Using local address", "srcIP", srcIP)
dialer.LocalAddr = &net.TCPAddr{IP: srcIP}
Expand Down
2 changes: 1 addition & 1 deletion prober/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func chooseProtocol(IPProtocol string, fallbackIPProtocol bool, target string, r

ip, err = net.ResolveIPAddr(IPProtocol, target)
if err != nil {
if fallbackIPProtocol == false {
if !fallbackIPProtocol {
level.Error(logger).Log("msg", "Resolution with IP protocol failed (fallback_ip_protocol is false): err", err)
} else {
level.Warn(logger).Log("msg", "Resolution with IP protocol failed, attempting fallback protocol", "fallback_protocol", fallbackProtocol, "err", err)
Expand Down

0 comments on commit 22be143

Please sign in to comment.