/goku

Goku is an HTTP load testing application written in Rust

Primary LanguageRustMIT LicenseMIT

Goku

Goku is a HTTP load testing tool built out of a need to drill HTTP services inspired by drill and vegeta

Goku

Install

Source

You need rust installed command:

$ cargo build --release

Versioning

CLI is versioned with SemVer v2.0.0.

Contributing

See CONTRIBUTING.md.

Usage manual

Usage: goku [OPTIONS] --target <TARGET>

Options:
  -t, --target <TARGET>              Url to be request with operation Ej, GET http://localhost:3000/ if operation is empty, will be GET by default
  -r, --request-body <REQUEST_BODY>  path of file for the request body
  -c, --clients <CLIENTS>            Number of concurrent clients [default: 1]
  -i, --iterations <ITERATIONS>      Total number of iterations [default: 1]
  -h, --help                         Print help
  -V, --version                      Print version

--target -t

Specifies the operation and url to make the request
Format: GET https://localhost:3000
if operation is empty, GET will be the default value

--request-body -r Optional

Specifies the path of file with the body to send
At the moment only json body is allowed

--clients -c

Specifies the number of concurrent calls to be used, defaults to 1.

--iterations -i

Specifies the total number of calls to be performed, default to 1.

--help

Prints the help and exits.

--version

Prints the version and exits.

Simple targets
goku --target "GET http://localhost:3000"
goku --target http://localhost:3000?foo=bar
goku --target http://localhost:3000 -c 50 -i 1000
Targets with custom headers
WIP
Targets with custom bodies
goku --target "POST http://localhost:3000" -c 50 -i 1000 -r body.json

Targets with custom bodies and headers
WIP
Output
Concurrency level 50
Time taken 4 seconds
Total requests 1000
Mean request time 169.90099999999998 ms
Max request time 415 ms
Min request time 5 ms
50'th percentile: 167 ms
90'th percentile: 287 ms
95'th percentile: 319 ms
99.9'th percentile: 367 ms

License

See LICENSE.