diff --git a/protocol/grpc/grpc_protocol_test.go b/protocol/grpc/grpc_protocol_test.go index 41c895d24fe371d0226078cf1c164ab4b47759f3..4594f41e09700f890145bcf513c61d74fbb1599b 100644 --- a/protocol/grpc/grpc_protocol_test.go +++ b/protocol/grpc/grpc_protocol_test.go @@ -64,6 +64,7 @@ func TestGrpcProtocol_Export(t *testing.T) { func TestGrpcProtocol_Refer(t *testing.T) { go internal.InitGrpcServer() + defer internal.ShutdownGrpcServer() time.Sleep(time.Second) proto := GetProtocol() diff --git a/protocol/grpc/internal/server.go b/protocol/grpc/internal/server.go index 5c08b13267313d4fba1825731d532521fd6f9274..cb406bc622b99dcb2cf363717f059e48e67bd2df 100644 --- a/protocol/grpc/internal/server.go +++ b/protocol/grpc/internal/server.go @@ -27,6 +27,10 @@ import ( "google.golang.org/grpc" ) +var ( + s *grpc.Server +) + // server is used to implement helloworld.GreeterServer. type server struct { UnimplementedGreeterServer @@ -45,9 +49,16 @@ func InitGrpcServer() { if err != nil { log.Fatalf("failed to listen: %v", err) } - s := grpc.NewServer() + s = grpc.NewServer() RegisterGreeterServer(s, &server{}) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } } + +func ShutdownGrpcServer() { + if s == nil { + return + } + s.GracefulStop() +}