Moved to google.golang.org/genproto/googleapis/api/annotations
Fixes #52
This commit is contained in:
38
vendor/github.com/go-kit/kit/examples/stringsvc2/instrumenting.go
generated
vendored
Normal file
38
vendor/github.com/go-kit/kit/examples/stringsvc2/instrumenting.go
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/go-kit/kit/metrics"
|
||||
)
|
||||
|
||||
type instrumentingMiddleware struct {
|
||||
requestCount metrics.Counter
|
||||
requestLatency metrics.Histogram
|
||||
countResult metrics.Histogram
|
||||
next StringService
|
||||
}
|
||||
|
||||
func (mw instrumentingMiddleware) Uppercase(s string) (output string, err error) {
|
||||
defer func(begin time.Time) {
|
||||
lvs := []string{"method", "uppercase", "error", fmt.Sprint(err != nil)}
|
||||
mw.requestCount.With(lvs...).Add(1)
|
||||
mw.requestLatency.With(lvs...).Observe(time.Since(begin).Seconds())
|
||||
}(time.Now())
|
||||
|
||||
output, err = mw.next.Uppercase(s)
|
||||
return
|
||||
}
|
||||
|
||||
func (mw instrumentingMiddleware) Count(s string) (n int) {
|
||||
defer func(begin time.Time) {
|
||||
lvs := []string{"method", "count", "error", "false"}
|
||||
mw.requestCount.With(lvs...).Add(1)
|
||||
mw.requestLatency.With(lvs...).Observe(time.Since(begin).Seconds())
|
||||
mw.countResult.Observe(float64(n))
|
||||
}(time.Now())
|
||||
|
||||
n = mw.next.Count(s)
|
||||
return
|
||||
}
|
41
vendor/github.com/go-kit/kit/examples/stringsvc2/logging.go
generated
vendored
Normal file
41
vendor/github.com/go-kit/kit/examples/stringsvc2/logging.go
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/go-kit/kit/log"
|
||||
)
|
||||
|
||||
type loggingMiddleware struct {
|
||||
logger log.Logger
|
||||
next StringService
|
||||
}
|
||||
|
||||
func (mw loggingMiddleware) Uppercase(s string) (output string, err error) {
|
||||
defer func(begin time.Time) {
|
||||
_ = mw.logger.Log(
|
||||
"method", "uppercase",
|
||||
"input", s,
|
||||
"output", output,
|
||||
"err", err,
|
||||
"took", time.Since(begin),
|
||||
)
|
||||
}(time.Now())
|
||||
|
||||
output, err = mw.next.Uppercase(s)
|
||||
return
|
||||
}
|
||||
|
||||
func (mw loggingMiddleware) Count(s string) (n int) {
|
||||
defer func(begin time.Time) {
|
||||
_ = mw.logger.Log(
|
||||
"method", "count",
|
||||
"input", s,
|
||||
"n", n,
|
||||
"took", time.Since(begin),
|
||||
)
|
||||
}(time.Now())
|
||||
|
||||
n = mw.next.Count(s)
|
||||
return
|
||||
}
|
59
vendor/github.com/go-kit/kit/examples/stringsvc2/main.go
generated
vendored
Normal file
59
vendor/github.com/go-kit/kit/examples/stringsvc2/main.go
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
stdprometheus "github.com/prometheus/client_golang/prometheus"
|
||||
|
||||
"github.com/go-kit/kit/log"
|
||||
kitprometheus "github.com/go-kit/kit/metrics/prometheus"
|
||||
httptransport "github.com/go-kit/kit/transport/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
logger := log.NewLogfmtLogger(os.Stderr)
|
||||
|
||||
fieldKeys := []string{"method", "error"}
|
||||
requestCount := kitprometheus.NewCounterFrom(stdprometheus.CounterOpts{
|
||||
Namespace: "my_group",
|
||||
Subsystem: "string_service",
|
||||
Name: "request_count",
|
||||
Help: "Number of requests received.",
|
||||
}, fieldKeys)
|
||||
requestLatency := kitprometheus.NewSummaryFrom(stdprometheus.SummaryOpts{
|
||||
Namespace: "my_group",
|
||||
Subsystem: "string_service",
|
||||
Name: "request_latency_microseconds",
|
||||
Help: "Total duration of requests in microseconds.",
|
||||
}, fieldKeys)
|
||||
countResult := kitprometheus.NewSummaryFrom(stdprometheus.SummaryOpts{
|
||||
Namespace: "my_group",
|
||||
Subsystem: "string_service",
|
||||
Name: "count_result",
|
||||
Help: "The result of each count method.",
|
||||
}, []string{}) // no fields here
|
||||
|
||||
var svc StringService
|
||||
svc = stringService{}
|
||||
svc = loggingMiddleware{logger, svc}
|
||||
svc = instrumentingMiddleware{requestCount, requestLatency, countResult, svc}
|
||||
|
||||
uppercaseHandler := httptransport.NewServer(
|
||||
makeUppercaseEndpoint(svc),
|
||||
decodeUppercaseRequest,
|
||||
encodeResponse,
|
||||
)
|
||||
|
||||
countHandler := httptransport.NewServer(
|
||||
makeCountEndpoint(svc),
|
||||
decodeCountRequest,
|
||||
encodeResponse,
|
||||
)
|
||||
|
||||
http.Handle("/uppercase", uppercaseHandler)
|
||||
http.Handle("/count", countHandler)
|
||||
http.Handle("/metrics", stdprometheus.Handler())
|
||||
logger.Log("msg", "HTTP", "addr", ":8080")
|
||||
logger.Log("err", http.ListenAndServe(":8080", nil))
|
||||
}
|
28
vendor/github.com/go-kit/kit/examples/stringsvc2/service.go
generated
vendored
Normal file
28
vendor/github.com/go-kit/kit/examples/stringsvc2/service.go
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// StringService provides operations on strings.
|
||||
type StringService interface {
|
||||
Uppercase(string) (string, error)
|
||||
Count(string) int
|
||||
}
|
||||
|
||||
type stringService struct{}
|
||||
|
||||
func (stringService) Uppercase(s string) (string, error) {
|
||||
if s == "" {
|
||||
return "", ErrEmpty
|
||||
}
|
||||
return strings.ToUpper(s), nil
|
||||
}
|
||||
|
||||
func (stringService) Count(s string) int {
|
||||
return len(s)
|
||||
}
|
||||
|
||||
// ErrEmpty is returned when an input string is empty.
|
||||
var ErrEmpty = errors.New("empty string")
|
65
vendor/github.com/go-kit/kit/examples/stringsvc2/transport.go
generated
vendored
Normal file
65
vendor/github.com/go-kit/kit/examples/stringsvc2/transport.go
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-kit/kit/endpoint"
|
||||
)
|
||||
|
||||
func makeUppercaseEndpoint(svc StringService) endpoint.Endpoint {
|
||||
return func(ctx context.Context, request interface{}) (interface{}, error) {
|
||||
req := request.(uppercaseRequest)
|
||||
v, err := svc.Uppercase(req.S)
|
||||
if err != nil {
|
||||
return uppercaseResponse{v, err.Error()}, nil
|
||||
}
|
||||
return uppercaseResponse{v, ""}, nil
|
||||
}
|
||||
}
|
||||
|
||||
func makeCountEndpoint(svc StringService) endpoint.Endpoint {
|
||||
return func(ctx context.Context, request interface{}) (interface{}, error) {
|
||||
req := request.(countRequest)
|
||||
v := svc.Count(req.S)
|
||||
return countResponse{v}, nil
|
||||
}
|
||||
}
|
||||
|
||||
func decodeUppercaseRequest(_ context.Context, r *http.Request) (interface{}, error) {
|
||||
var request uppercaseRequest
|
||||
if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return request, nil
|
||||
}
|
||||
|
||||
func decodeCountRequest(_ context.Context, r *http.Request) (interface{}, error) {
|
||||
var request countRequest
|
||||
if err := json.NewDecoder(r.Body).Decode(&request); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return request, nil
|
||||
}
|
||||
|
||||
func encodeResponse(_ context.Context, w http.ResponseWriter, response interface{}) error {
|
||||
return json.NewEncoder(w).Encode(response)
|
||||
}
|
||||
|
||||
type uppercaseRequest struct {
|
||||
S string `json:"s"`
|
||||
}
|
||||
|
||||
type uppercaseResponse struct {
|
||||
V string `json:"v"`
|
||||
Err string `json:"err,omitempty"`
|
||||
}
|
||||
|
||||
type countRequest struct {
|
||||
S string `json:"s"`
|
||||
}
|
||||
|
||||
type countResponse struct {
|
||||
V int `json:"v"`
|
||||
}
|
Reference in New Issue
Block a user