diff --git a/go.mod b/go.mod index 4c47797..3343de0 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/unistack-org/micro-server-http/v3 v3.3.1 github.com/unistack-org/micro-server-tcp/v3 v3.3.0 github.com/unistack-org/micro-wrapper-trace-opentracing/v3 v3.2.0 - github.com/unistack-org/micro/v3 v3.3.8 + github.com/unistack-org/micro/v3 v3.3.9 google.golang.org/genproto v0.0.0-20210325224202-eed09b1b5210 google.golang.org/grpc v1.36.1 google.golang.org/protobuf v1.26.0 diff --git a/go.sum b/go.sum index 18ab9c1..0df5c48 100644 --- a/go.sum +++ b/go.sum @@ -497,8 +497,8 @@ github.com/unistack-org/micro/v3 v3.2.22/go.mod h1:oI8H/uGq1h4i5cvUycEoFKJQC7G8y github.com/unistack-org/micro/v3 v3.2.24/go.mod h1:iJwCWq2PECMxigfqe6TPC5GLWvj6P94Kk+PTVZGL3w8= github.com/unistack-org/micro/v3 v3.3.0/go.mod h1:iJwCWq2PECMxigfqe6TPC5GLWvj6P94Kk+PTVZGL3w8= github.com/unistack-org/micro/v3 v3.3.3/go.mod h1:tX95c0Qx4w6oqU7qKThs9lya9P507BdZ29MsTVDmU6w= -github.com/unistack-org/micro/v3 v3.3.8 h1:4e4gWuZI/cRUGZ6ZZpdrIDOF2MLO6cjHxeFfZzy610Y= -github.com/unistack-org/micro/v3 v3.3.8/go.mod h1:M3RGgKZX1OlTn0QB+3R1tlSoGwmEg6rb/Isr0lLYmjQ= +github.com/unistack-org/micro/v3 v3.3.9 h1:NFF4wymDDxgYeZU++04BxvETrrAnd0iNzVyfm/ssQI4= +github.com/unistack-org/micro/v3 v3.3.9/go.mod h1:M3RGgKZX1OlTn0QB+3R1tlSoGwmEg6rb/Isr0lLYmjQ= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/valyala/fastrand v1.0.0 h1:LUKT9aKer2dVQNUi3waewTbKV+7H17kvWFNKs2ObdkI= diff --git a/server/http/http_test.go b/server/http/http_test.go index 7ff423c..28d8b1d 100644 --- a/server/http/http_test.go +++ b/server/http/http_test.go @@ -1,6 +1,7 @@ package http_test import ( + "bytes" "context" "fmt" "io" @@ -33,7 +34,7 @@ type Handler struct { func NewServerHandlerWrapper() server.HandlerWrapper { return func(fn server.HandlerFunc) server.HandlerFunc { return func(ctx context.Context, req server.Request, rsp interface{}) error { - fmt.Printf("wrap ctx: %#+v req: %#+v\n", ctx, req) + fmt.Printf("wrap ctx: %s\n", req.Service()) return fn(ctx, req, rsp) } } @@ -113,7 +114,7 @@ func TestNativeClientServer(t *testing.T) { if err := pb.RegisterTestDoubleServer(srv, h); err != nil { t.Fatal(err) } - if err := handler.RegisterMeterServer(srv, handler.NewHandler(srv.Options().Meter)); err != nil { + if err := handler.RegisterMeterServer(srv, handler.NewHandler(handler.Meter(srv.Options().Meter))); err != nil { t.Fatal(err) } // start server @@ -158,6 +159,38 @@ func TestNativeClientServer(t *testing.T) { t.Fatalf("http middleware not works") } + hb, err := jsonpbcodec.NewCodec().Marshal(&pb.CallReq{ + Nested: &pb.Nested{Uint64Args: []*wrapperspb.UInt64Value{ + &wrapperspb.UInt64Value{Value: 1}, + &wrapperspb.UInt64Value{Value: 2}, + &wrapperspb.UInt64Value{Value: 3}, + }}, + }) + if err != nil { + t.Fatal(err) + } + + t.Logf("test rsp code from net/http client to native micro http server") + hr, err := http.NewRequestWithContext(ctx, "POST", fmt.Sprintf("http://%s/v1/test/call/my_name", service[0].Nodes[0].Address), bytes.NewReader(hb)) + if err != nil { + t.Fatal(err) + } + hr.Header.Set("Content-Type", "application/json") + + hrsp, err := http.DefaultClient.Do(hr) + if err != nil { + t.Fatal(err) + } + defer hrsp.Body.Close() + buf, err := io.ReadAll(hrsp.Body) + if err != nil { + t.Fatal(err) + } + + if hrsp.StatusCode != 201 { + t.Fatalf("invalid rsp code %#+v", hrsp) + } + t.Logf("test second server") svc2 := pb.NewTestDoubleClient("helloworld", cli) rsp, err = svc2.CallDouble(ctx, &pb.CallReq{ @@ -171,12 +204,12 @@ func TestNativeClientServer(t *testing.T) { t.Fatalf("invalid response: %#+v\n", rsp) } - hr, err := http.Get(fmt.Sprintf("http://%s/metrics", service[0].Nodes[0].Address)) + hrsp, err = http.Get(fmt.Sprintf("http://%s/metrics", service[0].Nodes[0].Address)) if err != nil { t.Fatal(err) } - buf, err := io.ReadAll(hr.Body) + buf, err = io.ReadAll(hrsp.Body) if err != nil { t.Fatal(err) }