https://github.com/k-nasa/goku
goku is a HTTP load testing application written in Rust
https://github.com/k-nasa/goku
benchmark http load-testing rust
Last synced: 10 months ago
JSON representation
goku is a HTTP load testing application written in Rust
- Host: GitHub
- URL: https://github.com/k-nasa/goku
- Owner: k-nasa
- Created: 2019-11-07T00:21:43.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-16T20:04:36.000Z (about 3 years ago)
- Last Synced: 2025-03-19T08:43:42.656Z (10 months ago)
- Topics: benchmark, http, load-testing, rust
- Language: Rust
- Size: 171 KB
- Stars: 34
- Watchers: 1
- Forks: 3
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# goku

## Overview
[](https://github.com/k-nasa/goku/actions)
[](https://crates.io/crates/goku)
goku is a HTTP load testing application written in Rust
(This is inspired by [vegeta](https://github.com/tsenart/vegeta)!)
## Demo

## Installation
### Pre-compiled executables
Get them [here](https://github.com/k-nasa/goku/releases)
```
curl -L -o goku.tar.gz https://github.com/k-nasa/goku/releases/download/0.1.1/goku_x86_64-apple-darwin.tar.gz
tar -zxvf goku.tar.gz
# Move binary file to the path
```
### 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](https://github.com/k-nasa/goku/blob/master/LICENSE)
## Author
[k-nasa](https://github.com/k-nasa)
[my website](https://k-nasa.me)