"Yamcha is a basic HTTP load testing tool that works (Power lvl : 1480), showcasing mediocrity at its finest. Woah there, don't expect too much of him. He often ends up like ⬇️
Yamcha is a command-line load testing tool written in Go for conducting performance tests on HTTP/S applications.
- CLI-based: Easy-to-use command-line interface for running load tests.
- Various Attack Patterns: Supports Multiple attack variations like Steady, Burst, Spike, Random, Ramp-Up with more to come.
- Configurable HTTP Methods: Supports HTTP methods such as GET and POST for different testing scenarios.
- Request Body and Headers: Allows specifying request body and headers via a JSON file.
- Concurrent Request Handling: Utilizes goroutines (number depends on allowed cpu cores) for concurrent request handling.
- CPU Utilization Control: Allows setting the number of CPUs to utilize during load tests.
- Optional Plotting: Integrates optional plotting functionality to visualize load test results.
- Live Test Progress: Allows seamless visualization of test progress.
Clone the repository:
git clone https://github.com/your-username/Yamcha.git
cd Yamcha
Build the executable:
go build -o yamcha
Add the binary to the global scope
#If using zsh
nano ~/.zshrc
#if using bash
nano ~/.bashrc
and add the path to the binary using
export PATH="$PATH:/complete_path_to_cloned_repo/yamcha"
Run a basic load test:
./yamcha -url https://example.com -requests 100 -rate 10 -method GET
Or Run a default test for localhost:8080
./yamcha
-url
: Specify the URL of the target application.-req
: Number of requests to send during the test.-attack
: Type of attack to perform (steady, random, burst, rampup, spike, sustained).-method
: HTTP method to use (GET, POST, etc.).-rate
: Number of requests per second to send.-burst
: Number of bursts for burst load attack.-ss
: Step size for ramp up load attack.-sh
: Spike Height for spike load attack.-dur
: Duration for sustained load tests.-cpu
: Number of CPUs to utilize (optional).-plot
: Enable plotting of load test results as a time series (optional).-body
: Path to a JSON file specifying request body and headers.-conn
: Number of Active connections
Enhance your load testing experience with a real-time progress bar, thanks to the github.com/schollz/progressbar/v3 library
. The progress bar provides visual feedback on the test's progress, helping you to track the status of your load tests efficiently.
{
"Headers": {
"Content-Type": "application/json",
"Authorization": "Bearer token",
"Session-ID" : "Session ID here"
},
"Body": {
"message": "Hello world",
"user": "test_user_1",
"timestamp": "2024-07-15"
}
}