Categorygithub.com/Anddd7/grpcbin
modulepackage
1.1.1
Repository: https://github.com/anddd7/grpcbin.git
Documentation: pkg.go.dev

# README

Grpcbin

Similar with httpbin(https://httpbin.org/) to test the grpc connection.

Quick Start

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)

TLS Support

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"

Usage

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

Unary

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

Server Streaming

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

Client Streaming

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

Bidirectional Streaming

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

Tips

You you want to use it in kubernetes, check example and tutorial here.

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author