qDup allows shell commands to be queued up across multiple servers to coordinate performance tests.
It is designed to follow the same workflow as a user at a terminal so that commands can be performed with or without qDup. Commands are grouped into re-usable scripts that are mapped to different hosts by roles.
qDup has 3 pre-defined phases for script execution to follow the usual performance test workflow: setup, run and cleanup.
- Queue shell commands using the qDup language
- Define the servers where the commands should be run
- Apply roles for the commands
See User Guide for the qDup user guide.
See Examples for various qDup examples.
See Commands for available commands.
See FAQ for frequently asked questions.
qDup builds to a single executable jar that includes all its dependencies using Apache Maven.
qDup requires Java 11 or higher.
mvn clean package
The qDup test suite requires Docker; otherwise the test suite can be skipped using
mvn -DskipTests clean package
Execute your qDup script using
java -jar qDup-uber.jar test.yaml
There are no required options for qDup, but you can specify the base folder where qDup should create the run folder
(-b /tmp
) or specify the full path where qDup should save the run files (-B /tmp/myRun
). The qDup YAML file
should be the last argument on the command line.
The above example shows only 1 YAML file but you can also load helper YAML files with
shared definitions (e.g. scripts
or hosts
)
java -jar qDup-uber.jar test.yaml hosts.yaml scripts.yaml
Remember to put your main YAML file first because it will take naming precedence
over any scripts
, state
, or hosts
that are defined in subsequent YAML files.
Roles are merged across all YAML files based on name.
Running java -jar qDup-uber.jar
without any arguments will list
the supported options for the jar.
Contributions to qDup are managed on GitHub.com
Contributions are most welcome !
Please, consult our Code of Conduct policies for interacting in our community.