This repository contains the implementation of a Distributed Load Testing System, designed and built as part of the Big Data Project 2023 at PES University. The system coordinates multiple driver nodes to perform highly concurrent, high-throughput load tests on a web server. The communication between nodes is facilitated using Kafka as the messaging service.
- The system comprises Orchestrator and Driver nodes, implemented as separate processes.
- Orchestrator and Driver nodes communicate via Kafka using specified topics and message formats.
- The system supports Avalanche and Tsunami testing, with configurable parameters for each test type.
- Metrics reporting and a scalable architecture for running tests with varying numbers of nodes are integral features.
- Exposes a REST API for controlling and monitoring tests.
- Implements a Runtime controller to handle heartbeats, coordinate between driver nodes, and store metrics.
- Uses Kafka for communication, publishing to topics such as
register
,test_config
,trigger
,metrics
, andheartbeat
. - Achieves scalability by supporting a variable number of driver nodes.
- Sends requests to the target web server based on Orchestrator's instructions.
- Records statistics for response times (mean, median, min, max) and sends results back to the Orchestrator.
- Implements a communication layer using Kafka, publishing heartbeats and metrics.
- Provides endpoints
/ping
for testing and/metrics
for observing request and response counts. - Serves as the target web server for load testing.
- Allows users to initiate load tests by providing test type, message count per driver, and optional parameters.
- Sends a POST request to the Orchestrator to start the load test.
- Python (3.x)
- Kafka (running on
localhost:9092
) - Flask (for Orchestrator and Target Server)
-
Start Kafka and ensure it's accessible on
localhost:9092
. -
Run the Orchestrator node:
python load-orchestrator.py
-
Run Driver nodes (for example, two nodes):
python load-driver.py
-
Run the Target HTTP Server:
python target-server.py
-
Optionally, use the Client to start load tests:
python load-client.py
- Sakshi S
- Tarun Sairaj Vepamaninti
- Swayam Chhaba
Distributed Load Testing System with Kafka. Orchestrator and Driver nodes, scalable tests. Code files (load-orchestrator.py
, load-driver.py
, load-client.py
, target-server.py
) and README for easy use.