diff --git a/client/mock/mock_test.go b/client/mock/mock_test.go new file mode 100644 index 0000000..575fc3a --- /dev/null +++ b/client/mock/mock_test.go @@ -0,0 +1,66 @@ +package mock + +import ( + "context" + "testing" + "time" + + "go.unistack.org/micro-client-mock/v3" + jsoncodec "go.unistack.org/micro-codec-json/v3" + pb "go.unistack.org/micro-tests/client/mock/proto" + "go.unistack.org/micro/v3/client" + "go.unistack.org/micro/v3/errors" +) + +func TestCallWithoutError(t *testing.T) { + c := mock.NewClient(client.ContentType("application/json"), client.Codec("application/json", jsoncodec.NewCodec())) + + if err := c.Init(); err != nil { + t.Fatal(err) + } + reqbuf := []byte(`{"username": "vtolstov"}`) + rspbuf := []byte(`{"name": "Vasiliy Tolstov"}`) + er := c.ExpectRequest(c.NewRequest("github", "Github.LookupUser", reqbuf)) + er.WillReturnResponse(rspbuf) + er.WillDelayFor(10 * time.Millisecond) + + gh := pb.NewGithubClient("github", c) + + rsp, err := gh.LookupUser(context.TODO(), &pb.LookupUserReq{Username: "vtolstov"}) + if err != nil { + t.Fatal(err) + } + + if rsp.Name != "Vasiliy Tolstov" { + t.Fatalf("invalid rsp received: %#+v\n", rsp) + } + + if err := c.ExpectationsWereMet(); err != nil { + t.Fatal(err) + } +} + +func TestCallWithtError(t *testing.T) { + c := mock.NewClient(client.ContentType("application/json"), client.Codec("application/json", jsoncodec.NewCodec())) + + if err := c.Init(); err != nil { + t.Fatal(err) + } + reqbuf := []byte(`{"username": "vtolstov"}`) + rspbuf := []byte(`{"name": "Vasiliy Tolstov"}`) + er := c.ExpectRequest(c.NewRequest("github", "Github.LookupUser", reqbuf)) + er.WillReturnResponse(rspbuf) + er.WillDelayFor(10 * time.Millisecond) + er.WillReturnError(errors.InternalServerError("test", "internal server error")) + + gh := pb.NewGithubClient("github", c) + + rsp, err := gh.LookupUser(context.TODO(), &pb.LookupUserReq{Username: "vtolstov"}) + if err == nil || rsp != nil { + t.Fatal("call must return error") + } + + if err := c.ExpectationsWereMet(); err != nil { + t.Fatal(err) + } +} diff --git a/client/mock/proto/github.pb.go b/client/mock/proto/github.pb.go new file mode 100644 index 0000000..a95ece5 --- /dev/null +++ b/client/mock/proto/github.pb.go @@ -0,0 +1,19 @@ +package pb + +import ( + _ "go.unistack.org/micro-proto/v3/api" + _ "go.unistack.org/micro-proto/v3/openapiv3" +) + +type LookupUserReq struct { + Username string `json:"username,omitempty"` +} + +type LookupUserRsp struct { + Name string `json:"name,omitempty"` +} + +type Error struct { + Message string `json:"message,omitempty"` + DocumentationUrl string `json:"documentation_url,omitempty"` +} diff --git a/client/mock/proto/github_micro.pb.go b/client/mock/proto/github_micro.pb.go new file mode 100644 index 0000000..e7660a8 --- /dev/null +++ b/client/mock/proto/github_micro.pb.go @@ -0,0 +1,28 @@ +package pb + +import ( + context "context" + + v3 "go.unistack.org/micro-server-http/v3" + client "go.unistack.org/micro/v3/client" +) + +var GithubName = "Github" + +var GithubServerEndpoints = []v3.EndpointMetadata{ + { + Name: "Github.LookupUser", + Path: "/users/{username}", + Method: "GET", + Body: "", + Stream: false, + }, +} + +type GithubClient interface { + LookupUser(ctx context.Context, req *LookupUserReq, opts ...client.CallOption) (*LookupUserRsp, error) +} + +type GithubServer interface { + LookupUser(ctx context.Context, req *LookupUserReq, rsp *LookupUserRsp) error +} diff --git a/client/mock/proto/github_micro_http.pb.go b/client/mock/proto/github_micro_http.pb.go new file mode 100644 index 0000000..1c4e27f --- /dev/null +++ b/client/mock/proto/github_micro_http.pb.go @@ -0,0 +1,59 @@ +package pb + +import ( + context "context" + http "net/http" + + v3 "go.unistack.org/micro-client-http/v3" + v31 "go.unistack.org/micro-server-http/v3" + client "go.unistack.org/micro/v3/client" + server "go.unistack.org/micro/v3/server" +) + +type githubClient struct { + c client.Client + name string +} + +func NewGithubClient(name string, c client.Client) GithubClient { + return &githubClient{c: c, name: name} +} + +func (c *githubClient) LookupUser(ctx context.Context, req *LookupUserReq, opts ...client.CallOption) (*LookupUserRsp, error) { + errmap := make(map[string]interface{}, 1) + errmap["default"] = &Error{} + opts = append(opts, + v3.ErrorMap(errmap), + ) + opts = append(opts, + v3.Method(http.MethodGet), + v3.Path("/users/{username}"), + ) + rsp := &LookupUserRsp{} + err := c.c.Call(ctx, c.c.NewRequest(c.name, "Github.LookupUser", req), rsp, opts...) + if err != nil { + return nil, err + } + return rsp, nil +} + +type githubServer struct { + GithubServer +} + +func (h *githubServer) LookupUser(ctx context.Context, req *LookupUserReq, rsp *LookupUserRsp) error { + return h.GithubServer.LookupUser(ctx, req, rsp) +} + +func RegisterGithubServer(s server.Server, sh GithubServer, opts ...server.HandlerOption) error { + type github interface { + LookupUser(ctx context.Context, req *LookupUserReq, rsp *LookupUserRsp) error + } + type Github struct { + github + } + h := &githubServer{sh} + var nopts []server.HandlerOption + nopts = append(nopts, v31.HandlerEndpoints(GithubServerEndpoints)) + return s.Handle(s.NewHandler(&Github{h}, append(nopts, opts...)...)) +} diff --git a/go.mod b/go.mod index 04bc8ae..61dd7c9 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( go.unistack.org/micro-tracer-opentracing/v3 v3.10.1 go.unistack.org/micro-wrapper-recovery/v3 v3.8.3 go.unistack.org/micro-wrapper-sql/v3 v3.10.3 - go.unistack.org/micro/v3 v3.10.14 + go.unistack.org/micro/v3 v3.10.18 golang.org/x/crypto v0.7.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488 // indirect @@ -56,7 +56,10 @@ require ( storj.io/drpc v0.0.32 ) -require golang.org/x/net v0.8.0 +require ( + go.unistack.org/micro-client-mock/v3 v3.0.0 + golang.org/x/net v0.8.0 +) require ( github.com/beorn7/perks v1.0.1 // indirect @@ -79,17 +82,13 @@ require ( github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/serf v0.10.1 // indirect github.com/imdario/mergo v0.3.13 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/compress v1.16.0 // indirect - github.com/klauspost/cpuid/v2 v2.0.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pkg/errors v0.9.1 // indirect diff --git a/go.sum b/go.sum index 42602c2..ea4f317 100644 --- a/go.sum +++ b/go.sum @@ -394,7 +394,6 @@ github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4r github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -563,11 +562,9 @@ github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqE github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.18.0 h1:R7PPNzTCeN6VuQNDwwhZWJvzCtGSrNpJqfb22h3yH9g= github.com/hashicorp/consul/api v1.18.0/go.mod h1:owRRGJ9M5xReDC5nfT8FTJrNAPbT4NM6p/k+d03q2v4= github.com/hashicorp/consul/api v1.19.1 h1:GLeK1WD4VIRvt4wRhQKHFudztEkRb8pDs+uRiJgNwes= github.com/hashicorp/consul/api v1.19.1/go.mod h1:jAt316eYgWGNLJtxkMQrcqRpuDE/kFJdqkEFwRXFv8U= -github.com/hashicorp/consul/sdk v0.13.0 h1:lce3nFlpv8humJL8rNrrGHYSKc3q+Kxfeg3Ii1m6ZWU= github.com/hashicorp/consul/sdk v0.13.0/go.mod h1:0hs/l5fOVhJy/VdcoaNqUSi2AUs95eF5WKtv+EYIQqE= github.com/hashicorp/consul/sdk v0.13.1 h1:EygWVWWMczTzXGpO93awkHFzfUka6hLYJ0qhETd+6lY= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -657,7 +654,6 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= @@ -669,12 +665,8 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:C github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.0.6 h1:dQ5ueTiftKxp0gyjKSx5+8BtPWkyQbd95m8Gys/RarI= -github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -727,11 +719,9 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -746,7 +736,6 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= @@ -778,8 +767,6 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.40.0 h1:Afz7EVRqGg2Mqqf4JuF9vdvp1pi220m55Pi9T2JnO4Q= -github.com/prometheus/common v0.40.0/go.mod h1:L65ZJPSmfn/UBWLQIHV7dBrKFidB/wPlF1y5TlSt9OE= github.com/prometheus/common v0.41.0 h1:npo01n6vUlRViIj5fgwiK8vlNIh8bnoxqh3gypKsyAw= github.com/prometheus/common v0.41.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -800,16 +787,12 @@ github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkB github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/asm v1.0.1 h1:g9VK62hXylgXI4yJV+dLTu/1j7kTxG9bkUSYBxL9dpg= -github.com/segmentio/asm v1.0.1/go.mod h1:4EUJGaKsB8ImLUwOGORVsNd9vTRDeh44JGsY4aKp5I4= github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= -github.com/segmentio/encoding v0.2.21 h1:hlRQz3Pv+/mBj+jqr46TVqqv6AuTwvP5aAxQ0Usd4gY= -github.com/segmentio/encoding v0.2.21/go.mod h1:kF1db1oBuYxMvLR3RXrZJchRdBKrS+1J/hL63p5hekI= +github.com/segmentio/encoding v0.3.6 h1:E6lVLyDPseWEulBmCmAKPanDd3jiyGDo5gMcugCRwZQ= github.com/segmentio/encoding v0.3.6/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM= github.com/segmentio/kafka-go v0.4.22/go.mod h1:XzMcoMjSzDGHcIwpWUI7GB43iKZ2fTVmryPSGLf/MPg= -github.com/segmentio/kafka-go v0.4.38 h1:iQdOBbUSdfuYlFpvjuALgj7N6DrdPA0HfB4AhREOdtg= -github.com/segmentio/kafka-go v0.4.38/go.mod h1:ikyuGon/60MN/vXFgykf7Zm8P5Be49gJU6vezwjnnhU= github.com/segmentio/kafka-go v0.4.39 h1:75smaomhvkYRwtuOwqLsdhgCG30B82NsbdkdDfFbvrw= github.com/segmentio/kafka-go v0.4.39/go.mod h1:T0MLgygYvmqmBvC+s8aCcbVNfJN4znVne5j0Pzowp/Q= github.com/silas/dag v0.0.0-20210626123444-3804bac2d6d4/go.mod h1:7RTUFBdIRC9nZ7/3RyRNH1bdqIShrDejd1YbLwgPS+I= @@ -845,7 +828,6 @@ github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaO github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/unistack-org/micro-proto v0.0.9/go.mod h1:Cckwmzd89gvS7ThxzZp9kQR/EOdksFQcsTAtDDyKwrg= github.com/valyala/fastrand v1.1.0 h1:f+5HkLW4rsgzdNoleUOB69hyT9IlD2ZQh9GyDMfb5G8= github.com/valyala/fastrand v1.1.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ= github.com/valyala/histogram v1.2.0 h1:wyYGAZZt3CpwUiIb9AU/Zbllg1llXyrtApRS815OLoQ= @@ -887,32 +869,20 @@ go.unistack.org/micro-client-grpc/v3 v3.10.0 h1:RaXxV81s8cjPkZ0CLqJAJGZSpbxb0g7n go.unistack.org/micro-client-grpc/v3 v3.10.0/go.mod h1:BAmD+1zy0F6fih1arsW/IKp9BJKTkpp22zQfbX3M5E0= go.unistack.org/micro-client-http/v3 v3.9.0 h1:m2DO59EzwbWFkF3gzvUBAUoKsmH0sZ+hPrwAoDa2EvE= go.unistack.org/micro-client-http/v3 v3.9.0/go.mod h1:+IwOy028UpLcbRQSo+DZgGPa+CODHFAN7YGA85bdJ1M= -go.unistack.org/micro-codec-grpc/v3 v3.8.1 h1:vZrR07L8NKziG1dtzCBKoooaHpV3oP2c7rh93ClbUGI= -go.unistack.org/micro-codec-grpc/v3 v3.8.1/go.mod h1:RawS1ObPRsjsdvDXrGcLNnTexOHdU9yRZbF4QhWkRWw= +go.unistack.org/micro-client-mock/v3 v3.0.0 h1:8Q4TXTAfKp3IFwvCHTwPmigCKcPDPNOimNzVb/ysgRM= +go.unistack.org/micro-client-mock/v3 v3.0.0/go.mod h1:UwTnK2oPeN7nwXNCwgwlRttCPIH2GldxkQql02eB3Fg= go.unistack.org/micro-codec-grpc/v3 v3.10.0 h1:N8XtNVeYBUcrQfcaY0b+PS7TaI7Wi6g5ZrEDeK77y34= go.unistack.org/micro-codec-grpc/v3 v3.10.0/go.mod h1:NLU7KfhAA2Es9zI5BuwFFpPW1Y20F5/9/ZX2bK0nils= -go.unistack.org/micro-codec-json/v3 v3.8.0 h1:sQ6xdHaNUCxCiUakGaV1t8lbX1rGWlgnF/HbsXyhkGg= -go.unistack.org/micro-codec-json/v3 v3.8.0/go.mod h1:+F7S3ZNTKdMsu6pYFeNdKNT8G8b/nXugdln/lUY1kO8= go.unistack.org/micro-codec-json/v3 v3.10.0 h1:vSREYR9yM5R9bzCWAY9Wip+sYzLjUB2UIEJAWtpWNbg= go.unistack.org/micro-codec-json/v3 v3.10.0/go.mod h1:pknnB+DvzC/xi9WzkyZp5lfI0HxAo02ih2urkHpl1GQ= -go.unistack.org/micro-codec-jsonpb/v3 v3.8.1 h1:JO5KVUC/fL0CephI42xwkKZt0SLNpP4w66nAk7O9oi8= -go.unistack.org/micro-codec-jsonpb/v3 v3.8.1/go.mod h1:igXQT6P1wibc9mVjYS99w56s4M2DlIUCl4GQmUQrtQU= go.unistack.org/micro-codec-jsonpb/v3 v3.10.0 h1:PYe6JjYb7ngRvm04eTj9PlAxVU5+iHB4+nC3WZS3iuQ= go.unistack.org/micro-codec-jsonpb/v3 v3.10.0/go.mod h1:vVaYiiq8sCcCakR2NO/gahGgckxTaYvIYkEcwh6bg44= -go.unistack.org/micro-codec-proto/v3 v3.8.1 h1:86bJca4JnE4Qp8u9sdUGyKi8n19c+3tXdDYN39KAkIY= -go.unistack.org/micro-codec-proto/v3 v3.8.1/go.mod h1:KawLWwswDCunabwWv3QvXVJWwKNhv6WiSbR3GQ4JHHA= go.unistack.org/micro-codec-proto/v3 v3.10.0 h1:zdsMLwpZ3dbHmMt/vbgWdGAEW/rPkJaEuMPM9XuasUY= go.unistack.org/micro-codec-proto/v3 v3.10.0/go.mod h1:o8VeYHPK4x9UhTJqtsyB5YIi6mI2mhZMkixknWntO2Q= -go.unistack.org/micro-codec-segmentio/v3 v3.8.1 h1:e8/8aDlTfSFM7T3azEGxUE9xQ6FPid124Uo+2p/ZCXA= -go.unistack.org/micro-codec-segmentio/v3 v3.8.1/go.mod h1:d7xjN5JwqNXTHi9wVLZimOcKjXtZzScLbgCKeBuosPM= go.unistack.org/micro-codec-segmentio/v3 v3.10.0 h1:VbY31wNqk+spH6UgGB9+WmM9ZmEE9AFAuD63+99Fi1w= go.unistack.org/micro-codec-segmentio/v3 v3.10.0/go.mod h1:aWZowfhd+Upa5J1vsCx2naU/lC2YrQXl/UJKSL2cJKk= -go.unistack.org/micro-codec-urlencode/v3 v3.8.1 h1:p1VzzvuQnbm2CQnn/qr7NDiuaEuM6eXuh2oExWIUFmk= -go.unistack.org/micro-codec-urlencode/v3 v3.8.1/go.mod h1:TxaelCAvvXLyZpMIhZUvsMi6Xy2J3rvKKI7WOQhb5wI= go.unistack.org/micro-codec-urlencode/v3 v3.10.0 h1:lKpZcoooAJVErl7BUV+BbmluJMKOHwEKrxlhh/v1T60= go.unistack.org/micro-codec-urlencode/v3 v3.10.0/go.mod h1:ySpK9glQLGoT9MHpuVqJ50AkbqOM0ti0t0Uxg9N14ys= -go.unistack.org/micro-codec-xml/v3 v3.8.1 h1:hE211qCnyjdPt33ub1cg4HbHaKtHx0tNDXtq5xwLjQ4= -go.unistack.org/micro-codec-xml/v3 v3.8.1/go.mod h1:sNwBgamgKsumUV06rk8Z+Gutzshfm0VnCYH+YTUCqqU= go.unistack.org/micro-codec-xml/v3 v3.10.0 h1:hE48K9wGOcjWu/Fz38M0K0p9QZ+7QWBVHJq3AsysRaM= go.unistack.org/micro-codec-xml/v3 v3.10.0/go.mod h1:ec8JBYqOtewe+V+MemJDKcvz5hdKv92LOkmEOgQmtMI= go.unistack.org/micro-config-consul/v3 v3.8.2 h1:oKcyYYqLwbriy+Kv5I//I+o8QBPhPhJermciG0zvrks= @@ -944,8 +914,6 @@ go.unistack.org/micro-wrapper-recovery/v3 v3.8.3 h1:F+b+xBSupV09S9AuT5ljh8X9uMez go.unistack.org/micro-wrapper-recovery/v3 v3.8.3/go.mod h1:kInEBE89SfkK3doRam+oSGb6udSj/mTM4UkUQ5nAyzU= go.unistack.org/micro-wrapper-sql/v3 v3.10.3 h1:7JWwkCU8d5r7ew1KHvrelQ0al9XqKvljzg4MjukZjV8= go.unistack.org/micro-wrapper-sql/v3 v3.10.3/go.mod h1:CXyh36oCtQoIDyrPOSFmDgGDTqnEPibK585nIlbkmOM= -go.unistack.org/micro/v3 v3.8.0/go.mod h1:Tkteri0wiiybbH6aPqay26pZHFIAwL9LXJc2x1Jkakk= -go.unistack.org/micro/v3 v3.8.4/go.mod h1:KMMmOmbgo/D52/rCAbqeKbBsgEEbSKM69he54J3ZIuA= go.unistack.org/micro/v3 v3.8.5/go.mod h1:KMMmOmbgo/D52/rCAbqeKbBsgEEbSKM69he54J3ZIuA= go.unistack.org/micro/v3 v3.8.21/go.mod h1:aBOCQ6SkAwKMRI7Q1CIsQA2S88ibyJfweJZlT1M2qpE= go.unistack.org/micro/v3 v3.9.2/go.mod h1:7ssIWk+PJXvb2nSl8NUnQRs32JJEId2IDi9PobrQlKo= @@ -954,8 +922,9 @@ go.unistack.org/micro/v3 v3.9.14/go.mod h1:gI4RkJKHLPW7KV6h4+ZBOZD997MRvFRXMPQIH go.unistack.org/micro/v3 v3.9.18/go.mod h1:gI4RkJKHLPW7KV6h4+ZBOZD997MRvFRXMPQIHpozikI= go.unistack.org/micro/v3 v3.10.4/go.mod h1:gI4RkJKHLPW7KV6h4+ZBOZD997MRvFRXMPQIHpozikI= go.unistack.org/micro/v3 v3.10.11/go.mod h1:gI4RkJKHLPW7KV6h4+ZBOZD997MRvFRXMPQIHpozikI= -go.unistack.org/micro/v3 v3.10.14 h1:7fgLpwGlCN67twhwtngJDEQvrMkUBDSA5vzZqxIDqNE= go.unistack.org/micro/v3 v3.10.14/go.mod h1:uMAc0U/x7dmtICCrblGf0ZLgYegu3VwQAquu+OFCw1Q= +go.unistack.org/micro/v3 v3.10.18 h1:iz193N8eZKGrKPXuX6XMsGIRHMqdvUaZSfb9mzwlUYM= +go.unistack.org/micro/v3 v3.10.18/go.mod h1:uMAc0U/x7dmtICCrblGf0ZLgYegu3VwQAquu+OFCw1Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -968,8 +937,6 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=