/RamBam

Stress-test/benchmarking tool for HTTP with thousands of concurrent connections. Written in C++. Mirror of: https://gitlab.melroy.org/melroy/rambam

Primary LanguageC++MIT LicenseMIT

RamBam

RamBam is a stress-test/benchmarking tool for HTTP, using massive parallel HTTP requests.
RamBam is written in C++ and using a Asio (also written in C++).

Demo

Demo of RamBam testing localhost

Download

Download the latest release.

Usage

Help: rambam -h

Usage (default: Number of Requests GET Test of "just" 100 requests):

rambam domain.tld

Increase the default request count from 100 to 10.000 requests (-r for requests):

rambam -r 10000 https://domain.tld

Using the duration test for 10 seconds (-d for duration):

rambam -d 10 https://domain.tld

Example using Post requests (-p for JSON Post data):

rambam -p '{"username": "melroy"}' https://domain.tld/api/v1/user/create

More advanced parameters (-v for verbose output, --debug for additional TLS debug information):

rambam -v --debug https://domain.tld

You can use multiple parameters together, except the -d for duration test (in seconds) and -r for request test (total requests). Just pick one of the two different tests.

Additional options

  • Enable debug output via: --debug flag.
  • If you have a self-signed certificate try to use -o flag to override verifcation or disable peer certificate verification using: --disable-peer-verify flag.
  • Silent all output via : -s flag.

Note: We don't support transfer-encoding: chunked (HTTP 1.1), hence we use only HTTP 1.0 requests.


Developers

Requirements

  • C++ Compiler (sudo apt install build-essential for GNU compiler, Clang is also supported)
  • CMake (sudo apt install cmake)
  • OpenSSL (sudo apt install libssl-dev openssl)
  • Ninja build system (optional, but recommended: sudo apt install ninja-build)
  • Ccache (optional, but much recommended: sudo apt install ccache)

Build

Building the RamBam binary is very easy:

# Configure build folder (prepare)
cmake -B build
# Build it! Using make
cmake --build ./build -j 8 --config Release --target rambam

Binary is now located at: build/rambam.