func TestGRPCServer(t *testing.T) { r := mock.NewRegistry() s := NewServer( server.Name("foo"), server.Registry(r), ) pb.RegisterSayHandler(s, &sayServer{}) if err := s.Start(); err != nil { t.Fatalf("failed to start: %v", err) } if err := s.Register(); err != nil { t.Fatalf("failed to register: %v", err) } // check registration services, err := r.GetService("foo") if err != nil || len(services) == 0 { t.Fatal("failed to get service: %v # %d", err, len(services)) } defer func() { if err := s.Deregister(); err != nil { t.Fatalf("failed to deregister: %v", err) } if err := s.Stop(); err != nil { t.Fatalf("failed to stop: %v", err) } }() cc, err := grpc.Dial(s.Options().Address, grpc.WithInsecure()) if err != nil { t.Fatal("failed to dial server: %v", err) } rsp := pb.Response{} if err := grpc.Invoke(context.Background(), "Say.Hello", &pb.Request{Name: "John"}, &rsp, cc); err != nil { t.Fatal("error calling server: %v", err) } if rsp.Msg != "Hello John" { t.Fatalf("Got unexpected response %v", rsp.Msg) } }
func main() { service := micro.NewService( micro.Name("go.micro.srv.greeter"), ) // optionally setup command line usage service.Init() // Register Handlers hello.RegisterSayHandler(service.Server(), new(Say)) // Run server if err := service.Run(); err != nil { log.Fatal(err) } }