diff --git a/.bingo/README.md b/.bingo/README.md index 70f928603..7a5c2d4f6 100755 --- a/.bingo/README.md +++ b/.bingo/README.md @@ -5,7 +5,8 @@ This is directory which stores Go modules with pinned buildable package that is * Run `bingo get` to install all tools having each own module file in this directory. * Run `bingo get ` to install that have own module file in this directory. * For Makefile: Make sure to put `include .bingo/Variables.mk` in your Makefile, then use $() variable where is the .bingo/.mod. -* For shell: Run `source .bingo/variables.env` to source all environment variable for each tool +* For shell: Run `source .bingo/variables.env` to source all environment variable for each tool. +* For go: Import `.bingo/variables.go` to for variable names. * See https://github.com/bwplotka/bingo or -h on how to add, remove or change binaries dependencies. ## Requirements diff --git a/.bingo/Variables.mk b/.bingo/Variables.mk index a33fba2be..f15748270 100644 --- a/.bingo/Variables.mk +++ b/.bingo/Variables.mk @@ -1,5 +1,6 @@ -# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.2.2. DO NOT EDIT. +# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.3.0. DO NOT EDIT. # All tools are designed to be build inside $GOBIN. +BINGO_DIR := $(dir $(lastword $(MAKEFILE_LIST))) GOPATH ?= $(shell go env GOPATH) GOBIN ?= $(firstword $(subst :, ,${GOPATH}))/bin GO ?= $(shell which go) @@ -16,39 +17,45 @@ GO ?= $(shell which go) # @echo "Running bingo" # @$(BINGO) # -BINGO := $(GOBIN)/bingo-v0.2.2 -$(BINGO): .bingo/bingo.mod +BINGO := $(GOBIN)/bingo-v0.3.0 +$(BINGO): $(BINGO_DIR)/bingo.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. - @echo "(re)installing $(GOBIN)/bingo-v0.2.2" - @cd .bingo && $(GO) build -modfile=bingo.mod -o=$(GOBIN)/bingo-v0.2.2 "github.com/bwplotka/bingo" + @echo "(re)installing $(GOBIN)/bingo-v0.3.0" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=bingo.mod -o=$(GOBIN)/bingo-v0.3.0 "github.com/bwplotka/bingo" FAILLINT := $(GOBIN)/faillint-v1.5.0 -$(FAILLINT): .bingo/faillint.mod +$(FAILLINT): $(BINGO_DIR)/faillint.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/faillint-v1.5.0" - @cd .bingo && $(GO) build -modfile=faillint.mod -o=$(GOBIN)/faillint-v1.5.0 "github.com/fatih/faillint" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=faillint.mod -o=$(GOBIN)/faillint-v1.5.0 "github.com/fatih/faillint" GOIMPORTS := $(GOBIN)/goimports-v0.0.0-20200529172331-a64b76657301 -$(GOIMPORTS): .bingo/goimports.mod +$(GOIMPORTS): $(BINGO_DIR)/goimports.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/goimports-v0.0.0-20200529172331-a64b76657301" - @cd .bingo && $(GO) build -modfile=goimports.mod -o=$(GOBIN)/goimports-v0.0.0-20200529172331-a64b76657301 "golang.org/x/tools/cmd/goimports" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=goimports.mod -o=$(GOBIN)/goimports-v0.0.0-20200529172331-a64b76657301 "golang.org/x/tools/cmd/goimports" GOLANGCI_LINT := $(GOBIN)/golangci-lint-v1.27.0 -$(GOLANGCI_LINT): .bingo/golangci-lint.mod +$(GOLANGCI_LINT): $(BINGO_DIR)/golangci-lint.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/golangci-lint-v1.27.0" - @cd .bingo && $(GO) build -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.27.0 "github.com/golangci/golangci-lint/cmd/golangci-lint" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=golangci-lint.mod -o=$(GOBIN)/golangci-lint-v1.27.0 "github.com/golangci/golangci-lint/cmd/golangci-lint" MISSPELL := $(GOBIN)/misspell-v0.3.4 -$(MISSPELL): .bingo/misspell.mod +$(MISSPELL): $(BINGO_DIR)/misspell.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. @echo "(re)installing $(GOBIN)/misspell-v0.3.4" - @cd .bingo && $(GO) build -modfile=misspell.mod -o=$(GOBIN)/misspell-v0.3.4 "github.com/client9/misspell/cmd/misspell" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=misspell.mod -o=$(GOBIN)/misspell-v0.3.4 "github.com/client9/misspell/cmd/misspell" -PROTOC_GEN_GOGOFAST := $(GOBIN)/protoc-gen-gogofast-v1.3.1 -$(PROTOC_GEN_GOGOFAST): .bingo/protoc-gen-gogofast.mod +PROTOC_GEN_GO_GRPC := $(GOBIN)/protoc-gen-go-grpc-v0.0.0-20200723182653-9106c3fff523 +$(PROTOC_GEN_GO_GRPC): $(BINGO_DIR)/protoc-gen-go-grpc.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. - @echo "(re)installing $(GOBIN)/protoc-gen-gogofast-v1.3.1" - @cd .bingo && $(GO) build -modfile=protoc-gen-gogofast.mod -o=$(GOBIN)/protoc-gen-gogofast-v1.3.1 "github.com/gogo/protobuf/protoc-gen-gogofast" + @echo "(re)installing $(GOBIN)/protoc-gen-go-grpc-v0.0.0-20200723182653-9106c3fff523" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=protoc-gen-go-grpc.mod -o=$(GOBIN)/protoc-gen-go-grpc-v0.0.0-20200723182653-9106c3fff523 "google.golang.org/grpc/cmd/protoc-gen-go-grpc" + +PROTOC_GEN_GO := $(GOBIN)/protoc-gen-go-v1.25.0 +$(PROTOC_GEN_GO): $(BINGO_DIR)/protoc-gen-go.mod + @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. + @echo "(re)installing $(GOBIN)/protoc-gen-go-v1.25.0" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=protoc-gen-go.mod -o=$(GOBIN)/protoc-gen-go-v1.25.0 "google.golang.org/protobuf/cmd/protoc-gen-go" diff --git a/.bingo/bingo.mod b/.bingo/bingo.mod index 3489e772b..7007d9020 100644 --- a/.bingo/bingo.mod +++ b/.bingo/bingo.mod @@ -2,4 +2,4 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.14 -require github.com/bwplotka/bingo v0.2.2 +require github.com/bwplotka/bingo v0.3.0 diff --git a/.bingo/golangci-lint.mod b/.bingo/golangci-lint.mod index b4460743e..da0835531 100644 --- a/.bingo/golangci-lint.mod +++ b/.bingo/golangci-lint.mod @@ -2,7 +2,4 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.14 -require ( - github.com/golangci/golangci-lint v1.27.0 // cmd/golangci-lint - github.com/securego/gosec v0.0.0-20200316084457-7da9f46445fd // indirect -) +require github.com/golangci/golangci-lint v1.27.0 // cmd/golangci-lint diff --git a/.bingo/protoc-gen-go-grpc.mod b/.bingo/protoc-gen-go-grpc.mod new file mode 100644 index 000000000..c4d6abfcd --- /dev/null +++ b/.bingo/protoc-gen-go-grpc.mod @@ -0,0 +1,5 @@ +module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT + +go 1.14 + +require google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200723182653-9106c3fff523 diff --git a/.bingo/protoc-gen-gogofast.mod b/.bingo/protoc-gen-go.mod similarity index 57% rename from .bingo/protoc-gen-gogofast.mod rename to .bingo/protoc-gen-go.mod index c596d0970..0640b1ef7 100644 --- a/.bingo/protoc-gen-gogofast.mod +++ b/.bingo/protoc-gen-go.mod @@ -2,4 +2,4 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT go 1.14 -require github.com/gogo/protobuf v1.3.1 // protoc-gen-gogofast +require google.golang.org/protobuf v1.25.0 // cmd/protoc-gen-go diff --git a/.bingo/variables.env b/.bingo/variables.env index e825d3bc8..153d97ddb 100644 --- a/.bingo/variables.env +++ b/.bingo/variables.env @@ -1,22 +1,24 @@ -# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.2.2. DO NOT EDIT. +# Auto generated binary variables helper managed by https://github.com/bwplotka/bingo v0.3.0. DO NOT EDIT. # All tools are designed to be build inside $GOBIN. # Those variables will work only until 'bingo get' was invoked, or if tools were installed via Makefile's Variables.mk. -local gobin=$(go env GOBIN) +GOBIN=${GOBIN:=$(go env GOBIN)} -if [ -z "$gobin" ]; then - gobin="$(go env GOPATH)/bin" +if [ -z "$GOBIN" ]; then + GOBIN="$(go env GOPATH)/bin" fi -BINGO="${gobin}/bingo-v0.2.2" +BINGO="${GOBIN}/bingo-v0.3.0" -FAILLINT="${gobin}/faillint-v1.5.0" +FAILLINT="${GOBIN}/faillint-v1.5.0" -GOIMPORTS="${gobin}/goimports-v0.0.0-20200529172331-a64b76657301" +GOIMPORTS="${GOBIN}/goimports-v0.0.0-20200529172331-a64b76657301" -GOLANGCI_LINT="${gobin}/golangci-lint-v1.27.0" +GOLANGCI_LINT="${GOBIN}/golangci-lint-v1.27.0" -MISSPELL="${gobin}/misspell-v0.3.4" +MISSPELL="${GOBIN}/misspell-v0.3.4" -PROTOC_GEN_GOGOFAST="${gobin}/protoc-gen-gogofast-v1.3.1" +PROTOC_GEN_GO_GRPC="${GOBIN}/protoc-gen-go-grpc-v0.0.0-20200723182653-9106c3fff523" + +PROTOC_GEN_GO="${GOBIN}/protoc-gen-go-v1.25.0" diff --git a/.gitignore b/.gitignore index 826caa390..b818e03db 100644 --- a/.gitignore +++ b/.gitignore @@ -201,4 +201,5 @@ coverage.txt #vendor vendor/ -.envrc \ No newline at end of file +.envrc +.bin diff --git a/Makefile b/Makefile index 1868f27c0..4941674f1 100644 --- a/Makefile +++ b/Makefile @@ -2,16 +2,16 @@ include .bingo/Variables.mk SHELL=/bin/bash -PROVIDER_MODULES ?= $(shell ls -d $(PWD)/providers/*) +PROVIDER_MODULES ?= $(shell find $(PWD)/providers/ -name "go.mod" | grep -v ".bingo" | xargs dirname) MODULES ?= $(PROVIDER_MODULES) $(PWD)/ GOBIN ?= $(firstword $(subst :, ,${GOPATH}))/bin +// TODO(bwplotka): Move to buf. PROTOC_VERSION ?= 3.12.3 PROTOC ?= $(GOBIN)/protoc-$(PROTOC_VERSION) TMP_GOPATH ?= /tmp/gopath - GO111MODULE ?= on export GO111MODULE GOPROXY ?= https://proxy.golang.org @@ -45,8 +45,8 @@ fmt: $(GOIMPORTS) .PHONY: proto proto: ## Generates Go files from Thanos proto files. -proto: $(GOIMPORTS) $(PROTOC) $(PROTOC_GEN_GOGOFAST) ./grpctesting/testpb/test.proto - @GOIMPORTS_BIN="$(GOIMPORTS)" PROTOC_BIN="$(PROTOC)" PROTOC_GEN_GOGOFAST_BIN="$(PROTOC_GEN_GOGOFAST)" scripts/genproto.sh +proto: $(GOIMPORTS) $(PROTOC) $(PROTOC_GEN_GOGOFAST) $(PROTOC_GEN_GO) $(PROTOC_GEN_GO_GRPC) ./grpctesting/testpb/test.proto + @GOIMPORTS_BIN="$(GOIMPORTS)" PROTOC_BIN="$(PROTOC)" PROTOC_GEN_GO_BIN="$(PROTOC_GEN_GO)" PROTOC_GEN_GO_GRPC_BIN="$(PROTOC_GEN_GO_GRPC)" PROTOC_GEN_GOGOFAST_BIN="$(PROTOC_GEN_GOGOFAST)" scripts/genproto.sh .PHONY: test test: @@ -61,6 +61,13 @@ test_module: @echo "Running tests for dir: $(DIR)" cd $(DIR) && go test -v -race ./... +.PHONY: deps +deps: + @echo "Running deps tidy for all modules: $(MODULES)" + for dir in $(MODULES) ; do \ + cd $${dir} && go mod tidy; \ + done + .PHONY: lint # PROTIP: # Add @@ -68,20 +75,30 @@ test_module: # --mem-profile-path string Path to memory profile output file # to debug big allocations during linting. lint: ## Runs various static analysis tools against our code. -lint: fmt $(FAILLINT) $(GOLANGCI_LINT) $(MISSPELL) +lint: fmt proto @echo "Running lint for all modules: $(MODULES)" ./scripts/git-tree.sh + for dir in $(MODULES) ; do \ + $(MAKE) lint_module DIR=$${dir} ; \ + done + +.PHONY: lint_module +# PROTIP: +# Add +# --cpu-profile-path string Path to CPU profile output file +# --mem-profile-path string Path to memory profile output file +# to debug big allocations during linting. +lint_module: ## Runs various static analysis against our code. +lint_module: $(FAILLINT) $(GOLANGCI_LINT) $(MISSPELL) @echo ">> verifying modules being imported" - @$(FAILLINT) -paths "errors=github.com/pkg/errors,fmt.{Print,Printf,Println}" ./... + @cd $(DIR) && $(FAILLINT) -paths "errors=github.com/pkg/errors,fmt.{Print,Printf,Println}" ./... @echo ">> examining all of the Go files" - @go vet -stdmethods=false ./... + @cd $(DIR) && go vet -stdmethods=false ./... @echo ">> linting all of the Go files GOGC=${GOGC}" - @$(GOLANGCI_LINT) run - @echo ">> detecting misspells" - @find . -type f | grep -v vendor/ | grep -vE '\./\..*' | xargs $(MISSPELL) -error - @echo ">> ensuring generated proto files are up to date" - @$(MAKE) proto - ./scripts/git-tree.sh + @cd $(DIR) && $(GOLANGCI_LINT) run + @./scripts/git-tree.sh + +# TODO(bwplotka): Move to buf. $(PROTOC): @mkdir -p $(TMP_GOPATH) @echo ">> fetching protoc@${PROTOC_VERSION}" diff --git a/README.md b/README.md index fc293af27..785e66733 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ myServer := grpc.NewServer( * [`auth`](auth) - a customizable (via `AuthFunc`) piece of auth middleware #### Logging + * [`tags`](interceptors/tags) - a library that adds a `Tag` map to context, with data populated from request body * [`zap`](providers/zap) - integration of [zap](https://github.com/uber-go/zap) logging library into gRPC handlers. * [`logrus`](providers/logrus) - integration of [logrus](https://github.com/sirupsen/logrus) logging library into gRPC handlers. diff --git a/go.mod b/go.mod index 39557f630..918fcd776 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,14 @@ module github.com/grpc-ecosystem/go-grpc-middleware/v2 go 1.14 require ( - github.com/gogo/protobuf v1.2.1 - github.com/golang/protobuf v1.3.2 + github.com/golang/protobuf v1.4.3 github.com/opentracing/opentracing-go v1.1.0 github.com/pkg/errors v0.9.1 - github.com/stretchr/testify v1.4.0 + github.com/stretchr/testify v1.7.0 golang.org/x/net v0.0.0-20190620200207-3b0461eec859 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be - google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 // indirect - google.golang.org/grpc v1.19.0 + google.golang.org/grpc v1.30.1 + google.golang.org/grpc/examples v0.0.0-20200723182653-9106c3fff523 + google.golang.org/protobuf v1.25.0 // Github link: https://github.com/protocolbuffers/protobuf-go. + ) diff --git a/go.sum b/go.sum index 8cb06aad9..79ddc52d5 100644 --- a/go.sum +++ b/go.sum @@ -1,60 +1,105 @@ cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200624020401-64a14ca9d1ad h1:uAwc13+y0Y8QZLTYhLCu6lHhnG99ecQU5FYTj8zxAng= +google.golang.org/genproto v0.0.0-20200624020401-64a14ca9d1ad/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.30.1 h1:oJTcovwKSu7V3TaBKd0/AXOuJVHjTdGTutbMHIOgVEQ= +google.golang.org/grpc v1.30.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc/examples v0.0.0-20200723182653-9106c3fff523 h1:kp+Qy+IEZxLiQvPeK4Qq7ebiaMwiFSg3YVnohbEXLMg= +google.golang.org/grpc/examples v0.0.0-20200723182653-9106c3fff523/go.mod h1:5j1uub0jRGhRiSghIlrThmBUgcgLXOVJQ/l1getT4uo= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/grpctesting/gogotestpb/fields.pb.go b/grpctesting/gogotestpb/fields.pb.go deleted file mode 100644 index ccd5fdafa..000000000 --- a/grpctesting/gogotestpb/fields.pb.go +++ /dev/null @@ -1,438 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: fields.proto - -// This file is used for grpctesting discovery of log fields from requests using reflection and gogo proto more tags. - -package gogotestpb - -import ( - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/timestamp" - math "math" - time "time" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf -var _ = time.Kitchen - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type Metadata struct { - Tags []string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" log_field:"meta_tags"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Metadata) Reset() { *m = Metadata{} } -func (m *Metadata) String() string { return proto.CompactTextString(m) } -func (*Metadata) ProtoMessage() {} -func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{0} -} -func (m *Metadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Metadata.Unmarshal(m, b) -} -func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Metadata.Marshal(b, m, deterministic) -} -func (m *Metadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_Metadata.Merge(m, src) -} -func (m *Metadata) XXX_Size() int { - return xxx_messageInfo_Metadata.Size(m) -} -func (m *Metadata) XXX_DiscardUnknown() { - xxx_messageInfo_Metadata.DiscardUnknown(m) -} - -var xxx_messageInfo_Metadata proto.InternalMessageInfo - -func (m *Metadata) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -type PingId struct { - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" log_field:"ping_id"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PingId) Reset() { *m = PingId{} } -func (m *PingId) String() string { return proto.CompactTextString(m) } -func (*PingId) ProtoMessage() {} -func (*PingId) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{1} -} -func (m *PingId) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PingId.Unmarshal(m, b) -} -func (m *PingId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PingId.Marshal(b, m, deterministic) -} -func (m *PingId) XXX_Merge(src proto.Message) { - xxx_messageInfo_PingId.Merge(m, src) -} -func (m *PingId) XXX_Size() int { - return xxx_messageInfo_PingId.Size(m) -} -func (m *PingId) XXX_DiscardUnknown() { - xxx_messageInfo_PingId.DiscardUnknown(m) -} - -var xxx_messageInfo_PingId proto.InternalMessageInfo - -func (m *PingId) GetId() int32 { - if m != nil { - return m.Id - } - return 0 -} - -type Ping struct { - Id *PingId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Ping) Reset() { *m = Ping{} } -func (m *Ping) String() string { return proto.CompactTextString(m) } -func (*Ping) ProtoMessage() {} -func (*Ping) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{2} -} -func (m *Ping) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Ping.Unmarshal(m, b) -} -func (m *Ping) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Ping.Marshal(b, m, deterministic) -} -func (m *Ping) XXX_Merge(src proto.Message) { - xxx_messageInfo_Ping.Merge(m, src) -} -func (m *Ping) XXX_Size() int { - return xxx_messageInfo_Ping.Size(m) -} -func (m *Ping) XXX_DiscardUnknown() { - xxx_messageInfo_Ping.DiscardUnknown(m) -} - -var xxx_messageInfo_Ping proto.InternalMessageInfo - -func (m *Ping) GetId() *PingId { - if m != nil { - return m.Id - } - return nil -} - -func (m *Ping) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -type PingRequest struct { - Ping *Ping `protobuf:"bytes,1,opt,name=ping,proto3" json:"ping,omitempty"` - Meta *Metadata `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PingRequest) Reset() { *m = PingRequest{} } -func (m *PingRequest) String() string { return proto.CompactTextString(m) } -func (*PingRequest) ProtoMessage() {} -func (*PingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{3} -} -func (m *PingRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PingRequest.Unmarshal(m, b) -} -func (m *PingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PingRequest.Marshal(b, m, deterministic) -} -func (m *PingRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PingRequest.Merge(m, src) -} -func (m *PingRequest) XXX_Size() int { - return xxx_messageInfo_PingRequest.Size(m) -} -func (m *PingRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PingRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_PingRequest proto.InternalMessageInfo - -func (m *PingRequest) GetPing() *Ping { - if m != nil { - return m.Ping - } - return nil -} - -func (m *PingRequest) GetMeta() *Metadata { - if m != nil { - return m.Meta - } - return nil -} - -type Pong struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" log_field:"pong_id"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Pong) Reset() { *m = Pong{} } -func (m *Pong) String() string { return proto.CompactTextString(m) } -func (*Pong) ProtoMessage() {} -func (*Pong) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{4} -} -func (m *Pong) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Pong.Unmarshal(m, b) -} -func (m *Pong) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Pong.Marshal(b, m, deterministic) -} -func (m *Pong) XXX_Merge(src proto.Message) { - xxx_messageInfo_Pong.Merge(m, src) -} -func (m *Pong) XXX_Size() int { - return xxx_messageInfo_Pong.Size(m) -} -func (m *Pong) XXX_DiscardUnknown() { - xxx_messageInfo_Pong.DiscardUnknown(m) -} - -var xxx_messageInfo_Pong proto.InternalMessageInfo - -func (m *Pong) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type PongRequest struct { - Pong *Pong `protobuf:"bytes,1,opt,name=pong,proto3" json:"pong,omitempty"` - Meta *Metadata `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PongRequest) Reset() { *m = PongRequest{} } -func (m *PongRequest) String() string { return proto.CompactTextString(m) } -func (*PongRequest) ProtoMessage() {} -func (*PongRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{5} -} -func (m *PongRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PongRequest.Unmarshal(m, b) -} -func (m *PongRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PongRequest.Marshal(b, m, deterministic) -} -func (m *PongRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PongRequest.Merge(m, src) -} -func (m *PongRequest) XXX_Size() int { - return xxx_messageInfo_PongRequest.Size(m) -} -func (m *PongRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PongRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_PongRequest proto.InternalMessageInfo - -func (m *PongRequest) GetPong() *Pong { - if m != nil { - return m.Pong - } - return nil -} - -func (m *PongRequest) GetMeta() *Metadata { - if m != nil { - return m.Meta - } - return nil -} - -type OneOfLogField struct { - // Types that are valid to be assigned to Identifier: - // *OneOfLogField_BarId - // *OneOfLogField_BazId - Identifier isOneOfLogField_Identifier `protobuf_oneof:"identifier"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *OneOfLogField) Reset() { *m = OneOfLogField{} } -func (m *OneOfLogField) String() string { return proto.CompactTextString(m) } -func (*OneOfLogField) ProtoMessage() {} -func (*OneOfLogField) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{6} -} -func (m *OneOfLogField) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OneOfLogField.Unmarshal(m, b) -} -func (m *OneOfLogField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OneOfLogField.Marshal(b, m, deterministic) -} -func (m *OneOfLogField) XXX_Merge(src proto.Message) { - xxx_messageInfo_OneOfLogField.Merge(m, src) -} -func (m *OneOfLogField) XXX_Size() int { - return xxx_messageInfo_OneOfLogField.Size(m) -} -func (m *OneOfLogField) XXX_DiscardUnknown() { - xxx_messageInfo_OneOfLogField.DiscardUnknown(m) -} - -var xxx_messageInfo_OneOfLogField proto.InternalMessageInfo - -type isOneOfLogField_Identifier interface { - isOneOfLogField_Identifier() -} - -type OneOfLogField_BarId struct { - BarId string `protobuf:"bytes,1,opt,name=bar_id,json=barId,proto3,oneof" json:"bar_id,omitempty" log_field:"bar_id"` -} -type OneOfLogField_BazId struct { - BazId string `protobuf:"bytes,2,opt,name=baz_id,json=bazId,proto3,oneof" json:"baz_id,omitempty" log_field:"baz_id"` -} - -func (*OneOfLogField_BarId) isOneOfLogField_Identifier() {} -func (*OneOfLogField_BazId) isOneOfLogField_Identifier() {} - -func (m *OneOfLogField) GetIdentifier() isOneOfLogField_Identifier { - if m != nil { - return m.Identifier - } - return nil -} - -func (m *OneOfLogField) GetBarId() string { - if x, ok := m.GetIdentifier().(*OneOfLogField_BarId); ok { - return x.BarId - } - return "" -} - -func (m *OneOfLogField) GetBazId() string { - if x, ok := m.GetIdentifier().(*OneOfLogField_BazId); ok { - return x.BazId - } - return "" -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*OneOfLogField) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*OneOfLogField_BarId)(nil), - (*OneOfLogField_BazId)(nil), - } -} - -type GoGoProtoStdTime struct { - Timestamp *time.Time `protobuf:"bytes,1,opt,name=timestamp,proto3,stdtime" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GoGoProtoStdTime) Reset() { *m = GoGoProtoStdTime{} } -func (m *GoGoProtoStdTime) String() string { return proto.CompactTextString(m) } -func (*GoGoProtoStdTime) ProtoMessage() {} -func (*GoGoProtoStdTime) Descriptor() ([]byte, []int) { - return fileDescriptor_d39ad626ec0e575e, []int{7} -} -func (m *GoGoProtoStdTime) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GoGoProtoStdTime.Unmarshal(m, b) -} -func (m *GoGoProtoStdTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GoGoProtoStdTime.Marshal(b, m, deterministic) -} -func (m *GoGoProtoStdTime) XXX_Merge(src proto.Message) { - xxx_messageInfo_GoGoProtoStdTime.Merge(m, src) -} -func (m *GoGoProtoStdTime) XXX_Size() int { - return xxx_messageInfo_GoGoProtoStdTime.Size(m) -} -func (m *GoGoProtoStdTime) XXX_DiscardUnknown() { - xxx_messageInfo_GoGoProtoStdTime.DiscardUnknown(m) -} - -var xxx_messageInfo_GoGoProtoStdTime proto.InternalMessageInfo - -func (m *GoGoProtoStdTime) GetTimestamp() *time.Time { - if m != nil { - return m.Timestamp - } - return nil -} - -func init() { - proto.RegisterType((*Metadata)(nil), "grpc_middleware.gogotestpb.Metadata") - proto.RegisterType((*PingId)(nil), "grpc_middleware.gogotestpb.PingId") - proto.RegisterType((*Ping)(nil), "grpc_middleware.gogotestpb.Ping") - proto.RegisterType((*PingRequest)(nil), "grpc_middleware.gogotestpb.PingRequest") - proto.RegisterType((*Pong)(nil), "grpc_middleware.gogotestpb.Pong") - proto.RegisterType((*PongRequest)(nil), "grpc_middleware.gogotestpb.PongRequest") - proto.RegisterType((*OneOfLogField)(nil), "grpc_middleware.gogotestpb.OneOfLogField") - proto.RegisterType((*GoGoProtoStdTime)(nil), "grpc_middleware.gogotestpb.GoGoProtoStdTime") -} - -func init() { proto.RegisterFile("fields.proto", fileDescriptor_d39ad626ec0e575e) } - -var fileDescriptor_d39ad626ec0e575e = []byte{ - // 431 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0xcf, 0xaa, 0xd3, 0x40, - 0x14, 0x87, 0x6f, 0x6a, 0x5a, 0xec, 0xe9, 0x15, 0x2e, 0xe3, 0x55, 0x6b, 0x17, 0xa6, 0x0c, 0x82, - 0xdd, 0x98, 0x60, 0x75, 0xa1, 0x2e, 0x5c, 0x64, 0xe1, 0xb5, 0xa0, 0xdc, 0x32, 0xde, 0x95, 0x9b, - 0x30, 0x71, 0xa6, 0xc3, 0x40, 0x92, 0x13, 0x93, 0xa9, 0x42, 0x41, 0x7c, 0x05, 0x97, 0x3e, 0x5d, - 0x5d, 0xf8, 0x06, 0x7d, 0x02, 0x99, 0x49, 0xff, 0x44, 0xa4, 0x2a, 0xb8, 0x9b, 0x61, 0x7e, 0xdf, - 0x99, 0xef, 0x1c, 0x0e, 0x9c, 0x2e, 0xb4, 0xcc, 0x44, 0x1d, 0x96, 0x15, 0x1a, 0x24, 0x23, 0x55, - 0x95, 0xef, 0x93, 0x5c, 0x0b, 0x91, 0xc9, 0x4f, 0xbc, 0x92, 0xa1, 0x42, 0x85, 0x46, 0xd6, 0xa6, - 0x4c, 0x47, 0xe7, 0xf6, 0xec, 0x62, 0x91, 0x3d, 0x35, 0xc4, 0x28, 0x50, 0x88, 0x2a, 0x93, 0x91, - 0xbb, 0xa5, 0xcb, 0x45, 0x64, 0x74, 0x2e, 0x6b, 0xc3, 0xf3, 0xb2, 0x09, 0xd0, 0x67, 0x70, 0xfd, - 0x8d, 0x34, 0x5c, 0x70, 0xc3, 0xc9, 0x43, 0xf0, 0x0d, 0x57, 0xf5, 0xd0, 0x1b, 0x5f, 0x9b, 0xf4, - 0xe3, 0xbb, 0x9b, 0x75, 0x70, 0x2b, 0x43, 0x95, 0x38, 0x85, 0xe7, 0x34, 0x97, 0x86, 0x27, 0xf6, - 0x9d, 0x32, 0x17, 0xa3, 0x8f, 0xa0, 0x37, 0xd7, 0x85, 0x9a, 0x09, 0xf2, 0x00, 0x3a, 0x5a, 0x0c, - 0xbd, 0xb1, 0x37, 0xe9, 0xc6, 0x77, 0x36, 0xeb, 0xe0, 0x66, 0x0b, 0x2b, 0x75, 0xa1, 0x12, 0x2d, - 0x28, 0xeb, 0x68, 0x41, 0xe7, 0xe0, 0x5b, 0x84, 0x4c, 0xf7, 0xc0, 0x60, 0x4a, 0xc3, 0xe3, 0x5d, - 0x85, 0xcd, 0x07, 0x96, 0x25, 0xe7, 0xd0, 0xfd, 0xc8, 0xb3, 0xa5, 0x1c, 0x76, 0xc6, 0xde, 0xa4, - 0xcf, 0x9a, 0x0b, 0xfd, 0x0c, 0x03, 0x9b, 0x61, 0xf2, 0xc3, 0x52, 0xd6, 0x86, 0x3c, 0x01, 0xdf, - 0x7e, 0xb8, 0x2d, 0x3d, 0xfe, 0x5b, 0x69, 0xe6, 0xd2, 0xe4, 0x29, 0xf8, 0xb6, 0x3b, 0x57, 0x79, - 0x30, 0xbd, 0xff, 0x27, 0x6a, 0x37, 0x2c, 0xe6, 0x08, 0x1a, 0x81, 0x3f, 0xc7, 0x42, 0xb5, 0x26, - 0xd0, 0xff, 0x7d, 0x02, 0xd8, 0x9a, 0x80, 0xf5, 0xc5, 0x5f, 0x7d, 0xf1, 0x1f, 0x7d, 0xd1, 0xf9, - 0xe2, 0x7f, 0xf9, 0x7e, 0x81, 0x1b, 0x97, 0x85, 0xbc, 0x5c, 0xbc, 0x46, 0xf5, 0xd2, 0xda, 0x91, - 0x08, 0x7a, 0x29, 0xaf, 0x92, 0xbd, 0xfc, 0xed, 0xcd, 0x3a, 0x20, 0x2d, 0xf9, 0xe6, 0x91, 0xbe, - 0x3a, 0x61, 0xdd, 0x94, 0x57, 0xb3, 0x2d, 0xb0, 0xb2, 0x40, 0xe7, 0x08, 0xb0, 0x3a, 0x00, 0xab, - 0x99, 0x88, 0x4f, 0x01, 0xb4, 0x90, 0x85, 0xd1, 0x0b, 0x2d, 0x2b, 0xca, 0xe0, 0xec, 0x02, 0x2f, - 0x70, 0x6e, 0x97, 0xef, 0xad, 0x11, 0x57, 0x3a, 0x97, 0xe4, 0x05, 0xf4, 0xf7, 0x6b, 0xb9, 0x9d, - 0xc4, 0x28, 0x6c, 0x16, 0x37, 0xdc, 0x2d, 0x6e, 0x78, 0xb5, 0x4b, 0xc4, 0xfe, 0xd7, 0xef, 0x81, - 0xc7, 0x0e, 0x48, 0x7c, 0xf6, 0xed, 0xc7, 0xbd, 0x93, 0x77, 0x70, 0xe8, 0x3a, 0xed, 0x39, 0xec, - 0xf1, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7b, 0x9a, 0xee, 0xac, 0x3f, 0x03, 0x00, 0x00, -} diff --git a/grpctesting/gogotestpb/fields.proto b/grpctesting/gogotestpb/fields.proto deleted file mode 100644 index 27de34520..000000000 --- a/grpctesting/gogotestpb/fields.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; - -// This file is used for grpctesting discovery of log fields from requests using reflection and gogo proto more tags. -package grpc_middleware.gogotestpb; - -import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; - -option (gogoproto.gogoproto_import) = false; - -option go_package = "gogotestpb"; - -message Metadata { - repeated string tags = 1 [(gogoproto.moretags) = "log_field:\"meta_tags\""]; -} - -message PingId { - int32 id = 1 [(gogoproto.moretags) = "log_field:\"ping_id\""]; -} - -message Ping { - PingId id = 1; - string value = 2; -} - -message PingRequest { - Ping ping = 1; - Metadata meta = 2; -} - -message Pong { - string id = 1 [(gogoproto.moretags) = "log_field:\"pong_id\""]; -} - -message PongRequest { - Pong pong = 1; - Metadata meta = 2; -} - -message OneOfLogField { - oneof identifier { - string bar_id = 1 [(gogoproto.moretags) = "log_field:\"bar_id\""]; - string baz_id = 2 [(gogoproto.moretags) = "log_field:\"baz_id\""]; - } -} - -message GoGoProtoStdTime { - google.protobuf.Timestamp timestamp = 1 [(gogoproto.stdtime) = true]; -} diff --git a/grpctesting/pingservice.go b/grpctesting/pingservice.go index 6acbf23e5..714bfc97b 100644 --- a/grpctesting/pingservice.go +++ b/grpctesting/pingservice.go @@ -25,7 +25,12 @@ const ( ListResponseCount = 100 ) +// Interface implementation assert. +var _ testpb.TestServiceServer = &TestPingService{} + type TestPingService struct { + testpb.UnimplementedTestServiceServer + T *testing.T } @@ -47,6 +52,7 @@ func (s *TestPingService) PingList(ping *testpb.PingRequest, stream testpb.TestS if ping.ErrorCodeReturned != 0 { return status.Errorf(codes.Code(ping.ErrorCodeReturned), "foobar") } + // Send user trailers and headers. for i := 0; i < ListResponseCount; i++ { if err := stream.Send(&testpb.PingResponse{Value: ping.Value, Counter: int32(i)}); err != nil { diff --git a/grpctesting/pingservice_test.go b/grpctesting/pingservice_test.go new file mode 100644 index 000000000..5efe0f8fa --- /dev/null +++ b/grpctesting/pingservice_test.go @@ -0,0 +1,90 @@ +package grpctesting + +import ( + "context" + "fmt" + "net" + "testing" + "time" + + "github.com/stretchr/testify/require" + "google.golang.org/grpc" + + "github.com/grpc-ecosystem/go-grpc-middleware/v2/grpctesting/testpb" +) + +func TestPingServiceOnWire(t *testing.T) { + stopped := make(chan error) + serverListener, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err, "must be able to allocate a port for serverListener") + + server := grpc.NewServer() + testpb.RegisterTestServiceServer(server, &TestPingService{T: t}) + + go func() { + defer close(stopped) + stopped <- server.Serve(serverListener) + }() + defer func() { + server.Stop() + <-stopped + }() + + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + defer cancel() + + // This is the point where we hook up the interceptor. + clientConn, err := grpc.DialContext( + ctx, + serverListener.Addr().String(), + grpc.WithInsecure(), + grpc.WithBlock(), + ) + require.NoError(t, err, "must not error on client Dial") + + testClient := testpb.NewTestServiceClient(clientConn) + select { + case err := <-stopped: + t.Fatal("gRPC server stopped prematurely", err) + default: + } + + r, err := testClient.PingEmpty(context.Background(), &testpb.Empty{}) + require.NoError(t, err) + require.Equal(t, "default_response_value", r.Value) + require.Equal(t, int32(0), r.Counter) + + r2, err := testClient.Ping(context.Background(), &testpb.PingRequest{Value: "24"}) + require.NoError(t, err) + require.Equal(t, "24", r2.Value) + require.Equal(t, int32(0), r2.Counter) + + _, err = testClient.PingError(context.Background(), &testpb.PingRequest{Value: "24"}) + require.Error(t, err) + + l, err := testClient.PingList(context.Background(), &testpb.PingRequest{Value: "24"}) + require.NoError(t, err) + for i := 0; i < ListResponseCount; i++ { + r, err := l.Recv() + require.NoError(t, err) + require.Equal(t, "24", r.Value) + require.Equal(t, int32(i), r.Counter) + } + + s, err := testClient.PingStream(context.Background()) + require.NoError(t, err) + for i := 0; i < ListResponseCount; i++ { + require.NoError(t, s.Send(&testpb.PingRequest{Value: fmt.Sprintf("%v", i)})) + + r, err := s.Recv() + require.NoError(t, err) + require.Equal(t, fmt.Sprintf("%v", i), r.Value) + require.Equal(t, int32(i), r.Counter) + } + + select { + case err := <-stopped: + t.Fatal("gRPC server stopped prematurely", err) + default: + } +} diff --git a/grpctesting/testpb/test.pb.go b/grpctesting/testpb/test.pb.go index bba2dd4f3..2e07a7648 100644 --- a/grpctesting/testpb/test.pb.go +++ b/grpctesting/testpb/test.pb.go @@ -1,1037 +1,332 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.12.3 // source: test.proto package testpb import ( - context "context" - fmt "fmt" - io "io" - math "math" + reflect "reflect" + sync "sync" - proto "github.com/gogo/protobuf/proto" - grpc "google.golang.org/grpc" + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type Empty struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *Empty) Reset() { *m = Empty{} } -func (m *Empty) String() string { return proto.CompactTextString(m) } -func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { - return fileDescriptor_c161fcfdc0c3ff1e, []int{0} -} -func (m *Empty) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Empty.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalTo(b) - if err != nil { - return nil, err - } - return b[:n], nil +func (x *Empty) Reset() { + *x = Empty{} + if protoimpl.UnsafeEnabled { + mi := &file_test_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } } -func (m *Empty) XXX_Merge(src proto.Message) { - xxx_messageInfo_Empty.Merge(m, src) -} -func (m *Empty) XXX_Size() int { - return m.Size() -} -func (m *Empty) XXX_DiscardUnknown() { - xxx_messageInfo_Empty.DiscardUnknown(m) -} -var xxx_messageInfo_Empty proto.InternalMessageInfo - -type PingRequest struct { - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` - SleepTimeMs int32 `protobuf:"varint,2,opt,name=sleep_time_ms,json=sleepTimeMs,proto3" json:"sleep_time_ms,omitempty"` - ErrorCodeReturned uint32 `protobuf:"varint,3,opt,name=error_code_returned,json=errorCodeReturned,proto3" json:"error_code_returned,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PingRequest) Reset() { *m = PingRequest{} } -func (m *PingRequest) String() string { return proto.CompactTextString(m) } -func (*PingRequest) ProtoMessage() {} -func (*PingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c161fcfdc0c3ff1e, []int{1} -} -func (m *PingRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *PingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_PingRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalTo(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *PingRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PingRequest.Merge(m, src) -} -func (m *PingRequest) XXX_Size() int { - return m.Size() -} -func (m *PingRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PingRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_PingRequest proto.InternalMessageInfo - -func (m *PingRequest) GetValue() string { - if m != nil { - return m.Value - } - return "" -} +func (*Empty) ProtoMessage() {} -func (m *PingRequest) GetSleepTimeMs() int32 { - if m != nil { - return m.SleepTimeMs - } - return 0 -} - -func (m *PingRequest) GetErrorCodeReturned() uint32 { - if m != nil { - return m.ErrorCodeReturned - } - return 0 -} - -type PingResponse struct { - Value string `protobuf:"bytes,1,opt,name=Value,proto3" json:"Value,omitempty"` - Counter int32 `protobuf:"varint,2,opt,name=counter,proto3" json:"counter,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PingResponse) Reset() { *m = PingResponse{} } -func (m *PingResponse) String() string { return proto.CompactTextString(m) } -func (*PingResponse) ProtoMessage() {} -func (*PingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c161fcfdc0c3ff1e, []int{2} -} -func (m *PingResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *PingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_PingResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalTo(b) - if err != nil { - return nil, err +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_test_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) } - return b[:n], nil - } -} -func (m *PingResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PingResponse.Merge(m, src) -} -func (m *PingResponse) XXX_Size() int { - return m.Size() -} -func (m *PingResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PingResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_PingResponse proto.InternalMessageInfo - -func (m *PingResponse) GetValue() string { - if m != nil { - return m.Value + return ms } - return "" -} - -func (m *PingResponse) GetCounter() int32 { - if m != nil { - return m.Counter - } - return 0 + return mi.MessageOf(x) } -func init() { - proto.RegisterType((*Empty)(nil), "grpc_middleware.testpb.Empty") - proto.RegisterType((*PingRequest)(nil), "grpc_middleware.testpb.PingRequest") - proto.RegisterType((*PingResponse)(nil), "grpc_middleware.testpb.PingResponse") -} - -func init() { proto.RegisterFile("test.proto", fileDescriptor_c161fcfdc0c3ff1e) } - -var fileDescriptor_c161fcfdc0c3ff1e = []byte{ - // 320 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x52, 0xcd, 0x4a, 0x33, 0x31, - 0x14, 0x6d, 0xbe, 0x7e, 0x6d, 0xed, 0xad, 0x5d, 0x18, 0x8b, 0x0c, 0x82, 0xa5, 0x44, 0x17, 0xb3, - 0x1a, 0x8a, 0xee, 0x5d, 0x28, 0xee, 0x14, 0x34, 0x2d, 0x82, 0x82, 0x0c, 0xed, 0xcc, 0xa5, 0x04, - 0x9a, 0x49, 0x4c, 0x32, 0x2d, 0x3e, 0x9f, 0x1b, 0x97, 0x3e, 0x82, 0xf4, 0x49, 0x24, 0x69, 0x85, - 0x2e, 0xb4, 0x74, 0xd1, 0xe5, 0x3d, 0xe7, 0x70, 0x7e, 0x42, 0x00, 0x1c, 0x5a, 0x97, 0x68, 0xa3, - 0x9c, 0xa2, 0x47, 0x13, 0xa3, 0xb3, 0x54, 0x8a, 0x3c, 0x9f, 0xe2, 0x7c, 0x64, 0x30, 0xf1, 0x9c, - 0x1e, 0xb3, 0x06, 0xd4, 0x6e, 0xa4, 0x76, 0x6f, 0x6c, 0x0e, 0xad, 0x7b, 0x51, 0x4c, 0x38, 0xbe, - 0x96, 0x68, 0x1d, 0xed, 0x40, 0x6d, 0x36, 0x9a, 0x96, 0x18, 0x91, 0x1e, 0x89, 0x9b, 0x7c, 0x79, - 0x50, 0x06, 0x6d, 0x3b, 0x45, 0xd4, 0xa9, 0x13, 0x12, 0x53, 0x69, 0xa3, 0x7f, 0x3d, 0x12, 0xd7, - 0x78, 0x2b, 0x80, 0x43, 0x21, 0xf1, 0xce, 0xd2, 0x04, 0x0e, 0xd1, 0x18, 0x65, 0xd2, 0x4c, 0xe5, - 0x98, 0x1a, 0x74, 0xa5, 0x29, 0x30, 0x8f, 0xaa, 0x3d, 0x12, 0xb7, 0xf9, 0x41, 0xa0, 0xae, 0x55, - 0x8e, 0x7c, 0x45, 0xb0, 0x4b, 0xd8, 0x5f, 0x06, 0x5b, 0xad, 0x0a, 0x8b, 0x3e, 0xf9, 0x71, 0x3d, - 0x39, 0x1c, 0x34, 0x82, 0x46, 0xa6, 0xca, 0xc2, 0xa1, 0x59, 0x65, 0xfe, 0x9c, 0xe7, 0xef, 0x55, - 0x68, 0x0d, 0xd1, 0xba, 0x01, 0x9a, 0x99, 0xc8, 0x90, 0x72, 0x68, 0x7a, 0xbf, 0xb0, 0x8a, 0x9e, - 0x24, 0xbf, 0xef, 0x4e, 0x02, 0x7d, 0x7c, 0xf6, 0x17, 0xbd, 0xde, 0x88, 0x55, 0xe8, 0x00, 0xfe, - 0x7b, 0x84, 0x9e, 0x6e, 0xd6, 0x87, 0xa7, 0xdb, 0xda, 0xf4, 0x61, 0x55, 0xd4, 0xbf, 0xc8, 0x76, - 0xce, 0x9b, 0xd7, 0xb0, 0x0a, 0x7d, 0x82, 0x3d, 0xaf, 0xbf, 0x15, 0xd6, 0xed, 0xb4, 0x6b, 0x9f, - 0xd0, 0x17, 0x00, 0x8f, 0x0d, 0x9c, 0xc1, 0x91, 0xdc, 0xa9, 0x79, 0x4c, 0xfa, 0xe4, 0xaa, 0xf3, - 0xb1, 0xe8, 0x92, 0xcf, 0x45, 0x97, 0x7c, 0x2d, 0xba, 0xe4, 0xb9, 0xbe, 0x14, 0x8e, 0xeb, 0xe1, - 0xf3, 0x5e, 0x7c, 0x07, 0x00, 0x00, 0xff, 0xff, 0x92, 0x21, 0xeb, 0x3f, 0xca, 0x02, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// TestServiceClient is the client API for TestService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type TestServiceClient interface { - PingEmpty(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*PingResponse, error) - Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) - PingError(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error) - PingList(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (TestService_PingListClient, error) - PingStream(ctx context.Context, opts ...grpc.CallOption) (TestService_PingStreamClient, error) -} - -type testServiceClient struct { - cc *grpc.ClientConn -} - -func NewTestServiceClient(cc *grpc.ClientConn) TestServiceClient { - return &testServiceClient{cc} -} - -func (c *testServiceClient) PingEmpty(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*PingResponse, error) { - out := new(PingResponse) - err := c.cc.Invoke(ctx, "/grpc_middleware.testpb.TestService/PingEmpty", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { - out := new(PingResponse) - err := c.cc.Invoke(ctx, "/grpc_middleware.testpb.TestService/Ping", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) PingError(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error) { - out := new(Empty) - err := c.cc.Invoke(ctx, "/grpc_middleware.testpb.TestService/PingError", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) PingList(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (TestService_PingListClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[0], "/grpc_middleware.testpb.TestService/PingList", opts...) - if err != nil { - return nil, err - } - x := &testServicePingListClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type TestService_PingListClient interface { - Recv() (*PingResponse, error) - grpc.ClientStream -} - -type testServicePingListClient struct { - grpc.ClientStream -} - -func (x *testServicePingListClient) Recv() (*PingResponse, error) { - m := new(PingResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) PingStream(ctx context.Context, opts ...grpc.CallOption) (TestService_PingStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[1], "/grpc_middleware.testpb.TestService/PingStream", opts...) - if err != nil { - return nil, err - } - x := &testServicePingStreamClient{stream} - return x, nil -} - -type TestService_PingStreamClient interface { - Send(*PingRequest) error - Recv() (*PingResponse, error) - grpc.ClientStream +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_test_proto_rawDescGZIP(), []int{0} } -type testServicePingStreamClient struct { - grpc.ClientStream -} +type PingRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *testServicePingStreamClient) Send(m *PingRequest) error { - return x.ClientStream.SendMsg(m) + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + SleepTimeMs int32 `protobuf:"varint,2,opt,name=sleep_time_ms,json=sleepTimeMs,proto3" json:"sleep_time_ms,omitempty"` + ErrorCodeReturned uint32 `protobuf:"varint,3,opt,name=error_code_returned,json=errorCodeReturned,proto3" json:"error_code_returned,omitempty"` } -func (x *testServicePingStreamClient) Recv() (*PingResponse, error) { - m := new(PingResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err +func (x *PingRequest) Reset() { + *x = PingRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_test_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return m, nil } -// TestServiceServer is the server API for TestService service. -type TestServiceServer interface { - PingEmpty(context.Context, *Empty) (*PingResponse, error) - Ping(context.Context, *PingRequest) (*PingResponse, error) - PingError(context.Context, *PingRequest) (*Empty, error) - PingList(*PingRequest, TestService_PingListServer) error - PingStream(TestService_PingStreamServer) error +func (x *PingRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { - s.RegisterService(&_TestService_serviceDesc, srv) -} +func (*PingRequest) ProtoMessage() {} -func _TestService_PingEmpty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).PingEmpty(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc_middleware.testpb.TestService/PingEmpty", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).PingEmpty(ctx, req.(*Empty)) +func (x *PingRequest) ProtoReflect() protoreflect.Message { + mi := &file_test_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _TestService_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).Ping(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc_middleware.testpb.TestService/Ping", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).Ping(ctx, req.(*PingRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. +func (*PingRequest) Descriptor() ([]byte, []int) { + return file_test_proto_rawDescGZIP(), []int{1} } -func _TestService_PingError_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).PingError(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc_middleware.testpb.TestService/PingError", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).PingError(ctx, req.(*PingRequest)) +func (x *PingRequest) GetValue() string { + if x != nil { + return x.Value } - return interceptor(ctx, in, info, handler) + return "" } -func _TestService_PingList_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(PingRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *PingRequest) GetSleepTimeMs() int32 { + if x != nil { + return x.SleepTimeMs } - return srv.(TestServiceServer).PingList(m, &testServicePingListServer{stream}) -} - -type TestService_PingListServer interface { - Send(*PingResponse) error - grpc.ServerStream -} - -type testServicePingListServer struct { - grpc.ServerStream -} - -func (x *testServicePingListServer) Send(m *PingResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _TestService_PingStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).PingStream(&testServicePingStreamServer{stream}) -} - -type TestService_PingStreamServer interface { - Send(*PingResponse) error - Recv() (*PingRequest, error) - grpc.ServerStream -} - -type testServicePingStreamServer struct { - grpc.ServerStream -} - -func (x *testServicePingStreamServer) Send(m *PingResponse) error { - return x.ServerStream.SendMsg(m) + return 0 } -func (x *testServicePingStreamServer) Recv() (*PingRequest, error) { - m := new(PingRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err +func (x *PingRequest) GetErrorCodeReturned() uint32 { + if x != nil { + return x.ErrorCodeReturned } - return m, nil -} - -var _TestService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc_middleware.testpb.TestService", - HandlerType: (*TestServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "PingEmpty", - Handler: _TestService_PingEmpty_Handler, - }, - { - MethodName: "Ping", - Handler: _TestService_Ping_Handler, - }, - { - MethodName: "PingError", - Handler: _TestService_PingError_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "PingList", - Handler: _TestService_PingList_Handler, - ServerStreams: true, - }, - { - StreamName: "PingStream", - Handler: _TestService_PingStream_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "test.proto", + return 0 } -func (m *Empty) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} +type PingResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Empty) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + Value string `protobuf:"bytes,1,opt,name=Value,proto3" json:"Value,omitempty"` + Counter int32 `protobuf:"varint,2,opt,name=counter,proto3" json:"counter,omitempty"` } -func (m *PingRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err +func (x *PingResponse) Reset() { + *x = PingResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_test_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return dAtA[:n], nil } -func (m *PingRequest) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.Value) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintTest(dAtA, i, uint64(len(m.Value))) - i += copy(dAtA[i:], m.Value) - } - if m.SleepTimeMs != 0 { - dAtA[i] = 0x10 - i++ - i = encodeVarintTest(dAtA, i, uint64(m.SleepTimeMs)) - } - if m.ErrorCodeReturned != 0 { - dAtA[i] = 0x18 - i++ - i = encodeVarintTest(dAtA, i, uint64(m.ErrorCodeReturned)) - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil +func (x *PingResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PingResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} +func (*PingResponse) ProtoMessage() {} -func (m *PingResponse) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.Value) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintTest(dAtA, i, uint64(len(m.Value))) - i += copy(dAtA[i:], m.Value) - } - if m.Counter != 0 { - dAtA[i] = 0x10 - i++ - i = encodeVarintTest(dAtA, i, uint64(m.Counter)) - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) +func (x *PingResponse) ProtoReflect() protoreflect.Message { + mi := &file_test_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return i, nil + return mi.MessageOf(x) } -func encodeVarintTest(dAtA []byte, offset int, v uint64) int { - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return offset + 1 -} -func (m *Empty) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n +// Deprecated: Use PingResponse.ProtoReflect.Descriptor instead. +func (*PingResponse) Descriptor() ([]byte, []int) { + return file_test_proto_rawDescGZIP(), []int{2} } -func (m *PingRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Value) - if l > 0 { - n += 1 + l + sovTest(uint64(l)) - } - if m.SleepTimeMs != 0 { - n += 1 + sovTest(uint64(m.SleepTimeMs)) - } - if m.ErrorCodeReturned != 0 { - n += 1 + sovTest(uint64(m.ErrorCodeReturned)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) +func (x *PingResponse) GetValue() string { + if x != nil { + return x.Value } - return n + return "" } -func (m *PingResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Value) - if l > 0 { - n += 1 + l + sovTest(uint64(l)) - } - if m.Counter != 0 { - n += 1 + sovTest(uint64(m.Counter)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) +func (x *PingResponse) GetCounter() int32 { + if x != nil { + return x.Counter } - return n + return 0 } -func sovTest(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n +var File_test_proto protoreflect.FileDescriptor + +var file_test_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x72, + 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x77, 0x0a, + 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x6c, 0x65, 0x65, 0x70, + 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x11, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x22, 0x3e, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x32, 0xc3, 0x03, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x09, 0x50, 0x69, 0x6e, 0x67, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, + 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x04, 0x50, 0x69, + 0x6e, 0x67, 0x12, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, + 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x51, 0x0a, 0x09, 0x50, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x23, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, + 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x00, 0x12, 0x59, 0x0a, 0x08, 0x50, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, + 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, + 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5d, 0x0a, + 0x0a, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x23, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, + 0x72, 0x65, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x0b, 0x5a, 0x09, + 0x2e, 0x2e, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } -func sozTest(x uint64) (n int) { - return sovTest(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Empty) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Empty: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Empty: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTest(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthTest - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthTest - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PingRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PingRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PingRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTest - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTest - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SleepTimeMs", wireType) - } - m.SleepTimeMs = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SleepTimeMs |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ErrorCodeReturned", wireType) - } - m.ErrorCodeReturned = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ErrorCodeReturned |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipTest(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthTest - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthTest - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } +var ( + file_test_proto_rawDescOnce sync.Once + file_test_proto_rawDescData = file_test_proto_rawDesc +) - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PingResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break +func file_test_proto_rawDescGZIP() []byte { + file_test_proto_rawDescOnce.Do(func() { + file_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_test_proto_rawDescData) + }) + return file_test_proto_rawDescData +} + +var file_test_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_test_proto_goTypes = []interface{}{ + (*Empty)(nil), // 0: grpc_middleware.testpb.Empty + (*PingRequest)(nil), // 1: grpc_middleware.testpb.PingRequest + (*PingResponse)(nil), // 2: grpc_middleware.testpb.PingResponse +} +var file_test_proto_depIdxs = []int32{ + 0, // 0: grpc_middleware.testpb.TestService.PingEmpty:input_type -> grpc_middleware.testpb.Empty + 1, // 1: grpc_middleware.testpb.TestService.Ping:input_type -> grpc_middleware.testpb.PingRequest + 1, // 2: grpc_middleware.testpb.TestService.PingError:input_type -> grpc_middleware.testpb.PingRequest + 1, // 3: grpc_middleware.testpb.TestService.PingList:input_type -> grpc_middleware.testpb.PingRequest + 1, // 4: grpc_middleware.testpb.TestService.PingStream:input_type -> grpc_middleware.testpb.PingRequest + 2, // 5: grpc_middleware.testpb.TestService.PingEmpty:output_type -> grpc_middleware.testpb.PingResponse + 2, // 6: grpc_middleware.testpb.TestService.Ping:output_type -> grpc_middleware.testpb.PingResponse + 0, // 7: grpc_middleware.testpb.TestService.PingError:output_type -> grpc_middleware.testpb.Empty + 2, // 8: grpc_middleware.testpb.TestService.PingList:output_type -> grpc_middleware.testpb.PingResponse + 2, // 9: grpc_middleware.testpb.TestService.PingStream:output_type -> grpc_middleware.testpb.PingResponse + 5, // [5:10] is the sub-list for method output_type + 0, // [0:5] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_test_proto_init() } +func file_test_proto_init() { + if File_test_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Empty); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil } } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PingResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PingResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTest - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTest - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Counter", wireType) - } - m.Counter = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTest - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Counter |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipTest(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthTest - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthTest - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipTest(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTest - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + file_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil } } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTest - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - return iNdEx, nil - case 1: - iNdEx += 8 - return iNdEx, nil - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTest - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } + file_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil } - if length < 0 { - return 0, ErrInvalidLengthTest - } - iNdEx += length - if iNdEx < 0 { - return 0, ErrInvalidLengthTest - } - return iNdEx, nil - case 3: - for { - var innerWire uint64 - var start int = iNdEx - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTest - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - innerWire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - innerWireType := int(innerWire & 0x7) - if innerWireType == 4 { - break - } - next, err := skipTest(dAtA[start:]) - if err != nil { - return 0, err - } - iNdEx = start + next - if iNdEx < 0 { - return 0, ErrInvalidLengthTest - } - } - return iNdEx, nil - case 4: - return iNdEx, nil - case 5: - iNdEx += 4 - return iNdEx, nil - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) } } - panic("unreachable") + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_test_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_test_proto_goTypes, + DependencyIndexes: file_test_proto_depIdxs, + MessageInfos: file_test_proto_msgTypes, + }.Build() + File_test_proto = out.File + file_test_proto_rawDesc = nil + file_test_proto_goTypes = nil + file_test_proto_depIdxs = nil } - -var ( - ErrInvalidLengthTest = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowTest = fmt.Errorf("proto: integer overflow") -) diff --git a/grpctesting/testpb/test.proto b/grpctesting/testpb/test.proto index 85bfd2d66..04dd4e837 100644 --- a/grpctesting/testpb/test.proto +++ b/grpctesting/testpb/test.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package grpc_middleware.testpb; -option go_package = "testpb"; +option go_package = "../testpb"; message Empty { } diff --git a/grpctesting/testpb/test_grpc.pb.go b/grpctesting/testpb/test_grpc.pb.go new file mode 100644 index 000000000..148471a4e --- /dev/null +++ b/grpctesting/testpb/test_grpc.pb.go @@ -0,0 +1,295 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package testpb + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// TestServiceClient is the client API for TestService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type TestServiceClient interface { + PingEmpty(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*PingResponse, error) + Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) + PingError(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error) + PingList(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (TestService_PingListClient, error) + PingStream(ctx context.Context, opts ...grpc.CallOption) (TestService_PingStreamClient, error) +} + +type testServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewTestServiceClient(cc grpc.ClientConnInterface) TestServiceClient { + return &testServiceClient{cc} +} + +func (c *testServiceClient) PingEmpty(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*PingResponse, error) { + out := new(PingResponse) + err := c.cc.Invoke(ctx, "/grpc_middleware.testpb.TestService/PingEmpty", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *testServiceClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) { + out := new(PingResponse) + err := c.cc.Invoke(ctx, "/grpc_middleware.testpb.TestService/Ping", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *testServiceClient) PingError(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/grpc_middleware.testpb.TestService/PingError", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *testServiceClient) PingList(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (TestService_PingListClient, error) { + stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[0], "/grpc_middleware.testpb.TestService/PingList", opts...) + if err != nil { + return nil, err + } + x := &testServicePingListClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type TestService_PingListClient interface { + Recv() (*PingResponse, error) + grpc.ClientStream +} + +type testServicePingListClient struct { + grpc.ClientStream +} + +func (x *testServicePingListClient) Recv() (*PingResponse, error) { + m := new(PingResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *testServiceClient) PingStream(ctx context.Context, opts ...grpc.CallOption) (TestService_PingStreamClient, error) { + stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[1], "/grpc_middleware.testpb.TestService/PingStream", opts...) + if err != nil { + return nil, err + } + x := &testServicePingStreamClient{stream} + return x, nil +} + +type TestService_PingStreamClient interface { + Send(*PingRequest) error + Recv() (*PingResponse, error) + grpc.ClientStream +} + +type testServicePingStreamClient struct { + grpc.ClientStream +} + +func (x *testServicePingStreamClient) Send(m *PingRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *testServicePingStreamClient) Recv() (*PingResponse, error) { + m := new(PingResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// TestServiceServer is the server API for TestService service. +// All implementations must embed UnimplementedTestServiceServer +// for forward compatibility +type TestServiceServer interface { + PingEmpty(context.Context, *Empty) (*PingResponse, error) + Ping(context.Context, *PingRequest) (*PingResponse, error) + PingError(context.Context, *PingRequest) (*Empty, error) + PingList(*PingRequest, TestService_PingListServer) error + PingStream(TestService_PingStreamServer) error + mustEmbedUnimplementedTestServiceServer() +} + +// UnimplementedTestServiceServer must be embedded to have forward compatible implementations. +type UnimplementedTestServiceServer struct { +} + +func (*UnimplementedTestServiceServer) PingEmpty(context.Context, *Empty) (*PingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PingEmpty not implemented") +} +func (*UnimplementedTestServiceServer) Ping(context.Context, *PingRequest) (*PingResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") +} +func (*UnimplementedTestServiceServer) PingError(context.Context, *PingRequest) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method PingError not implemented") +} +func (*UnimplementedTestServiceServer) PingList(*PingRequest, TestService_PingListServer) error { + return status.Errorf(codes.Unimplemented, "method PingList not implemented") +} +func (*UnimplementedTestServiceServer) PingStream(TestService_PingStreamServer) error { + return status.Errorf(codes.Unimplemented, "method PingStream not implemented") +} +func (*UnimplementedTestServiceServer) mustEmbedUnimplementedTestServiceServer() {} + +func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { + s.RegisterService(&_TestService_serviceDesc, srv) +} + +func _TestService_PingEmpty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TestServiceServer).PingEmpty(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc_middleware.testpb.TestService/PingEmpty", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TestServiceServer).PingEmpty(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _TestService_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TestServiceServer).Ping(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc_middleware.testpb.TestService/Ping", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TestServiceServer).Ping(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TestService_PingError_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TestServiceServer).PingError(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc_middleware.testpb.TestService/PingError", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TestServiceServer).PingError(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TestService_PingList_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(PingRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(TestServiceServer).PingList(m, &testServicePingListServer{stream}) +} + +type TestService_PingListServer interface { + Send(*PingResponse) error + grpc.ServerStream +} + +type testServicePingListServer struct { + grpc.ServerStream +} + +func (x *testServicePingListServer) Send(m *PingResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _TestService_PingStream_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(TestServiceServer).PingStream(&testServicePingStreamServer{stream}) +} + +type TestService_PingStreamServer interface { + Send(*PingResponse) error + Recv() (*PingRequest, error) + grpc.ServerStream +} + +type testServicePingStreamServer struct { + grpc.ServerStream +} + +func (x *testServicePingStreamServer) Send(m *PingResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *testServicePingStreamServer) Recv() (*PingRequest, error) { + m := new(PingRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +var _TestService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "grpc_middleware.testpb.TestService", + HandlerType: (*TestServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "PingEmpty", + Handler: _TestService_PingEmpty_Handler, + }, + { + MethodName: "Ping", + Handler: _TestService_Ping_Handler, + }, + { + MethodName: "PingError", + Handler: _TestService_PingError_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "PingList", + Handler: _TestService_PingList_Handler, + ServerStreams: true, + }, + { + StreamName: "PingStream", + Handler: _TestService_PingStream_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "test.proto", +} diff --git a/interceptors/client_test.go b/interceptors/client_test.go index d9e1819bc..d1e231718 100644 --- a/interceptors/client_test.go +++ b/interceptors/client_test.go @@ -21,8 +21,7 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/v2/grpctesting/testpb" ) -type mockedReporter struct { - m *sync.Mutex +type mockReport struct { typ GRPCType svcName, methodName string @@ -31,32 +30,98 @@ type mockedReporter struct { postMsgReceives []error } -func (m *mockedReporter) PostCall(err error, _ time.Duration) { +type mockReportable struct { + m sync.Mutex + curr *mockReport + + reports []*mockReport +} + +// Equal replaces require.Equal as google.golang.org/grpc/status errors are not easily comparable. +func (m *mockReportable) Equal(t *testing.T, expected []*mockReport) { + require.Len(t, expected, len(m.reports)) + for i, e := range m.reports { + require.Equal(t, expected[i].typ, e.typ, "%v", i) + require.Equal(t, expected[i].svcName, e.svcName, "%v", i) + require.Equal(t, expected[i].methodName, e.methodName, "%v", i) + + require.Len(t, expected[i].postCalls, len(e.postCalls), "%v", i) + for k, err := range e.postCalls { + if expected[i].postCalls[k] == nil { + require.NoError(t, err) + continue + } + require.Equal(t, expected[i].postCalls[k].Error(), err.Error(), "%v %v", i, k) + } + require.Len(t, expected[i].postMsgSends, len(e.postMsgSends), "%v", i) + for k, err := range e.postMsgSends { + if expected[i].postMsgSends[k] == nil { + require.NoError(t, err) + continue + } + require.Equal(t, expected[i].postMsgSends[k].Error(), err.Error(), "%v %v", i, k) + } + require.Len(t, expected[i].postMsgReceives, len(e.postMsgReceives), "%v", i) + for k, err := range e.postMsgReceives { + if expected[i].postMsgReceives[k] == nil { + require.NoError(t, err) + continue + } + require.Equal(t, expected[i].postMsgReceives[k].Error(), err.Error(), "%v %v", i, k) + } + + } + +} + +func (m *mockReportable) requireOneReportWithRetry(ctx context.Context, t *testing.T, expected *mockReport) { + for { + select { + case <-ctx.Done(): + t.Fatal("timeout waiting for mockReport") + case <-time.After(200 * time.Millisecond): + } + + m.m.Lock() + if len(m.reports) == 0 { + m.m.Unlock() + continue + } + defer m.m.Unlock() + break + } + // Even without reading, we should get initial mockReport. + require.Equal(t, []*mockReport{expected}, m.reports) +} + +func (m *mockReportable) PostCall(err error, _ time.Duration) { m.m.Lock() defer m.m.Unlock() - m.postCalls = append(m.postCalls, err) + m.curr.postCalls = append(m.curr.postCalls, err) } -func (m *mockedReporter) PostMsgSend(_ interface{}, err error, _ time.Duration) { +func (m *mockReportable) PostMsgSend(_ interface{}, err error, _ time.Duration) { m.m.Lock() defer m.m.Unlock() - m.postMsgSends = append(m.postMsgSends, err) + m.curr.postMsgSends = append(m.curr.postMsgSends, err) } -func (m *mockedReporter) PostMsgReceive(_ interface{}, err error, _ time.Duration) { +func (m *mockReportable) PostMsgReceive(_ interface{}, err error, _ time.Duration) { m.m.Lock() defer m.m.Unlock() - m.postMsgReceives = append(m.postMsgReceives, err) + m.curr.postMsgReceives = append(m.curr.postMsgReceives, err) } -type mockClientReportable struct { - reports []*mockedReporter +func (m *mockReportable) ClientReporter(ctx context.Context, _ interface{}, typ GRPCType, serviceName string, methodName string) (Reporter, context.Context) { + m.curr = &mockReport{typ: typ, svcName: serviceName, methodName: methodName} + m.reports = append(m.reports, m.curr) + return m, ctx } -func (m *mockClientReportable) ClientReporter(ctx context.Context, _ interface{}, typ GRPCType, serviceName string, methodName string) (Reporter, context.Context) { - mock := &mockedReporter{m: &sync.Mutex{}, typ: typ, svcName: serviceName, methodName: methodName} - m.reports = append(m.reports, mock) - return mock, ctx +func (m *mockReportable) ServerReporter(ctx context.Context, _ interface{}, typ GRPCType, serviceName string, methodName string) (Reporter, context.Context) { + m.curr = &mockReport{typ: typ, svcName: serviceName, methodName: methodName} + m.reports = append(m.reports, m.curr) + return m, ctx } func TestClientInterceptorSuite(t *testing.T) { @@ -73,27 +138,31 @@ type ClientInterceptorTestSuite struct { ctx context.Context cancel context.CancelFunc - mock *mockClientReportable + mock *mockReportable + + stopped chan error } func (s *ClientInterceptorTestSuite) SetupSuite() { var err error - - s.mock = &mockClientReportable{} + s.stopped = make(chan error) + s.mock = &mockReportable{} s.serverListener, err = net.Listen("tcp", "127.0.0.1:0") require.NoError(s.T(), err, "must be able to allocate a port for serverListener") - // This is the point where we hook up the interceptor s.server = grpc.NewServer() testpb.RegisterTestServiceServer(s.server, &grpctesting.TestPingService{T: s.T()}) go func() { - _ = s.server.Serve(s.serverListener) + defer close(s.stopped) + s.stopped <- s.server.Serve(s.serverListener) }() ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() + + // This is the point where we hook up the interceptor. s.clientConn, err = grpc.DialContext( ctx, s.serverListener.Addr().String(), @@ -107,9 +176,14 @@ func (s *ClientInterceptorTestSuite) SetupSuite() { } func (s *ClientInterceptorTestSuite) SetupTest() { + select { + case err := <-s.stopped: + s.T().Fatal("gRPC server stopped prematurely", err) + default: + } + // Make all RPC calls last at most 2 sec, meaning all async issues or deadlock will not kill tests. s.ctx, s.cancel = context.WithTimeout(context.TODO(), 2*time.Second) - s.mock.reports = s.mock.reports[:0] } @@ -118,11 +192,11 @@ func (s *ClientInterceptorTestSuite) TearDownSuite() { s.server.Stop() s.T().Logf("stopped grpc.Server at: %v", s.serverListener.Addr().String()) _ = s.serverListener.Close() - } if s.clientConn != nil { _ = s.clientConn.Close() } + <-s.stopped } func (s *ClientInterceptorTestSuite) TearDownTest() { @@ -132,62 +206,61 @@ func (s *ClientInterceptorTestSuite) TearDownTest() { func (s *ClientInterceptorTestSuite) TestUnaryReporting() { _, err := s.testClient.PingEmpty(s.ctx, &testpb.Empty{}) // should return with code=OK require.NoError(s.T(), err) - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: Unary, svcName: testpb.TestServiceFullName, methodName: "PingEmpty", postCalls: []error{nil}, postMsgReceives: []error{nil}, postMsgSends: []error{nil}, - }}, s.mock.reports) + }}) s.mock.reports = s.mock.reports[:0] // Reset. _, err = s.testClient.PingError(s.ctx, &testpb.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition require.Error(s.T(), err) - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: Unary, svcName: testpb.TestServiceFullName, methodName: "PingError", postCalls: []error{status.Errorf(codes.FailedPrecondition, "Userspace error.")}, postMsgReceives: []error{status.Errorf(codes.FailedPrecondition, "Userspace error.")}, postMsgSends: []error{nil}, - }}, s.mock.reports) + }}) } -func (s *ClientInterceptorTestSuite) TestStartedStreamingReporting() { +func (s *ClientInterceptorTestSuite) TestStartedListReporting() { _, err := s.testClient.PingList(s.ctx, &testpb.PingRequest{}) require.NoError(s.T(), err) - // Even without reading, we should get initial report. - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + + // Even without reading, we should get initial mockReport. + s.mock.Equal(s.T(), []*mockReport{{ typ: ServerStream, svcName: testpb.TestServiceFullName, methodName: "PingList", postMsgSends: []error{nil}, - }}, s.mock.reports) + }}) - _, err = s.testClient.PingList(s.ctx, &testpb.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition + _, err = s.testClient.PingList(s.ctx, &testpb.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) require.NoError(s.T(), err, "PingList must not fail immediately") - // Even without reading, we should get initial report. - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + + // Even without reading, we should get initial mockReport. + s.mock.Equal(s.T(), []*mockReport{{ typ: ServerStream, svcName: testpb.TestServiceFullName, methodName: "PingList", postMsgSends: []error{nil}, }, { - m: &sync.Mutex{}, typ: ServerStream, svcName: testpb.TestServiceFullName, methodName: "PingList", postMsgSends: []error{nil}, - }}, s.mock.reports) + }}) } -func (s *ClientInterceptorTestSuite) TestStreamingReporting() { - ss, _ := s.testClient.PingList(s.ctx, &testpb.PingRequest{}) // should return with code=OK +func (s *ClientInterceptorTestSuite) TestListReporting() { + ss, err := s.testClient.PingList(s.ctx, &testpb.PingRequest{}) + require.NoError(s.T(), err) + // Do a read, just for kicks. count := 0 for { @@ -200,41 +273,46 @@ func (s *ClientInterceptorTestSuite) TestStreamingReporting() { } require.EqualValues(s.T(), grpctesting.ListResponseCount, count, "Number of received msg on the wire must match") - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: ServerStream, svcName: testpb.TestServiceFullName, methodName: "PingList", postCalls: []error{io.EOF}, postMsgReceives: append(make([]error, grpctesting.ListResponseCount), io.EOF), postMsgSends: []error{nil}, - }}, s.mock.reports) + }}) s.mock.reports = s.mock.reports[:0] // Reset. - ss, err := s.testClient.PingList(s.ctx, &testpb.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition + ss, err = s.testClient.PingList(s.ctx, &testpb.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) require.NoError(s.T(), err, "PingList must not fail immediately") // Do a read, just to propagate errors. _, err = ss.Recv() + require.Error(s.T(), err) st, _ := status.FromError(err) require.Equal(s.T(), codes.FailedPrecondition, st.Code(), "Recv must return FailedPrecondition, otherwise the test is wrong") - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + // Next same. + _, err = ss.Recv() + require.Error(s.T(), err) + st, _ = status.FromError(err) + require.Equal(s.T(), codes.FailedPrecondition, st.Code(), "Recv must return FailedPrecondition, otherwise the test is wrong") + + s.mock.Equal(s.T(), []*mockReport{{ typ: ServerStream, svcName: testpb.TestServiceFullName, methodName: "PingList", - postCalls: []error{status.Errorf(codes.FailedPrecondition, "foobar")}, - postMsgReceives: []error{status.Errorf(codes.FailedPrecondition, "foobar")}, + postCalls: []error{status.Errorf(codes.FailedPrecondition, "foobar"), status.Errorf(codes.FailedPrecondition, "foobar")}, + postMsgReceives: []error{status.Errorf(codes.FailedPrecondition, "foobar"), status.Errorf(codes.FailedPrecondition, "foobar")}, postMsgSends: []error{nil}, - }}, s.mock.reports) + }}) } func (s *ClientInterceptorTestSuite) TestBiStreamingReporting() { ss, err := s.testClient.PingStream(s.ctx) require.NoError(s.T(), err) - wg := sync.WaitGroup{} + wg := sync.WaitGroup{} defer func() { _ = ss.CloseSend() wg.Wait() @@ -264,14 +342,12 @@ func (s *ClientInterceptorTestSuite) TestBiStreamingReporting() { wg.Wait() require.EqualValues(s.T(), count, 100, "Number of received msg on the wire must match") - - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: BidiStream, svcName: testpb.TestServiceFullName, methodName: "PingStream", postCalls: []error{io.EOF}, postMsgReceives: append(make([]error, 100), io.EOF), postMsgSends: make([]error, 100), - }}, s.mock.reports) + }}) } diff --git a/interceptors/logging/interceptors_test.go b/interceptors/logging/interceptors_test.go index 9cd0a5740..c1e0b7ac4 100644 --- a/interceptors/logging/interceptors_test.go +++ b/interceptors/logging/interceptors_test.go @@ -86,34 +86,45 @@ func (l LogLines) Swap(i, j int) { l[i], l[j] = l[j], l[i] } -type mockStdOutput struct { - // All the output of the mockLogger is shared in a single - // shared slice. Behaves like a stdout which contains all - // the log lines. - lines LogLines +type output struct { m sync.Mutex + lines LogLines } -func (l *mockStdOutput) Lines() LogLines { - l.m.Lock() - defer l.m.Unlock() +func (o *output) Lines() LogLines { + o.m.Lock() + defer o.m.Unlock() - retLines := make(LogLines, len(l.lines)) - copy(retLines, l.lines) + retLines := make(LogLines, len(o.lines)) + copy(retLines, o.lines) return retLines } +func (o *output) Append(lines ...LogLine) { + o.m.Lock() + defer o.m.Unlock() + + o.lines = append(o.lines, lines...) +} +func (o *output) Reset() { + o.m.Lock() + defer o.m.Unlock() + + o.lines = o.lines[:0] +} + type mockLogger struct { - *mockStdOutput + o *output fields logging.Fields } -func (l *mockLogger) Log(lvl logging.Level, msg string) { - l.m.Lock() - defer l.m.Unlock() +func newMockLogger() *mockLogger { + return &mockLogger{o: &output{}} +} +func (l *mockLogger) Log(lvl logging.Level, msg string) { line := LogLine{ lvl: lvl, msg: msg, @@ -123,14 +134,11 @@ func (l *mockLogger) Log(lvl logging.Level, msg string) { for i := 0; i < len(l.fields); i += 2 { line.fields[l.fields[i]] = l.fields[i+1] } - l.lines = append(l.lines, line) + l.o.Append(line) } func (l *mockLogger) With(fields ...string) logging.Logger { - l.m.Lock() - defer l.m.Unlock() - - return &mockLogger{mockStdOutput: l.mockStdOutput, fields: append(append(logging.Fields{}, l.fields...), fields...)} + return &mockLogger{o: l.o, fields: append(append(logging.Fields{}, l.fields...), fields...)} } type baseLoggingSuite struct { @@ -140,7 +148,7 @@ type baseLoggingSuite struct { func (s *baseLoggingSuite) SetupTest() { s.logger.fields = s.logger.fields[:0] - s.logger.lines = s.logger.lines[:0] + s.logger.o.Reset() } func customClientCodeToLevel(c codes.Code) logging.Level { @@ -163,7 +171,7 @@ func TestSuite(t *testing.T) { s := &loggingClientServerSuite{ &baseLoggingSuite{ - logger: &mockLogger{mockStdOutput: &mockStdOutput{}}, + logger: newMockLogger(), InterceptorTestSuite: &grpctesting.InterceptorTestSuite{ TestService: &grpctesting.TestPingService{T: t}, }, @@ -196,7 +204,7 @@ func (s *loggingClientServerSuite) TestPing() { _, err := s.Client.Ping(s.SimpleCtx(), goodPing) assert.NoError(s.T(), err, "there must be not be an on a successful call") - lines := s.logger.Lines() + lines := s.logger.o.Lines() sort.Sort(lines) require.Len(s.T(), lines, 4) @@ -241,7 +249,7 @@ func (s *loggingClientServerSuite) TestPingList() { } require.NoError(s.T(), err, "reading stream should not fail") } - lines := s.logger.Lines() + lines := s.logger.o.Lines() sort.Sort(lines) require.Len(s.T(), lines, 4) @@ -309,7 +317,7 @@ func (s *loggingClientServerSuite) TestPingError_WithCustomLevels() { s.SimpleCtx(), &testpb.PingRequest{Value: "something", ErrorCodeReturned: uint32(tcase.code)}) require.Error(t, err, "each call here must return an error") - lines := s.logger.Lines() + lines := s.logger.o.Lines() sort.Sort(lines) require.Len(t, lines, 4) @@ -350,7 +358,7 @@ func TestCustomDurationSuite(t *testing.T) { s := &loggingCustomDurationSuite{ baseLoggingSuite: &baseLoggingSuite{ - logger: &mockLogger{mockStdOutput: &mockStdOutput{}}, + logger: newMockLogger(), InterceptorTestSuite: &grpctesting.InterceptorTestSuite{ TestService: &grpctesting.TestPingService{T: t}, }, @@ -375,7 +383,7 @@ func (s *loggingCustomDurationSuite) TestPing_HasOverriddenDuration() { _, err := s.Client.Ping(s.SimpleCtx(), goodPing) assert.NoError(s.T(), err, "there must be not be an on a successful call") - lines := s.logger.Lines() + lines := s.logger.o.Lines() sort.Sort(lines) require.Len(s.T(), lines, 4) @@ -421,7 +429,7 @@ func (s *loggingCustomDurationSuite) TestPingList_HasOverriddenDuration() { require.NoError(s.T(), err, "reading stream should not fail") } - lines := s.logger.Lines() + lines := s.logger.o.Lines() sort.Sort(lines) require.Len(s.T(), lines, 4) @@ -474,7 +482,7 @@ func TestCustomDeciderSuite(t *testing.T) { s := &loggingCustomDeciderSuite{ baseLoggingSuite: &baseLoggingSuite{ - logger: &mockLogger{mockStdOutput: &mockStdOutput{}}, + logger: newMockLogger(), InterceptorTestSuite: &grpctesting.InterceptorTestSuite{ TestService: &grpctesting.TestPingService{T: t}, }, @@ -499,7 +507,7 @@ func (s *loggingCustomDeciderSuite) TestPing_HasCustomDecider() { _, err := s.Client.Ping(s.SimpleCtx(), goodPing) require.NoError(s.T(), err, "there must be not be an error on a successful call") - require.Len(s.T(), s.logger.Lines(), 0) // Decider should suppress. + require.Len(s.T(), s.logger.o.Lines(), 0) // Decider should suppress. } func (s *loggingCustomDeciderSuite) TestPingError_HasCustomDecider() { @@ -510,7 +518,7 @@ func (s *loggingCustomDeciderSuite) TestPingError_HasCustomDecider() { &testpb.PingRequest{Value: "something", ErrorCodeReturned: uint32(code)}) require.Error(s.T(), err, "each call here must return an error") - lines := s.logger.Lines() + lines := s.logger.o.Lines() sort.Sort(lines) require.Len(s.T(), lines, 4) @@ -558,5 +566,5 @@ func (s *loggingCustomDeciderSuite) TestPingList_HasCustomDecider() { require.NoError(s.T(), err, "reading stream should not fail") } - require.Len(s.T(), s.logger.Lines(), 0) // Decider should suppress. + require.Len(s.T(), s.logger.o.Lines(), 0) // Decider should suppress. } diff --git a/interceptors/logging/logging.go b/interceptors/logging/logging.go index 67d6861bd..8ab7c8b54 100644 --- a/interceptors/logging/logging.go +++ b/interceptors/logging/logging.go @@ -5,11 +5,10 @@ package logging import ( "context" - "io" - "github.com/golang/protobuf/proto" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors" ) @@ -78,7 +77,7 @@ type ClientPayloadLoggingDecider func(ctx context.Context, fullMethodName string // JsonPbMarshaller is a marshaller that serializes protobuf messages. type JsonPbMarshaler interface { - Marshal(out io.Writer, pb proto.Message) error + Marshal(pb proto.Message) ([]byte, error) } // Logger is unified interface that we used for all our interceptors. Official implementations are available under diff --git a/interceptors/logging/payload.go b/interceptors/logging/payload.go index ea5e2ceec..ac290ef58 100644 --- a/interceptors/logging/payload.go +++ b/interceptors/logging/payload.go @@ -3,23 +3,16 @@ package logging import ( "bytes" "context" - "fmt" "time" - "github.com/golang/protobuf/jsonpb" - "github.com/golang/protobuf/proto" "google.golang.org/grpc" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/tags" ) -var ( - // JsonPbMarshaller is the marshaller used for serializing protobuf messages. - // If needed, this variable can be reassigned with a different marshaller with the same Marshal() signature. - JsonPbMarshaller JsonPbMarshaler = &jsonpb.Marshaler{} -) - type serverPayloadReporter struct { ctx context.Context logger Logger @@ -31,18 +24,30 @@ func (c *serverPayloadReporter) PostMsgSend(req interface{}, err error, duration if err != nil { return } + + p, ok := req.(proto.Message) + if !ok { + // TODO(bwplotka): Panic / log err? + return + } logger := c.logger.With(extractFields(tags.Extract(c.ctx))...) // For server send message is the response. - logProtoMessageAsJson(logger.With("grpc.send.duration", duration.String()), req, "grpc.response.content", "response payload logged as grpc.response.content field") + logProtoMessageAsJson(logger.With("grpc.send.duration", duration.String()), p, "grpc.response.content", "response payload logged as grpc.response.content field") } func (c *serverPayloadReporter) PostMsgReceive(reply interface{}, err error, duration time.Duration) { if err != nil { return } + + p, ok := reply.(proto.Message) + if !ok { + // TODO(bwplotka): Panic / log err? + return + } logger := c.logger.With(extractFields(tags.Extract(c.ctx))...) // For server recv message is the request. - logProtoMessageAsJson(logger.With("grpc.recv.duration", duration.String()), reply, "grpc.request.content", "request payload logged as grpc.request.content field") + logProtoMessageAsJson(logger.With("grpc.recv.duration", duration.String()), p, "grpc.request.content", "request payload logged as grpc.request.content field") } type clientPayloadReporter struct { @@ -56,16 +61,28 @@ func (c *clientPayloadReporter) PostMsgSend(req interface{}, err error, duration if err != nil { return } + + p, ok := req.(proto.Message) + if !ok { + // TODO(bwplotka): Panic / log err? + return + } logger := c.logger.With(extractFields(tags.Extract(c.ctx))...) - logProtoMessageAsJson(logger.With("grpc.send.duration", duration.String()), req, "grpc.request.content", "request payload logged as grpc.request.content field") + logProtoMessageAsJson(logger.With("grpc.send.duration", duration.String()), p, "grpc.request.content", "request payload logged as grpc.request.content field") } func (c *clientPayloadReporter) PostMsgReceive(reply interface{}, err error, duration time.Duration) { if err != nil { return } + + p, ok := reply.(proto.Message) + if !ok { + // TODO(bwplotka): Panic / log err? + return + } logger := c.logger.With(extractFields(tags.Extract(c.ctx))...) - logProtoMessageAsJson(logger.With("grpc.recv.duration", duration.String()), reply, "grpc.response.content", "response payload logged as grpc.response.content field") + logProtoMessageAsJson(logger.With("grpc.recv.duration", duration.String()), p, "grpc.response.content", "response payload logged as grpc.response.content field") } type payloadReportable struct { @@ -127,26 +144,14 @@ func PayloadStreamClientInterceptor(logger Logger, decider ClientPayloadLoggingD return interceptors.StreamClientInterceptor(&payloadReportable{logger: logger, clientDecider: decider}) } -func logProtoMessageAsJson(logger Logger, pbMsg interface{}, key string, msg string) { - if p, ok := pbMsg.(proto.Message); ok { - payload, err := (&jsonpbObjectMarshaler{pb: p}).marshalJSON() - if err != nil { - logger = logger.With(key, err.Error()) - } else { - logger = logger.With(key, string(payload)) - } - logger.Log(INFO, msg) - } -} - -type jsonpbObjectMarshaler struct { - pb proto.Message -} - -func (j *jsonpbObjectMarshaler) marshalJSON() ([]byte, error) { - b := &bytes.Buffer{} - if err := JsonPbMarshaller.Marshal(b, j.pb); err != nil { - return nil, fmt.Errorf("jsonpb serializer failed: %v", err) +func logProtoMessageAsJson(logger Logger, pbMsg proto.Message, key string, msg string) { + payload, err := protojson.Marshal(pbMsg) + if err != nil { + logger = logger.With(key, err.Error()) + } else { + // Trim spaces for deterministic output. + // See: https://github.com/golang/protobuf/issues/1269 + logger = logger.With(key, string(bytes.Replace(payload, []byte{' '}, []byte{}, -1))) } - return b.Bytes(), nil + logger.Log(INFO, msg) } diff --git a/interceptors/logging/payload_test.go b/interceptors/logging/payload_test.go index e2d24c859..6d212085e 100644 --- a/interceptors/logging/payload_test.go +++ b/interceptors/logging/payload_test.go @@ -3,9 +3,7 @@ package logging_test import ( "context" "fmt" - "runtime" "sort" - "strings" "testing" "github.com/stretchr/testify/assert" @@ -26,17 +24,12 @@ type loggingPayloadSuite struct { } func TestPayloadSuite(t *testing.T) { - if strings.HasPrefix(runtime.Version(), "go1.7") { - t.Skipf("Skipping due to json.RawMessage incompatibility with go1.7") - return - } - alwaysLoggingDeciderServer := func(ctx context.Context, fullMethodName string, servingObject interface{}) bool { return true } alwaysLoggingDeciderClient := func(ctx context.Context, fullMethodName string) bool { return true } s := &loggingPayloadSuite{ baseLoggingSuite: &baseLoggingSuite{ - logger: &mockLogger{mockStdOutput: &mockStdOutput{}}, + logger: newMockLogger(), InterceptorTestSuite: &grpctesting.InterceptorTestSuite{ TestService: &grpctesting.TestPingService{T: t}, }, @@ -61,7 +54,7 @@ func (s *loggingPayloadSuite) TestPing_LogsBothRequestAndResponse() { _, err := s.Client.Ping(s.SimpleCtx(), goodPing) require.NoError(s.T(), err, "there must be not be an error on a successful call") - lines := s.logger.Lines() + lines := s.logger.o.Lines() require.Len(s.T(), lines, 4) s.assertPayloadLogLinesForMessage(lines, "Ping", interceptors.Unary) } @@ -135,14 +128,14 @@ func (s *loggingPayloadSuite) TestPingError_LogsOnlyRequestsOnError() { _, err := s.Client.PingError(s.SimpleCtx(), &testpb.PingRequest{Value: "something", ErrorCodeReturned: uint32(4)}) require.Error(s.T(), err, "there must be an error on an unsuccessful call") - lines := s.logger.Lines() + lines := s.logger.o.Lines() sort.Sort(lines) require.Len(s.T(), lines, 2) // Only client & server requests. - clientRequestLogLine := lines[0] assert.Equal(s.T(), logging.INFO, clientRequestLogLine.lvl) assert.Equal(s.T(), "request payload logged as grpc.request.content field", clientRequestLogLine.msg) clientRequestFields := assertStandardFields(s.T(), logging.KindClientFieldValue, clientRequestLogLine.fields, "PingError", interceptors.Unary) + clientRequestFields.AssertNextFieldNotEmpty(s.T(), "grpc.start_time"). AssertNextFieldNotEmpty(s.T(), "grpc.send.duration"). AssertNextField(s.T(), "grpc.request.content", `{"value":"something","errorCodeReturned":4}`). @@ -163,7 +156,7 @@ func (s *loggingPayloadSuite) TestPingStream_LogsAllRequestsAndResponses() { } require.NoError(s.T(), stream.CloseSend(), "no error on send stream") - lines := s.logger.Lines() + lines := s.logger.o.Lines() require.Len(s.T(), lines, 4*messagesExpected) s.assertPayloadLogLinesForMessage(lines, "PingStream", interceptors.BidiStream) } diff --git a/interceptors/server_test.go b/interceptors/server_test.go index 5fa9a125f..afe7eb435 100644 --- a/interceptors/server_test.go +++ b/interceptors/server_test.go @@ -21,20 +21,6 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/v2/grpctesting/testpb" ) -type mockServerReportable struct { - m sync.Mutex - reports []*mockedReporter -} - -func (m *mockServerReportable) ServerReporter(ctx context.Context, _ interface{}, typ GRPCType, serviceName string, methodName string) (Reporter, context.Context) { - mock := &mockedReporter{m: &m.m, typ: typ, svcName: serviceName, methodName: methodName} - m.m.Lock() - defer m.m.Unlock() - - m.reports = append(m.reports, mock) - return mock, ctx -} - func TestServerInterceptorSuite(t *testing.T) { suite.Run(t, &ServerInterceptorTestSuite{}) } @@ -49,13 +35,13 @@ type ServerInterceptorTestSuite struct { ctx context.Context cancel context.CancelFunc - mock *mockServerReportable + mock *mockReportable } func (s *ServerInterceptorTestSuite) SetupSuite() { var err error - s.mock = &mockServerReportable{} + s.mock = &mockReportable{} s.serverListener, err = net.Listen("tcp", "127.0.0.1:0") require.NoError(s.T(), err, "must be able to allocate a port for serverListener") @@ -105,28 +91,26 @@ func (s *ServerInterceptorTestSuite) TearDownTest() { func (s *ServerInterceptorTestSuite) TestUnaryReporting() { _, err := s.testClient.PingEmpty(s.ctx, &testpb.Empty{}) // should return with code=OK require.NoError(s.T(), err) - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: Unary, svcName: testpb.TestServiceFullName, methodName: "PingEmpty", postCalls: []error{nil}, postMsgReceives: []error{nil}, postMsgSends: []error{nil}, - }}, s.mock.reports) + }}) s.mock.reports = s.mock.reports[:0] // Reset. _, err = s.testClient.PingError(s.ctx, &testpb.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition require.Error(s.T(), err) - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: Unary, svcName: testpb.TestServiceFullName, methodName: "PingError", postCalls: []error{status.Errorf(codes.FailedPrecondition, "Userspace error.")}, postMsgReceives: []error{nil}, postMsgSends: []error{status.Errorf(codes.FailedPrecondition, "Userspace error.")}, - }}, s.mock.reports) + }}) } func (s *ServerInterceptorTestSuite) TestStreamingReports() { @@ -142,21 +126,20 @@ func (s *ServerInterceptorTestSuite) TestStreamingReports() { count++ } require.EqualValues(s.T(), grpctesting.ListResponseCount, count, "Number of received msg on the wire must match") - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: ServerStream, svcName: testpb.TestServiceFullName, methodName: "PingList", postCalls: []error{nil}, postMsgReceives: []error{nil}, postMsgSends: make([]error, grpctesting.ListResponseCount), - }}, s.mock.reports) + }}) s.mock.reports = s.mock.reports[:0] // Reset. _, err := s.testClient.PingList(s.ctx, &testpb.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition require.NoError(s.T(), err, "PingList must not fail immediately") - s.mock.requireOneReportWithRetry(s.ctx, s.T(), &mockedReporter{ + s.mock.requireOneReportWithRetry(s.ctx, s.T(), &mockReport{ typ: ServerStream, svcName: testpb.TestServiceFullName, methodName: "PingList", @@ -165,27 +148,6 @@ func (s *ServerInterceptorTestSuite) TestStreamingReports() { }) } -func (m *mockServerReportable) requireOneReportWithRetry(ctx context.Context, t *testing.T, expected *mockedReporter) { - for { - select { - case <-ctx.Done(): - t.Fatal("timeout waiting for report") - case <-time.After(200 * time.Millisecond): - } - - m.m.Lock() - if len(m.reports) == 0 { - m.m.Unlock() - continue - } - defer m.m.Unlock() - break - } - expected.m = &m.m - // Even without reading, we should get initial report. - require.Equal(t, []*mockedReporter{expected}, m.reports) -} - func (s *ServerInterceptorTestSuite) TestBiStreamingReporting() { ss, err := s.testClient.PingStream(s.ctx) require.NoError(s.T(), err) @@ -221,13 +183,12 @@ func (s *ServerInterceptorTestSuite) TestBiStreamingReporting() { require.EqualValues(s.T(), count, 100, "Number of received msg on the wire must match") - require.Equal(s.T(), []*mockedReporter{{ - m: &sync.Mutex{}, + s.mock.Equal(s.T(), []*mockReport{{ typ: BidiStream, svcName: testpb.TestServiceFullName, methodName: "PingStream", postCalls: []error{nil}, postMsgReceives: append(make([]error, 100), io.EOF), postMsgSends: make([]error, 100), - }}, s.mock.reports) + }}) } diff --git a/interceptors/tags/fieldextractor.go b/interceptors/tags/fieldextractor.go index 6e20fca57..1d0f2172b 100644 --- a/interceptors/tags/fieldextractor.go +++ b/interceptors/tags/fieldextractor.go @@ -34,12 +34,7 @@ func CodeGenRequestFieldExtractor(_ string, req interface{}) map[string]string { } // TagBasedRequestFieldExtractor is a function that relies on Go struct tags to export log fields from requests. -// These are usually coming from a protoc-plugin, such as Gogo protobuf. -// -// message Metadata { -// repeated string tags = 1 [ (gogoproto.moretags) = "log_field:\"meta_tags\"" ]; -// } -// +// TODO(bwplotka): Add tests/examples https://github.com/grpc-ecosystem/go-grpc-middleware/issues/382 // The tagName is configurable using the tagName variable. Here it would be "log_field". func TagBasedRequestFieldExtractor(tagName string) RequestFieldExtractorFunc { return func(fullMethod string, req interface{}) map[string]string { diff --git a/interceptors/tags/fieldextractor_test.go b/interceptors/tags/fieldextractor_test.go index 93dd76040..3fdd3c11f 100644 --- a/interceptors/tags/fieldextractor_test.go +++ b/interceptors/tags/fieldextractor_test.go @@ -5,73 +5,17 @@ package tags_test import ( "testing" - "time" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/grpc-ecosystem/go-grpc-middleware/v2/grpctesting/gogotestpb" "github.com/grpc-ecosystem/go-grpc-middleware/v2/grpctesting/testpb" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/tags" ) +// TODO(bwplotka): Add tests/examples https://github.com/grpc-ecosystem/go-grpc-middleware/issues/382 func TestCodeGenRequestLogFieldExtractor_ManualIsDeclared(t *testing.T) { req := &testpb.PingRequest{Value: "my_value"} valMap := tags.CodeGenRequestFieldExtractor("", req) require.Len(t, valMap, 1, "PingRequest should have a ExtractLogFields method declared in test.manual_extractfields.pb") require.EqualValues(t, valMap, map[string]string{"value": "my_value"}) } - -func TestTaggedRequestFiledExtractor_PingRequest(t *testing.T) { - req := &gogotestpb.PingRequest{ - Ping: &gogotestpb.Ping{ - Id: &gogotestpb.PingId{ - Id: 1337, // logfield is ping_id - }, - Value: "something", - }, - Meta: &gogotestpb.Metadata{ - Tags: []string{"tagone", "tagtwo"}, // logfield is meta_tags - }, - } - valMap := tags.TagBasedRequestFieldExtractor("log_field")("", req) - assert.EqualValues(t, "1337", valMap["ping_id"]) - assert.EqualValues(t, "[tagone tagtwo]", valMap["meta_tags"]) -} - -func TestTaggedRequestFiledExtractor_PongRequest(t *testing.T) { - req := &gogotestpb.PongRequest{ - Pong: &gogotestpb.Pong{ - Id: "some_id", - }, - Meta: &gogotestpb.Metadata{ - Tags: []string{"tagone", "tagtwo"}, // logfield is meta_tags - }, - } - valMap := tags.TagBasedRequestFieldExtractor("log_field")("", req) - assert.EqualValues(t, "some_id", valMap["pong_id"]) - assert.EqualValues(t, "[tagone tagtwo]", valMap["meta_tags"]) -} - -func TestTaggedRequestFiledExtractor_OneOfLogField(t *testing.T) { - req := &gogotestpb.OneOfLogField{ - Identifier: &gogotestpb.OneOfLogField_BarId{ - BarId: "bar-log-field", - }, - } - valMap := tags.TagBasedRequestFieldExtractor("log_field")("", req) - assert.EqualValues(t, "bar-log-field", valMap["bar_id"]) -} - -// Test to ensure TagBasedRequestFieldExtractor does not panic when encountering private struct members such as -// when using gogoproto.stdtime which results in a time.Time that has private struct members -func TestTaggedRequestFiledExtractor_GogoTime(t *testing.T) { - ts := time.Date(2010, 01, 01, 0, 0, 0, 0, time.UTC) - req := &gogotestpb.GoGoProtoStdTime{ - Timestamp: &ts, - } - assert.NotPanics(t, func() { - valMap := tags.TagBasedRequestFieldExtractor("log_field")("", req) - assert.Empty(t, valMap) - }) -} diff --git a/providers/kit/examples_test.go b/providers/kit/examples_test.go index 63facbeef..61fb6721b 100644 --- a/providers/kit/examples_test.go +++ b/providers/kit/examples_test.go @@ -101,7 +101,7 @@ func ExampleWithDecider() { } } -func ExampleWithPayloadLogging() { +func ExampleServerPayloadLoggingDecider() { // Logger is used, allowing pre-definition of certain fields by the user. logger := log.NewNopLogger() // Expect payload from "/blah.foo.healthcheck/Check" call to be logged. @@ -129,5 +129,5 @@ func TestExamplesBuildable(t *testing.T) { Example_initializationWithDurationFieldOverride() Example_initializationWithCodeGenRequestFieldExtractor() ExampleWithDecider() - ExampleWithPayloadLogging() + ExampleServerPayloadLoggingDecider() } diff --git a/providers/kit/go.mod b/providers/kit/go.mod index 046f207a6..f5388b7ea 100644 --- a/providers/kit/go.mod +++ b/providers/kit/go.mod @@ -5,5 +5,5 @@ go 1.14 require ( github.com/go-kit/kit v0.10.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 - google.golang.org/grpc v1.26.0 + google.golang.org/grpc v1.30.0 ) diff --git a/providers/kit/go.sum b/providers/kit/go.sum index c139da7d4..eca09f743 100644 --- a/providers/kit/go.sum +++ b/providers/kit/go.sum @@ -29,6 +29,7 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -47,7 +48,9 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -79,6 +82,8 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -86,6 +91,8 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -96,8 +103,6 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea h1:1Tk1IbruXbunEnaIZEFb+Hpv9BIZti3OxKwKn5wWyKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea/go.mod h1:GugMBs30ZSAkckqXEAIEGyYdDH6EgqowG8ppA3Zt+AY= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 h1:2F7/en805byWQR92etfFjOqtRtWsUu09R7wm6LtlHEw= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891/go.mod h1:GhphxcdlaRyAuBSvo6rV71BvQcvB/vuX8ugCyybuS2k= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= @@ -193,6 +198,7 @@ github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -333,6 +339,8 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -352,8 +360,11 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/providers/logrus/examples_test.go b/providers/logrus/examples_test.go index bc03f4bc1..6a5e81f74 100644 --- a/providers/logrus/examples_test.go +++ b/providers/logrus/examples_test.go @@ -102,7 +102,7 @@ func ExampleWithDecider() { } } -func ExampleWithPayloadLogging() { +func ExampleServerPayloadLoggingDecider() { // Logger is used, allowing pre-definition of certain fields by the user. logger := logrus.New() // Expect payload from "/blah.foo.healthcheck/Check" call to be logged. @@ -130,5 +130,5 @@ func TestExamplesBuildable(t *testing.T) { Example_initializationWithDurationFieldOverride() Example_initializationWithCodeGenRequestFieldExtractor() ExampleWithDecider() - ExampleWithPayloadLogging() + ExampleServerPayloadLoggingDecider() } diff --git a/providers/logrus/go.mod b/providers/logrus/go.mod index fb21909c9..c5f105946 100644 --- a/providers/logrus/go.mod +++ b/providers/logrus/go.mod @@ -5,5 +5,5 @@ go 1.14 require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 github.com/sirupsen/logrus v1.5.0 - google.golang.org/grpc v1.19.0 + google.golang.org/grpc v1.30.0 ) diff --git a/providers/logrus/go.sum b/providers/logrus/go.sum index b0cb2e848..a9ef17630 100644 --- a/providers/logrus/go.sum +++ b/providers/logrus/go.sum @@ -1,9 +1,14 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -12,8 +17,11 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea h1:1Tk1IbruXbunEnaIZEFb+Hpv9BIZti3OxKwKn5wWyKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea/go.mod h1:GugMBs30ZSAkckqXEAIEGyYdDH6EgqowG8ppA3Zt+AY= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 h1:2F7/en805byWQR92etfFjOqtRtWsUu09R7wm6LtlHEw= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891/go.mod h1:GhphxcdlaRyAuBSvo6rV71BvQcvB/vuX8ugCyybuS2k= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -21,9 +29,11 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -34,14 +44,17 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc= @@ -51,6 +64,10 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -58,8 +75,13 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2El google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/providers/zap/examples_test.go b/providers/zap/examples_test.go index d17364a0e..378ca5d67 100644 --- a/providers/zap/examples_test.go +++ b/providers/zap/examples_test.go @@ -102,7 +102,7 @@ func ExampleWithDecider() { } } -func ExampleWithPayloadLogging() { +func ExampleServerPayloadLoggingDecider() { // Logger is used, allowing pre-definition of certain fields by the user. logger := zap.NewNop() // Expect payload from "/blah.foo.healthcheck/Check" call to be logged. @@ -130,5 +130,5 @@ func TestExamplesBuildable(t *testing.T) { Example_initializationWithDurationFieldOverride() Example_initializationWithCodeGenRequestFieldExtractor() ExampleWithDecider() - ExampleWithPayloadLogging() + ExampleServerPayloadLoggingDecider() } diff --git a/providers/zap/go.mod b/providers/zap/go.mod index e3cde6c07..b3180093e 100644 --- a/providers/zap/go.mod +++ b/providers/zap/go.mod @@ -5,5 +5,5 @@ go 1.14 require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 go.uber.org/zap v1.15.0 - google.golang.org/grpc v1.19.0 + google.golang.org/grpc v1.30.0 ) diff --git a/providers/zap/go.sum b/providers/zap/go.sum index 943c5a98d..e1a0d181f 100644 --- a/providers/zap/go.sum +++ b/providers/zap/go.sum @@ -1,10 +1,15 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -13,9 +18,12 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea h1:1Tk1IbruXbunEnaIZEFb+Hpv9BIZti3OxKwKn5wWyKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea/go.mod h1:GugMBs30ZSAkckqXEAIEGyYdDH6EgqowG8ppA3Zt+AY= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 h1:2F7/en805byWQR92etfFjOqtRtWsUu09R7wm6LtlHEw= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891/go.mod h1:GhphxcdlaRyAuBSvo6rV71BvQcvB/vuX8ugCyybuS2k= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -28,9 +36,11 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -49,6 +59,7 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -73,11 +84,14 @@ golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -85,6 +99,10 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2El google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -92,5 +110,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/providers/zerolog/examples_test.go b/providers/zerolog/examples_test.go index 9e10383d7..e7cd11567 100644 --- a/providers/zerolog/examples_test.go +++ b/providers/zerolog/examples_test.go @@ -104,7 +104,7 @@ func ExampleWithDecider() { } } -func ExampleWithPayloadLogging() { +func ExampleServerPayloadLoggingDecider() { // Logger is used, allowing pre-definition of certain fields by the user. logger := zerolog.New(os.Stderr) // Expect payload from "/blah.foo.healthcheck/Check" call to be logged. @@ -132,5 +132,5 @@ func TestExamplesBuildable(t *testing.T) { Example_initializationWithDurationFieldOverride() Example_initializationWithCodeGenRequestFieldExtractor() ExampleWithDecider() - ExampleWithPayloadLogging() + ExampleServerPayloadLoggingDecider() } diff --git a/providers/zerolog/go.mod b/providers/zerolog/go.mod index 2dba6ac32..d2fe1ab3f 100644 --- a/providers/zerolog/go.mod +++ b/providers/zerolog/go.mod @@ -5,5 +5,5 @@ go 1.14 require ( github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 github.com/rs/zerolog v1.19.0 - google.golang.org/grpc v1.19.0 + google.golang.org/grpc v1.30.0 ) diff --git a/providers/zerolog/go.sum b/providers/zerolog/go.sum index 98e99c8e9..cfb4d966f 100644 --- a/providers/zerolog/go.sum +++ b/providers/zerolog/go.sum @@ -1,9 +1,14 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -12,17 +17,22 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea h1:1Tk1IbruXbunEnaIZEFb+Hpv9BIZti3OxKwKn5wWyKk= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea/go.mod h1:GugMBs30ZSAkckqXEAIEGyYdDH6EgqowG8ppA3Zt+AY= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891 h1:2F7/en805byWQR92etfFjOqtRtWsUu09R7wm6LtlHEw= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.2.0.20201002093600-73cf2ae9d891/go.mod h1:GhphxcdlaRyAuBSvo6rV71BvQcvB/vuX8ugCyybuS2k= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.19.0 h1:hYz4ZVdUgjXTBUmrkrw55j1nHx68LfOKIQk5IYtyScg= github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= @@ -33,9 +43,11 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -50,8 +62,12 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -59,8 +75,13 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2El google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/scripts/genproto.sh b/scripts/genproto.sh index 6fcc22442..dce0ea87c 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -7,6 +7,8 @@ set -u PROTOC_BIN=${PROTOC_BIN:-protoc} GOIMPORTS_BIN=${GOIMPORTS_BIN:-goimports} +PROTOC_GEN_GO_BIN=${PROTOC_GEN_GO_BIN:-protoc-gen-go} +PROTOC_GEN_GO_GRPC_BIN=${PROTOC_GEN_GO_GRPC_BIN:-protoc-gen-go-grpc} PROTOC_GEN_GOGOFAST_BIN=${PROTOC_GEN_GOGOFAST_BIN:-protoc-gen-gogofast} if ! [[ "$0" =~ "scripts/genproto.sh" ]]; then @@ -14,25 +16,19 @@ if ! [[ "$0" =~ "scripts/genproto.sh" ]]; then exit 255 fi +OLDPATH=${PATH} + mkdir -p /tmp/protobin/ -cp ${PROTOC_GEN_GOGOFAST_BIN} /tmp/protobin/protoc-gen-gogofast -PATH=${PATH}:/tmp/protobin -GOGOPROTO_ROOT="$(GO111MODULE=on go list -modfile=.bingo/protoc-gen-gogofast.mod -f '{{ .Dir }}' -m github.com/gogo/protobuf)" -GOGOPROTO_PATH="${GOGOPROTO_ROOT}:${GOGOPROTO_ROOT}/protobuf" +cp ${PROTOC_GEN_GO_BIN} /tmp/protobin/protoc-gen-go +cp ${PROTOC_GEN_GO_GRPC_BIN} /tmp/protobin/protoc-gen-go-grpc +PATH=${OLDPATH}:/tmp/protobin -DIRS="grpctesting/testpb grpctesting/gogotestpb" -echo "generating code" +DIRS="grpctesting/testpb" +echo "generating protobuf code" for dir in ${DIRS}; do pushd ${dir} - ${PROTOC_BIN} --gogofast_out=\ -Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,\ -Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,\ -Mgoogle/protobuf/struct.proto=github.com/gogo/protobuf/types,\ -Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,\ -Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types,\ -plugins=grpc:. \ + ${PROTOC_BIN} --go_out=. --go-grpc_out=.\ -I=. \ - -I="${GOGOPROTO_PATH}" \ *.proto ${GOIMPORTS_BIN} -w *.pb.go