gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/server/grpc/grpc_test.go (about) 1 package grpc 2 3 import ( 4 "context" 5 "testing" 6 7 "gitee.com/liuxuezhan/go-micro-v1.18.0/registry/memory" 8 "gitee.com/liuxuezhan/go-micro-v1.18.0/server" 9 "google.golang.org/grpc" 10 11 pb "gitee.com/liuxuezhan/go-micro-v1.18.0/server/grpc/proto" 12 ) 13 14 // server is used to implement helloworld.GreeterServer. 15 type testServer struct{} 16 17 // TestHello implements helloworld.GreeterServer 18 func (s *testServer) Call(ctx context.Context, req *pb.Request, rsp *pb.Response) error { 19 rsp.Msg = "Hello " + req.Name 20 return nil 21 } 22 23 func TestGRPCServer(t *testing.T) { 24 r := memory.NewRegistry() 25 s := NewServer( 26 server.Name("foo"), 27 server.Registry(r), 28 ) 29 30 pb.RegisterTestHandler(s, &testServer{}) 31 32 if err := s.Start(); err != nil { 33 t.Fatalf("failed to start: %v", err) 34 } 35 36 // check registration 37 services, err := r.GetService("foo") 38 if err != nil || len(services) == 0 { 39 t.Fatalf("failed to get service: %v # %d", err, len(services)) 40 } 41 42 defer func() { 43 if err := s.Stop(); err != nil { 44 t.Fatalf("failed to stop: %v", err) 45 } 46 }() 47 48 cc, err := grpc.Dial(s.Options().Address, grpc.WithInsecure()) 49 if err != nil { 50 t.Fatalf("failed to dial server: %v", err) 51 } 52 53 testMethods := []string{"/test.Test/Call", "/go.micro.test.Test/Call"} 54 55 for _, method := range testMethods { 56 rsp := pb.Response{} 57 58 if err := cc.Invoke(context.Background(), method, &pb.Request{Name: "John"}, &rsp); err != nil { 59 t.Fatalf("error calling server: %v", err) 60 } 61 62 if rsp.Msg != "Hello John" { 63 t.Fatalf("Got unexpected response %v", rsp.Msg) 64 } 65 } 66 }