🌟

grpcurlを用いてgRPCサービスの動作確認を行う

2022/05/31に公開

はじめに

gRPCサーバーの開発を進めている際に、gRPCサーバーに対しての動作確認をローカル環境で行いたい場合があると思います。
そこで、動作確認の際に、便利なツールが公開されているので紹介します。

grpcurl

https://github.com/fullstorydev/grpcurl

install

今回はMacにて使用するので、以下のコマンドでinstallを行います。

brew install grpcurl

事前準備

gRPCサーバーのmain.goに以下の処理を追記しておきます。

下記のソースを追加

	s := services.NewServer(client)

	reflection.Register(s) ⇦追記
	log.Printf("server listening at %v", lis.Addr())
	if err := s.Serve(lis); err != nil {
		log.Fatal(err)
	}

上記の設定を追加しておかないと、grpcurlコマンド使用時に以下のようなエラーが返ってきます。

Failed to list services: server does not support the reflection API

使い方

  • gRPCサーバーが提供しているservice一覧取得
$ grpcurl -plaintext localhost:50051 list
genproto.CatService
genproto.DogService
genproto.PonyService
  • 特定のserviceが保有するrpc関数の一覧取得
$ grpcurl -plaintext localhost:50051 honeycomb.AlarmService list genproto.CatService
genproto.CatService.Create
genproto.CatService.Delete
genproto.CatService.Get
genproto.CatService.List
genproto.CatService.Update
  • 特定のserviceが保有する特定のrpc関数を実行する
$ grpcurl -plaintext -d '{"name": "taro" }' localhost:50051 honeycomb.AlarmService/list
{
  response: {
  }
}

-dオプションを明示するとrequestフィールドを付与した上で関数を呼び出すことができます。

Discussion