View Source Running a load test
Running load test
Starting a scenario on multiple nodes is slightly more difficult. You need a number of machines that will be actually running the test (slaves) and one controller machine (master, which might be one of the test nodes). Another aproach to do it is to use docker containers.
Now instead of amoc
use amoc_dist
- this will tell amoc to distribute
and start scenarios on all known nodes (except master).
amoc_dist:do(my_scenario, 100, Settings).
:amoc_dist.do(:my_scenario, 100, settings)
Start my_scenario
spawning 100 amoc users with IDs from the range [1, 100]
inclusive.
In this case sessions are going to be distributed across all nodes except master.
Settings
is an optional proplist with scenario options that can be extracted using amoc_config module.
The values provided in this list shadow OS and APP environment variables.
Note that these settings will be propagated automatically among all the nodes in the amoc cluster.
amoc_dist:add(50).
:amoc_dist.add(50)
Add 50 more users to the currently started scenario.
amoc_dist:remove(50, Force).
:amoc_dist.remove(50, force)
Remove 50 sessions.
Where Force
is a boolean of value:
true
- to kill the user processes usingsupervisor:terminate_child/2
functionfalse
- to sendexit(User, shutdown)
signal to the user process (can be ignored by the user)
All the users are temporary
children of a simple_one_for_one
supervisor with the shutdown
key set to 2000
.
Note that removal operation is asynchronous, and if we call amoc_controller:remove_users/2
two times in a row, it may select the same users for removal.
Also all the user processes trap exits.
Don't stop scenario on exit
There is one problem with the bin/amoc console
command. When you exit the Erlang
shell the scenario is stopped (in fact the erlang nodes are killed).
To prevent that start the amoc node in the background using bin/amoc start
.
Now you can run commands by attaching to the amoc's node with bin/amoc attach
,
typing a command and then pressing Ctrl+D to exit the shell.
After that the scenario will keep running.