Code Monkey home page Code Monkey logo

oha's Introduction

oha (おはよう)

GitHub Actions Crates.io Arch Linux Homebrew

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.

demo

Installation

This program is built on stable Rust.

cargo install oha

On Arch Linux

pacman -S oha

On macOS (Homebrew)

brew install oha

On Debian (Azlux's repository)

echo "deb http://packages.azlux.fr/debian/ buster main" | sudo tee /etc/apt/sources.list.d/azlux.list
wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add -
apt update
apt 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.

oha 0.4.5
hatoo <[email protected]>
Ohayou(おはよう), HTTP load generator, inspired by rakyll/hey with tui animation.

USAGE:
    oha [FLAGS] [OPTIONS] <url>

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 <n-requests>                      Number of requests to run. [default: 200]
    -c <n-workers>                       Number of workers to run concurrently. You may should increase limit to number
                                         of open files for larger `-c`. [default: 50]
    -z <duration>                        Duration of application to send requests. If duration is specified, n is
                                         ignored.
                                         Examples: -z 10s -z 3m.
    -q <query-per-second>                Rate limit for all, in queries per second (QPS)
        --fps <fps>                      Frame per second for tui. [default: 16]
    -m, --method <method>                HTTP method [default: GET]
    -H <headers>...                      Custom HTTP header. Examples: -H "foo: bar"
    -t <timeout>                         Timeout for each request. Default to infinite.
    -A <accept-header>                   HTTP Accept Header.
    -d <body-string>                     HTTP request body.
    -D <body-path>                       HTTP request body from file.
    -T <content-type>                    Content-Type.
    -a <basic-auth>                      Basic authentication, username:password
        --http-version <http-version>    HTTP version. Available values 0.9, 1.0, 1.1, 2.
        --host <host>                    HTTP Host header
    -r, --redirect <redirect>            Limit for number of Redirect. Set 0 for no redirection. [default: 10]
        --connect-to <connect-to>...     Override DNS resolution and default port numbers with strings like
                                         'example.org:443:localhost:8443'

ARGS:
    <url>    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.

oha's People

Contributors

hatoo avatar fasterthanlime avatar svenstaro avatar chipsenkbeil avatar akiradeveloper avatar dmitry-j-mikhin avatar yiblet avatar shirshak55 avatar equal-l2 avatar kngwyu avatar messense avatar togatoga avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.