Skip to content
Snippets Groups Projects
Name Last commit Last update
docker
src
test
.gitignore
README.md
attach

TDDE35 Project: Netstorm

Introduction

This is a distributed test suite that can be used to measure web servers performance from a wide set of geographical locations. The measurements that we care about in this specific test suite are throughput, latency and bandwidth link bottlenecks.

For this testing suite to work, you need to set up as many "worker nodes" as you want. These will, for best results, be placed at different locations. A "worker node" has one mission, to test against a specified web server and then send that information to one collector, called a "controller node". A "controller node" is the, well, controller in this scheme. It is the node that all the other nodes connect to and has all the control during testing. For example, it tells all the "worker nodes" when and what it should test.

Getting started

We recommend that every machine run Ubuntu 22.04 or atleast Linux.

In order to get started, please follow the steps below. (We assume that python3.11 is installed on all the machines!)

  1. Clone the repository at the worker locations and one controller location

  2. Setting up the controller

    • Start a terminal in the src folder and write python3 main.py controller --port myPort where myPort is the port your controller should run on. If you do not use the --port command, you will default to port 9000.
  3. Setting up the worker

    • You need to setup httperf. See: https://github.com/httperf/httperf
    • Start a terminal in the src folder and write python3 main.py worker --location myLocation --connect controllerAddr:port where myLocation is the location of the worker, controllerAddr is the IP address or domain name of the controller and port is the controllers port. If you want to avoid using these commands, you can set environment variables. Set NETSTORM_CONTROLLER_ADDRESS=controllerAddr and NETSTORM_WORKER_LOCATION=myLocation where controllerAddr and myLocation are as described earlier.
  4. You should now see some prints in the worker and controller terminals. Check the controller terminal if the connection was successful.

  5. Use the 'list' command in the controller to see if all workers are connected. When assured, type start webserver port requests connections where webserver and port is the webserver's address and port, requests is the amount of requests to be made and connections are the amount of connections that are to be made. Example: start google.com 80 5 1, which will test against google at port 80 (HTTP) and will do 5 requests at 1 connection.

Authors / Developers

Oskar Arensmeier
Liam Andersson
Joakim Lundqvist
Mattias Karlsson