| name | developing-rally |
| description | Work on Rally's own codebase, not running benchmarks with it. Use when setting up the dev environment, running Rally's tests or linters, navigating its source, debugging Rally's own code, or making changes to Rally itself. |
Developing Rally
For working on Rally, not just running it. The docs under References are the
source of truth — prefer them over guessing.
Setup
Development uses uv and needs jq. Rally runs on Linux/macOS
only (no Windows) and targets Python 3.10–3.13. From a clone:
make install # create .venv and editable-install with dev extras
source .venv/bin/activate
esrally --help # runs your working-tree code (editable install)
make install editable-installs the workspace, so esrally / esrallyd (or uv run esrally …)
run your working-tree code directly. Avoid the ./rally / ./rallyd wrappers while developing:
they auto-update from git (via run.sh) and only run on a clean master, otherwise erroring
There are uncommitted changes … — pass --skip-update if you must use them.
Everyday make targets
make lint / make format — run/apply pre-commit linters (black, isort, …).
make test — unit tests. Scope with make test ARGS=tests/foo_test.py; make test-all
runs across Python 3.10–3.13.
make it — integration tests (slow, CI-oriented). make benchmark runs the micro-benchmarks.