Distributed data-plane performance testing tool
539e376978
The previous commit attempted to prevent a hung process/thread by using a "tcp ping" to determine if the server_endpoint was reachable before deploying the heat stack and starting the heartbeat thread. While this approach works well in theory we're finding that in practice in a live K8 environment we're seeing a lot of random errors: [Errno 111] Connection refused: ConnectionRefusedError There could be numerous reasons for these random connection errors but ZMQ has retry logic which should overcome these problems. This commit updates the sockets used in ZMQ to add a timeout (a padded value of agent_loss_timeout). While this does not prevent the creation of a heat stack and heartbeat thread that might never respond, it does solve the initial problem of having stuck process/threads and getting a clean exit Change-Id: I8193c72120b459c2a18d780d9f8799e8df592e20 |
||
---|---|---|
doc/source | ||
etc | ||
shaker | ||
tools | ||
.dockerignore | ||
.gitignore | ||
.gitreview | ||
.stestr.conf | ||
.zuul.yaml | ||
config-generator.conf | ||
Dockerfile | ||
LICENSE | ||
openstack-common.conf | ||
README.rst | ||
readthedocs.yml | ||
requirements.txt | ||
rtd-requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
Shaker
The distributed data-plane testing tool built for OpenStack.
Shaker wraps around popular system network testing tools like iperf, iperf3 and netperf (with help of flent). Shaker is able to deploy OpenStack instances and networks in different topologies. Shaker scenario specifies the deployment and list of tests to execute. Additionally tests may be tuned dynamically in command-line.
Features
- User-defined topology via Heat templates
- Simultaneously test execution on multiple instances
- Interactive report with stats and charts
- Built-in SLA verification
Deployment Requirements
- Shaker server routable from OpenStack cloud
- Admin-user access to OpenStack API is preferable
Run in Python Environment
$ pip install pyshaker
$ . openrc
$ shaker-image-builder
$ shaker --server-endpoint <host:port> --scenario <scenario> --report <report.html>``
- where:
-
host
andport
- host and port of machine where Shaker is deployedscenario
- the scenario to execute, e.g. openstack/perf_l2 ( catalog)<report.html>
- file to store the final report
Full list of parameters is available in documentation.
Shaker in Container
Shaker is available as container at Docker Hub at performa/shaker
$ docker run -p <port>:<port> -v <artifacts-dir>:/artifacts performa/shaker --scenario <scenario> --server-endpoint <host:port>
--os-auth-url <os-auth-url> --os-username <os-username> --os-password <os-password> --os-project-name <os-project-name>
- where:
-
host
andport
- host and port on machine where Shaker is deployedartifacts-dir
- where to store report and raw resultscenario
- the scenario to execute, e.g. openstack/perf_l2 ( catalog)os-XXX
- OpenStack cloud credentials
Links
- PyPi - https://pypi.org/project/pyshaker/
- Docker - https://hub.docker.com/r/performa/shaker/
- Docs - https://pyshaker.readthedocs.io/
- Bugtracker - https://launchpad.net/shaker