digitaldemocratic/stress-tests/README.md

55 lines
1.8 KiB
Markdown
Raw Normal View History

# Stress tests
By executing tests in this normalised fashion it is easier to compare results
between different instances or different patch levels.
This documents normalised stress-testing and references files under
[`stress-tests`][st].
[st]: https://gitlab.com/DD-workspace/DD/-/tree/main/stress-tests
## VM tests
- `vm-test.sh`: generate a text file to compare CPU and other factors across
VM types, providers or instances which may affect DD performance.
We can compare the resulting lgos just with, e.g. `vim -d`.
## DD tests
Currently these tests perform logins and interact with Nextcloud, but it would
be interesting to expand them to interact with other services.
### Directory contents
This directory contains following files:
- `dd-stress-test.tpl.jmx`: template to generate [JMeter][jm] tests to execute
- `dd-tests.sh`: helper script that generates the actual test plan files and
executes them. See `./dd-tests.sh --help`
- `dd-test-selenium.sh`: this gives us an idea of how a user would perceive
DD to be behaving while under load. Called by `./dd-tests.sh` by default.
### Results
Results will be saved in a `results` directory, where each subdirectory
corresponds to a stress test executed with `dd-test.sh`.
The naming scheme for those subdirectories is: `DOMAIN_THREADCOUNT_DURATION`
Where `THREADCOUNT` and `DURATION` are the corresponding [JMeter][jm]
parameters.
Each results directory contains:
- `log`: the [JMeter][jm] log
- `results`: the [JMeter][jm] results file
- `html/index.html`: the interactive graphs for the data as produced by JMeter
- `selenium/session.html`: the session report as would be perceived by a user.
Note this requires Python3 and selenium and can be disabled by setting the
environment variable: `USE_SELENIUM=NO`.
[jm]: https://jmeter.apache.org/