GithubHelp home page GithubHelp logo

vishalsodani / ali Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nakabonne/ali

0.0 1.0 0.0 26.98 MB

Generate HTTP load and plot the results in real-time

License: MIT License

Go 99.40% Dockerfile 0.11% Makefile 0.50%

ali's Introduction

ali

codecov.io Code Coverage Release Go Doc

A load testing tool aimed to perform real-time analysis, inspired by vegeta and jplot.

Screenshot

ali comes with an embedded terminal-based UI where you can plot the metrics in real-time, so lets you perform real-time analysis on the terminal.

Installation

Binary releases are available through here.

Via Homebrew

brew install nakabonne/ali/ali

Via APT

wget https://github.com/nakabonne/ali/releases/download/v0.3.2/ali_0.3.2_linux_amd64.deb
apt install ./ali_0.3.2_linux_amd64.deb

Via RPM

curl -OL https://github.com/nakabonne/ali/releases/download/v0.3.2/ali_0.3.2_linux_amd64.rpm
rpm -i ./ali_0.3.2_linux_amd64.rpm

Via AUR

Thanks to orhun, it's available as ali in the Arch User Repository.

yay -S ali

Via Go

go get github.com/nakabonne/ali

Via Docker

docker run --rm -it nakabonne/ali ali

Usage

Quickstart

ali http://host.xz

Replace http://host.xz with the target you want to issue the requests to. Press Enter when the UI appears, then the attack will be launched with default options.

Options

ali -h
Usage:
  ali [flags] <target URL>

Flags:
  -b, --body string         A request body to be sent.
  -B, --body-file string    The path to file whose content will be set as the http request body.
      --debug               Run in debug mode.
  -d, --duration duration   The amount of time to issue requests to the targets. Give 0s for an infinite attack. (default 10s)
  -H, --header strings      A request header to be sent. Can be used multiple times to send multiple headers.
  -k, --keepalive           Use persistent connections. (default true)
  -M, --max-body int        Max bytes to capture from response bodies. Give -1 for no limit. (default -1)
  -m, --method string       An HTTP request method for each request. (default "GET")
  -r, --rate int            The request rate per second to issue against the targets. Give 0 then it will send requests as fast as possible. (default 50)
  -t, --timeout duration    The timeout for each request. 0s means to disable timeouts. (default 30s)
  -v, --version             Print the current version.

Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

Features

Plot in real-time

Currently it only plots latencies, but in the near future more metrics will be drawn as well.

Screenshot

Visualize the attack progress

This will help you during long tests.

Screenshot

Mouse support

With the help of mum4k/termdash, it's intuitive to operate.

Screenshot

Roadmap

  • Eliminate field-based configuration and only support configuration through cli flags
  • Support more options for HTTP requests (#1)
  • Plot more metrics in real-time (#2)

Acknowledgements

This project would not have been possible without the effort of many individuals and projects but especially tsenart/vegeta for the inspiration and powerful API. Besides, ali is built with mum4k/termdash (as well as nsf/termbox-go) for the rendering of all those fancy graphs on the terminal.

ali's People

Contributors

brenol avatar cvhariharan avatar ilmanzo avatar nakabonne avatar orhun avatar rzkmak avatar

Watchers

 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.