grpc工具之grpcurl、grpcui、ghz

通过 grpcurl 工具,我们可以在没有客户端代码的环境下测试 gRPC 服务。

使用前提:

1、安装grpcurl
根据github文档执行:https://github.com/fullstorydev/grpcurl

2、在注册服务之后,启动反射服务:reflection.Register(rpcServer)
grpc工具之grpcurl、grpcui、ghz_第1张图片

主要命令:

列出服务名称:
grpcurl -plaintext localhost:4399 list
查看服务描述信息:
grpcurl -plaintext localhost:4399  describe  pb.Order
根据服务名称pb.Order查看服务的方法列表:
grpcurl -plaintext localhost:4399  list pb.Order

调用方法:

linux环境:

grpcurl -plaintext -d '{"user_id": 10}' localhost:4399  pb.Order/login

(window这样执行会报错:Error invoking method “pb.Order/login”: error getting request data: invalid character ‘u’ looking for beginning of object key string)

window环境:

grpcurl -plaintext -d '{\"user_id\": 1}' localhost:4399 pb.Order/login

有些方法用了自定义token校验,通过metadata传递字段进行判断权限。因为metadata是放在 Request-Headers 内。所以用-H指定参数。

grpcurl -plaintext -H 'app_id:10086-9527' -d '{\"order_id\":1}' localhost:4399 pb.Order.orderDetail

在这里插入图片描述

【工具–grcpui】

除了grpcurl还有另一个利器:grpcui (web ui界面,类似postman)
根据 https://github.com/fullstorydev/grpcui 下载这个工具:

go install github.com/fullstorydev/grpcui/cmd/grpcui@latest

然后输入 grpcui -plaintext 127.0.0.1:8081 即可自动生成一个url地址访问调用rpc接口。
grpc工具之grpcurl、grpcui、ghz_第2张图片

【工具-grpc压测:gzh】

下载:https://github.com/bojand/ghz (直接选择go install的方式)

-c:并发请求数
-n:最大请求数,达到后则结束测试
-d /–data= :请求参数。json格式。(-d的话直接空格加json字符串。–data就是=后面接json字符串)
–call:指定调用的方法。具体格式为包名.服务名.方法名 (可以通过grpcurl工具查看服务名,再通过服务名获取方法名:grpcurl -plaintext 127.0.0.1:4399 list)

ghz -c 10 -n 10 --insecure  --proto ../pb/order.proto --call pb.Order.orderDetail 0.0.0.0:4399
ghz -c 10 -n 10 --insecure  --proto ../pb/order.proto --call pb.Order.orderDetail -d '{\"orderId\": 3}' --metadata='{\"app_id\": \"10086-9527\"}' 0.0.0.0:4399 (window环境下json参数需要加上反斜杠)

grpc工具之grpcurl、grpcui、ghz_第3张图片

你可能感兴趣的:(grpc,golang,go)