Skip to main content

A simple CLI tool

Project description

๐Ÿงช wrknoob โ€” Noob-Friendly Load Testing CLI for wrk

wrknoob is a Python CLI tool that helps you run structured load tests using wrk, visualize results with pretty graphs and tables, and export reports โ€” all with zero setup fuss.

Whether you're benchmarking a Quarkus app or a Flask toy server, wrknoob gives you insight into latency and throughput over varying concurrency levels.


โœจ Features

  • ๐Ÿ” Run batch load tests with customizable wrk parameters
  • ๐ŸŒˆ Pretty CLI output using rich
  • ๐Ÿ“Š Plot requests/sec and latency graphs using matplotlib
  • ๐Ÿงพ Save results to CSV
  • ๐Ÿ”ค Render tabular report directly in the terminal
  • ๐Ÿ’พ Export charts as image files

โš™๏ธ Installation

Prerequisites

  • Python 3.8+
  • wrk installed and available in your $PATH

Install wrk via Homebrew if you're on macOS:

brew install wrk

1. Clone the Repository

git clone https://github.com/sitasp/wrknoob.git
cd wrknoob

2. Set Up a Virtual Environment

python3 -m venv .venv
source .venv/bin/activate

3. Install Python Dependencies

pip install -r requirements.txt

๐Ÿš€ Usage

python wrknoob.py

Youโ€™ll be prompted to enter:

  • Target URL (e.g., http://localhost:8080/hello)
  • Duration per test
  • Number of threads
  • List of concurrent connection levels (e.g., 10,25,50,100)
  • Whether to show graph or table
  • Whether to export report to CSV or save plot as PNG

๐Ÿ“‚ Output

  • Terminal report with colored stats
  • Graphs showing performance trends
  • Optional: report.csv and plot.png saved in current directory

๐Ÿง‘โ€๐Ÿ’ป Example

python wrknoob.py
Target URL: http://localhost:8080/hello
Test Duration (e.g., 10s): 10
Threads: 4
Concurrent Connections (comma-separated): 10,25,50,100
Show Graph? [y/n]: y
Save Report to CSV? [y/n]: y

๐Ÿง‘โ€๐Ÿ’ป Actual Output in my PC

(wrknoob-env) satishpatra@Satishs-MacBook-Pro documents % python wrknoob.py

Matplotlib is building the font cache; this may take a moment.
Enter the target URL (http://localhost:8080/hello): http://localhost:8080/hello
Number of threads (8): 8
Test duration (in seconds) (15): 15
List of concurrent connections (comma-separated) (25,50,100,150,200): 25,50,75,100,125,150
Running test with 25 connections...
Running test with 50 connections...
Running test with 75 connections...
Running test with 100 connections...
Running test with 125 connections...
Running test with 150 connections...
                 wrk Load Test Results                 
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Requests/sec โ”ƒ Latency โ”ƒ Latency Unit โ”ƒ Connections โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚      78319.3 โ”‚  335.03 โ”‚           us โ”‚          25 โ”‚
โ”‚     83496.36 โ”‚  565.02 โ”‚           us โ”‚          50 โ”‚
โ”‚     84455.19 โ”‚  840.47 โ”‚           us โ”‚          75 โ”‚
โ”‚     83904.85 โ”‚    1.14 โ”‚           ms โ”‚         100 โ”‚
โ”‚     82508.58 โ”‚    1.44 โ”‚           ms โ”‚         125 โ”‚
โ”‚     82327.44 โ”‚    1.73 โ”‚           ms โ”‚         150 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Do you want to save the results as CSV? [y/n]: y
Saved results to wrk_results.csv
Do you want to plot the results? [y/n]: y
2025-05-13 21:53:05.667 Python[84411:5633002] +[IMKClient subclass]: chose IMKClient_Modern
2025-05-13 21:53:05.667 Python[84411:5633002] +[IMKInputSession subclass]: chose IMKInputSession_Modern
Saved plot to wrk_results.png

๐Ÿ“ License

MIT ยฉ 2025 [sitasp]


๐Ÿค› Contributing

PRs welcome! If you have ideas like JSON output, REST API integration, or plotting percentiles โ€” open an issue or fork away. ๐Ÿš€

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wrknoob-1.0.11.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wrknoob-1.0.11-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file wrknoob-1.0.11.tar.gz.

File metadata

  • Download URL: wrknoob-1.0.11.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wrknoob-1.0.11.tar.gz
Algorithm Hash digest
SHA256 e79061f8f236892ffa07340d24c859f6cc75238ff468562712b7ac616222487e
MD5 4272233e1d32602b7d17e770d099671d
BLAKE2b-256 b9eb494baa49f736a3036c06735a224ef3769529b54c6e1c7b29d03f982821a4

See more details on using hashes here.

File details

Details for the file wrknoob-1.0.11-py3-none-any.whl.

File metadata

  • Download URL: wrknoob-1.0.11-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wrknoob-1.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 afe32d395e7d1803455ff75b118afbb171dfee6e0ad09df60f0052af648408c2
MD5 81424262ef627db00d488f83e887fd48
BLAKE2b-256 a699cc35efab20602ad3f5df8e337a29be22bb86d3471062352aa841cba04c81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page