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 [Your Name]


๐Ÿค› 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-0.1.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

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

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for wrknoob-0.1.0.tar.gz
Algorithm Hash digest
SHA256 db889a91ee84369508eba02755eb39624b5d513039815d0ae5cf4a71f7ef2766
MD5 61c3437740d53f9ff129c6f10524bcbd
BLAKE2b-256 86454e07e9f4b208dbf5abd86a6947ca6381f5f65b93efe1233d6b2049a0182b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wrknoob-0.1.0-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-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c2b86a348e09d96e5c7e4c2202f8a25ec2bb90402f090a829077a27b8b50db90
MD5 52bf403b823b8250370b543900f11b59
BLAKE2b-256 fcbe899dfc3a34c8f16fb8fc639e5ac2f15023ca92cc3f1f7df167a15277e1fd

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