Crates.io | goku-bench |
lib.rs | goku-bench |
version | 1.1.7 |
source | src |
created_at | 2023-02-16 17:35:32.748177 |
updated_at | 2024-10-28 21:56:04.309211 |
description | Goku is an HTTP load testing application written in Rust |
homepage | |
repository | https://github.com/jcaromiq/goku |
max_upload_size | |
id | 786927 |
size | 1,286,056 |
Goku is a high-performance, scalable HTTP load-testing tool designed for benchmarking and performance analysis of web services. Inspired by tools like Drill and Vegeta, Goku offers modern features and simplicity for engineers to simulate and analyze traffic efficiently.
Fast and scalable HTTP load testing
Supports structured, real-time metrics
Detailed performance analytics
You can download the latest version of Goku directly to your current directory with the following command:
curl -sSL https://raw.githubusercontent.com/jcaromiq/goku/v1.1.7/scripts/install.sh | sh
cargo install goku-bench
goku --version
Go to the Goku's GitHub Releases page and download the latest .tar.gz
file that matches your system. Currently, tarballs are available for the following:
As a requirement, you need rust
installed:
$ cargo build --release
CLI is versioned with SemVer v2.0.0.
See CONTRIBUTING.md.
Usage: goku [OPTIONS] --target <TARGET>
Options:
-v, --verbose Runs in verbose mode
-t, --target <TARGET> URL to be requested using an operation [default: GET] Ex. GET http://localhost:3000/
-r, --request-body <REQUEST_BODY> File path for the request body
-c, --clients <CLIENTS> Number of concurrent clients [default: 1]
-i, --iterations <ITERATIONS> Total number of iterations [default: 1]
-d, --duration <DURATION> Duration of the test in second
--headers <HEADERS> Headers, multi value in format headerName:HeaderValue
--scenario <SCENARIO> Scenario file
-h, --help Prints help
-V, --version Prints version information
--target
-t
Specifies the operation and url to make the request, default to GET.
Format: GET https://localhost:3000
--request-body
-r
OptionalSpecifies the path of file with the body to send.
--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.
--duration
-d
Specifies the duration of the test in seconds.
--headers
OptionalSpecifies the headers to be sent.
--scenario
OptionalSpecifies the scenario file in yaml format.
target: POST http://localhost:3000/
clients: 50
requests: 1000
headers:
- key: "bar"
value: "foo"
- key: "Content-Type"
value: "application/json"
body: "{\"firstName\": \"Terry\",
\"lastName\": \"Medhurst\",
\"maidenName\": \"Smitham\",
\"age\": 50}"
--help
Prints help.
--version
Prints version information.
goku --target "GET http://localhost:3000"
goku --target http://localhost:3000?foo=bar
goku -c 50 -i 1000 --target http://localhost:3000
goku -c 50 --duration 60 --target http://localhost:3000
goku --target "GET http://localhost:3000" --headers Content-Type:application/json --headers bar:foo
goku -c 50 -i 1000 -r body.json --target "POST http://localhost:3000"
goku -r body.json --target "POST http://localhost:3000" --headers Content-Type:application/json --headers bar:foo
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
95'th percentile: 319 ms
99.9'th percentile: 367 ms
See LICENSE.
If you appreciate all the job done in this project, a small donation is always welcome: