https://github.com/siddhant-vij/load-testing-tool
Word frequency analyzer with a custom load testing tool to compare server performance under varying loads.
https://github.com/siddhant-vij/load-testing-tool
benchmarking concurrency http http-server java load-testing multithreading network-programming performance-testing server-socket text-analysis
Last synced: 11 months ago
JSON representation
Word frequency analyzer with a custom load testing tool to compare server performance under varying loads.
- Host: GitHub
- URL: https://github.com/siddhant-vij/load-testing-tool
- Owner: siddhant-vij
- License: mit
- Created: 2023-12-04T21:00:22.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-05T17:13:02.000Z (about 2 years ago)
- Last Synced: 2025-01-16T19:36:58.280Z (about 1 year ago)
- Topics: benchmarking, concurrency, http, http-server, java, load-testing, multithreading, network-programming, performance-testing, server-socket, text-analysis
- Language: Java
- Homepage:
- Size: 1.88 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Multithreading Load Testing Tool
This project consists of two main components:
1. A simple Java-based server that counts the frequency of words in the downloaded text files from Gutenberg project.
2. A load testing tool that sends GET requests to this server to retrieve the frequency of words listed in "search_words.csv".
The goal is to measure and compare the latency and throughput of the server under different loads by varying the number of threads in the load testing tool.
## Table of Contents
1. [Server Implementation](#server-implementation)
1. [Load Testing Tool](#load-testing-tool)
1. [Running the Tests](#running-the-tests)
1. [Output Format](#output-format)
1. [Notes](#notes)
1. [Contributing](#contributing)
1. [License](#license)
## Server Implementation
- The server is implemented using Java's Networking API (no framework is used).
- It listens for HTTP GET requests and processes them to return the frequency of a specified word in `resources/*.txt`.
## Load Testing Tool
- The tool reads words from `resources/search_words.csv` and generates HTTP GET requests for each word.
- It supports running multiple threads to simulate concurrent requests.
- The tool measures the latency (time taken for each request) and throughput (total requests completed in a time frame) for each run.
## Running the Tests
- Start the server application.
- Run the load testing tool with a specified number of threads (from 1 to 16).
- The tool will display the average latency and throughput for each run in the terminal.
## Output Format
Run `PerformanceCheck.java` to see the results which will be displayed in a formatted table in the terminal, showing latency and throughput against the number of threads, comparing performance as follows:
- Single threaded Server & Single threaded Load testing tool
- Single threaded Server & Multi threaded Load testing tool
- Multi threaded Server & Single threaded Load testing tool
- Multi threaded Server & Multi threaded Load testing tool
## Notes
- Ensure that the server is running before starting the load testing tool.
- The server and load testing tool are designed for educational purposes to demonstrate the effects of multithreading on performance.
## Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
1. **Fork the Project**
2. **Create your Feature Branch**:
```bash
git checkout -b feature/AmazingFeature
```
3. **Commit your Changes**:
```bash
git commit -m 'Add some AmazingFeature'
```
4. **Push to the Branch**:
```bash
git push origin feature/AmazingFeature
```
5. **Open a Pull Request**
## License
Distributed under the MIT License. See [`LICENSE`](https://github.com/siddhant-vij/Load-Testing-Tool/blob/main/LICENSE) for more information.