Similar with httpbin(https://httpbin.org/) to test the grpc connection.
Binary
# install binary
export VERSION="1.1.0"
export PLATFORM="linux_amd64"
curl -sSL https://github.com/Anddd7/grpcbin/releases/download/v${VERSION}/grpcbin_v${VERSION}_${PLATFORM}.tar.gz -o grpcbin.tar.gz
tar -xzf grpcbin.tar.gz grpcbin
# start server
./grpcbin serve
# send grpc call
./grpcbin unary --message hello
Docker
# pull docker image
docker pull ghcr.io/anddd7/grpcbin:latest
# start server
docker run -d -p 50051:50051 ghcr.io/anddd7/grpcbin
# send grpc call to server
docker run -it ghcr.io/anddd7/grpcbin unary --message hello --server <server_container_ip>
# you can get server ip via
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)
from v1.1.0, it support tls connection.
you can use--tls-cert
and--tls-key
to define the cert and key file for both server and client.
Built-in self-signed certificate (see certs
)
# start server with tls cert
docker run -d -p 50051:50051 ghcr.io/anddd7/grpcbin serve --tls-cert="/certs/server.crt" --tls-key="/certs/server.key"
# send grpc call to server
docker run -it ghcr.io/anddd7/grpcbin unary --message hello --server <server_container_ip> --tls-cert="/certs/server.crt"
Use your own certificate
# start server with tls cert
docker run -d -p 50051:50051 -v /path/to/your/cert:/certs ghcr.io/anddd7/grpcbin serve --tls-cert="/certs/server.crt" --tls-key="/certs/server.key"
# send grpc call to server
docker run -it -v /path/to/your/cert:/certs ghcr.io/anddd7/grpcbin unary --message hello --server <server_container_ip> --tls-cert="/certs/server.crt"
RequestAttributes is used to contol how server handle the request, including:
- http_code: returns specific http status code, only <400 returns body
- delay: delay time for server to response
- response_headers: add headers to response
ResponseAttributes is used to inspect the request metadata, including:
- requester_ip
- requester_host
- requester_user_agent
- request_headers
Send a data and get a result
grpcbin unary --message hello
# delay 5s
grpcbin unary --message hello --delay 5
# add custom headers in both request and response
grpcbin unary --message hello --response-headers=responder=anddd7 --headers=caller=anddd7
Send a data and get a stream of results
grpcbin server-streaming --message hello
# get 5 messages
grpcbin server-streaming --message hello --count 5
# delay 2s for each message
grpcbin server-streaming --message hello --count 5 --delay 2
Send a stream of data and get a result
grpcbin client-streaming --message hello
# send 5 messages
grpcbin client-streaming --message hello --count 5
# delay 2s for server response
grpcbin client-streaming --message hello --count 5 --delay 2
Send a stream of data and get a stream of results
grpcbin bidirectional-streaming --message hello
# send and get 5 messages
grpcbin bidirectional-streaming --message hello --count 5
# delay 2s for each round
grpcbin bidirectional-streaming --message hello --count 5 --delay 2
You you want to use it in kubernetes, check example and tutorial here.