Welcome to the Distributed Load Testing System! This project aims to provide a scalable, high-throughput, and concurrent load testing solution for web servers WITH POKEMONS!. The system is designed to coordinate multiple driver nodes using Kafka as a communication service. It supports two types of load tests: Tsunami testing with configurable delays between requests and Avalanche testing with immediate request dispatch.
The system consists of an Orchestrator Node, Driver Nodes, a Kafka broker for communication, and a Target HTTP Server for testing. The communication between nodes is facilitated through Kafka topics. The Orchestrator Node exposes a REST API for test control, metrics reporting, and monitoring.
Warning
This application involves high utilization of resources and is recommended to run on WSL (Windows Subsystem for Linux).
-
Clone the repository:
git clone https://github.com/pranav-ambig/YADLTS.git
-
Navigate:
cd YADLTS
-
RUN:
docker build -t yadlts . docker run -it yadlts
cd Frontend npm install npm run dev
Note
You need to have docker installed.
Charizard | Blastoise | Venusaur | Pikachu | Snivy | Mewtwo | Tentacruel | Zapdos
- register
{
"node_id": '<POKEMON NAME>',
"node_IP": '<NODE IP ADDRESS (with port) HERE>',
"message_type": 'DRIVER_NODE_REGISTER',
}
- test_config
{
"test_id": '<RANDOMLY GENERATED UNQUE TEST ID>',
"test_type": '<AVALANCHE|TSUNAMI>',
"test_message_delay": '<0 | CUSTOM_DELAY (only applicable in place of Tsunami testing)>',
"message_count_per_driver": '<A NUMBER>'
}
- trigger
{
"test_id": '<RANDOMLY GENERATED UNQUE TEST ID>',
"trigger": "YES"
}
- metrics
{
"node_id": '<POKEMON NAME>',
"test_id": '<RANDOMLY GENERATED UNQUE TEST ID>',
"metrics": {
"Mean": '<Mean of Latency>',
"Median": '<Median of Latency>',
"Mode": '<Mode of Latency>',
"Min": '<Minimum Latency>',
"Max": '<Maximum Latency>',
"latency": '<Latency>',
"Requests": '<Number of requests sent>'
}
}
- heartbeat
{
"node_id": '<POKEMON NAME>',
"heartbeat": "<YES/NO>"
}
We welcome contributions! Feel free to open issues for bug reports or feature requests. Pull requests are encouraged If you find this repository useful, kindly consider giving it a star ⭐️
This project is licensed under the MIT License