Home

Awesome

ptg

Performance testing tool (Go), It is also a GUI gRPC client.

Test the gRPC service like postman.

<details> <summary>More screenshot</summary> <img src="pic/server-stream-min.gif"> <img src="pic/client-stream-min.gif"> <img src="pic/bd-stream-min.gif"> </details>

Features

Install

CLI app

go get github.com/crossoverJie/ptg
wget https://github.com/crossoverJie/ptg/releases/download/${version}/ptg-${os}-${version}.tar.gz

GUI app

To download the installer, go to the Releases Page.

Build from source

git clone git@github.com:crossoverJie/ptg.git
cd ptg
make release
make pkg-win
make pkg-macos

Usage

NAME:
   ptg - Performance testing tool (Go)

USAGE:
   ptg [global options] command [command options] [arguments...]

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --thread value, -t value              -t 10 (default: 1 thread)
   --Request value, --proto value        -proto http/grpc (default: http)
   --protocol value, --pf value          -pf /file/order.proto
   --fully-qualified value, --fqn value  -fqn package.Service.Method
   --duration value, -d value            -d 10s (default: Duration of test in seconds, Default 10s)
   --request value, -c value             -c 100 (default: 100)
   --HTTP value, -M value                -m GET (default: GET)
   --bodyPath value, --body value        -body bodyPath.json
   --header value, -H value              HTTP header to add to request, e.g. "-H Content-Type: application/json"
   --target value, --tg value            http://gobyexample.com/grpc:127.0.0.1:5000
   --help, -h                            show help (default: false)

http

ptg -t 20 -d 10 -proto http -tg "http://gobyexample.com"

Benchmark test for 10 seconds, using 20 goroutines.

output:

Requesting: http://gobyexample.com  <---------------> 1 p/s 100.00%

43 requests in 10 seconds, 13.88MB read.
Avg Req Time:           358.512071ms
Fastest Request:        93.518704ms
Slowest Request:        840.680771ms
Number of Errors:       0

POST example

ptg -t 2 -proto http -c 2 -M POST -H "Content-Type: application/json"  -body test.json -tg "http://xx/create"

gRPC(unary call)

ptg -t 10 -c 100 -proto grpc  -pf /xx/xx.proto -fqn hello.Hi.Say -body test.json  -tg "127.0.0.1:5000"

output:

thread: 10, duration: 0, count 100
Requesting: 127.0.0.1:5000  <---------------> 102 p/s 100.00%
100 requests in 11 seconds, 230.6kB read, and cost 1 second.
Avg Req Time:           116.602652ms
Fastest Request:        111.563179ms
Slowest Request:        128.587886ms
Number of Errors:       0

Acknowledgements