oha (おはよう)

oha is a tiny program that sends some load to a web application and show realtime tui inspired by rakyll/hey.
This program is written in Rust and powered by tokio and beautiful tui by tui-rs.

Installation
This program is built on stable Rust.
cargo install oha
On Arch Linux
yay -S oha
On macOS (Homebrew)
brew install oha
Platform
- Linux - Tested on Ubuntu 18.04 gnome-terminal
- Windows 10 - Tested on Windows Powershell
- MacOS - Tested on iTerm2
Usage
-q
option works different from rakyll/hey. It's set overall query per second instead of for each workers.
```bash
oha 0.4.2
hatoo hato2000@gmail.com
Ohayou(おはよう), HTTP load generator, inspired by rakyll/hey with tui animation.
USAGE:
oha [FLAGS] [OPTIONS]
FLAGS:
--no-tui No realtime tui
--disable-compression Disable compression.
--disable-keepalive Disable keep-alive, prevents re-use of TCP connections between different HTTP requests.
--ipv6 Lookup only ipv6.
--ipv4 Lookup only ipv4.
--insecure Accept invalid certs.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-n Number of requests to run. [default: 200]
-c Number of workers to run concurrently. You may should increase limit to number
of open files for larger -c
. [default: 50]
-z Duration of application to send requests. If duration is specified, n is
ignored.
Examples: -z 10s -z 3m.
-q Rate limit for all, in queries per second (QPS)
--fps Frame per second for tui. [default: 16]
-m, --method HTTP method [default: GET]
-H ... Custom HTTP header. Examples: -H "foo: bar"
-t Timeout for each request. Default to infinite.
-A HTTP Accept Header.
-d HTTP request body.
-D HTTP request body from file.
-T Content-Type.
-a Basic authentication, username:password
--http-version HTTP version. Available values 0.9, 1.0, 1.1, 2.
--host HTTP Host header
-r, --redirect Limit for number of Redirect. Set 0 for no redirection. [default: 10]
ARGS:
Target URL.
```
Contribution
Feel free to help us!
Here are some issues to improving.
- Write tests
- Improve tui design.
- Show more information?
- There are no color in realtime tui now. I want help from someone who has some color sense.
- Improve speed
- I'm new to tokio. I think there are some space to optimize query scheduling.
- Output like CSV or JSON format.
- Improve histogram in summary output
- It uses very simple algorithm now.