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.10.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.10-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wrknoob-1.0.10.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.10.tar.gz
Algorithm Hash digest
SHA256 e9cfeb4e43d88e2a0049c8e57abf5d3062ca2c42e694f4293d1caf5cc6d93bed
MD5 df2f3f72537bf7043dd0ea4e5b5086f2
BLAKE2b-256 03eded4fa332d4a62e17b860be902db6f1db8702a5812a2d1bdd88d4d1e7817f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrknoob-1.0.10-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.10-py3-none-any.whl
Algorithm Hash digest
SHA256 a4aa46c8de871b8240e29a1608d73977e43d2b43951b3b805c59e627a06b79f7
MD5 46ae8091efa3feca7ac093dcccbb73ec
BLAKE2b-256 56a4062e73ddaa657de165a02078a205821b714798f9f97de67c1c8acffa1c30

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