Hailstorms is a distributed load test framework based on locust.io. The benefits of Hailstorm is that you can load test on an arbitrary number of machines and the only thing you need besides the Hailstorms framework is bash and Docker.
If you want it is possible to run the load from your machine without using docker. Read more in the Running locally in a virtual environment section below.
_
___( ).
. ( ).
( Hailstorm )
(___________)
/ / / · / /
/ • / / · /
᠂ / ・ · / ᛫
Before you can perform any load tests in your own project you need to initialize your working directory. The rest of this readme will assume you have choosen our selection of folders:
- hailstorm - Here the initialization will create some scripts for your convenience.
- generated - A folder where load test generated data is stored.
- scripts - Here is where you place your load test scripts.
You can select any other names for your folders but these are the once we are going to refer to later.
The initialization functionality is built into the docker image so we need to call that.
Make sure you are in the directory of your load test project.
$ mkdir hailstorm # Here the help scripts are being created
$ touch hailstorm/init # We create an empty init file
$ chmod +x hailstorm/init # We make the init file executable
$ # We run the docker image romram/hailstorms with init command
$ docker run --rm -it -v ${PWD}/hailstorm:/opt/hailstorms/helpscripts romram/hailstorms init
== Validating helpscript folder ==========================================
Success!! Script generated.
Please run the newly generated init script. It is stored in your helpscripts folder.
Follow the instructions written in the terminal:
$ hailstorm/init
Beside the two folders mentioned an additional folder called generated
has been created.
Files that are generated by the script are stored here.
This section assumes you have initialized your project the way described in the Setup of your own project section above.
Your have gotten the sample script minimal_sample.py
installed during the setup.
Let's kick of by running that; using the help scripts that also where created.
Since the minimal_sample.py script expects the feeder web service to be running, start it in a separate terminal window like this:
$ hailstorm/start feeder
The service is listening to port 3456.
With the web service running we can type:
$ hailstorm/start local --script scripts/minimal_sample.py --profile docker
The --profile docker is necessary since localhost in this case will be the docker container instead of your computer.
This section explains how to start a load test without using docker. However the docker way is the recommended way.
This assumes that you are running from within the hailstorm project and not from a project of your own.
You need to create a python3 virtual environment. The setup of the virtual environment is handled by the framework.
To create a virtual environment do:
$ make virtualenv
This creates a virtual environment and installs all modules needed.
Since the needed modules are installed in the virtual environment we need to activate that before continuing:
$ venv/bin/activate
When this is done (venv)
is visible in the beginning of your prompt.
If you haven't created and activated the virtual environment yet, follow the instructions above.
Since the minimal_sample.py script expects the feeder web service to be running, start it in a separate terminal window like this:
$ make feeder
To start the minimal_sample.py script from the docs section type this:
(venv) $ hailstorms/local --script docs/samples/scripts/minimal_sample.py