#load-testing #http #performance #cli

bin+lib goku

goku is a HTTP load testing application written in Rust

2 releases

0.1.1 Nov 13, 2019
0.1.0 Nov 10, 2019

#303 in Profiling

MIT license

14KB
238 lines

goku

goku

Overview

Actions Status crate-name at crates.io

goku is a HTTP load testing application written in Rust

(This is inspired by vegeta!)

Demo

goku

Installation

Pre-compiled executables

Get them here

using homebrew

brew install k-nasa/tap/goku

using cargo

cargo install goku

Installation of cargo itself.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Usage

goku 0.1.0
goku is a HTTP load testing application written in Rust

USAGE:
    goku [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    help          Show help
    kamehameha    Run load test [aliases: attack]

Example

kamehameha

Send 10,000 requests to 127.0.0.1:8080 in 10 parallel (There is an attack alias because hitting 'kamehameka' is awkward.)

goku kamehameha -c 10 -n 10000 'http://127.0.0.1:8080'
# or goku attack -c 10 -n 10000 'http://127.0.0.1:8080'

Output in json and text is possible. When combined with jq, the display can be made beautiful.

goku kamehameha -c 10 -n 10000 'http://127.0.0.1:8080' -o json | jq .

{
  "errors": [],
  "concurrency_level": 10,
  "time_taken_test": {
    "secs": 2,
    "nanos": 209216142
  },
  "complete_requests": 10000,
  "failed_requests": 0,
  "total_transferred": 1290000,
  "total_time": {
    "secs": 22,
    .
    .
    .

Contribution

  1. Fork it ( http://github.com/k-nasa/goku )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

MIT

Author

k-nasa

my website

Dependencies

~11–20MB
~276K SLoC