Stressgres
Stressgres is a stress-testing tool for ParadeDB and standard PostgreSQL, featuring both a text UI and an automated headless mode. We used it for local development and in CI to replicate and test against representative customer workloads, called suites.
Quickstart
- Run the interactive UI against a suite:
cargo run -- ui suites/vanilla-postgres.toml
- Run headless mode with logging:
cargo run -- headless suites/vanilla-postgres.toml --runtime=300000 --log-file=logs/test.log
Suites are TOML files in suites/. The vanilla-postgres.toml suite exercises baseline Postgres features and works with any PostgreSQL-compatible server.
Docker
To run Stressgres from within Docker, use:
docker run --rm paradedb/stressgres:latest cargo run -- headless suites/vanilla-postgres.toml
The source, including all suites, are loaded in the Docker image. The image prebuilds Stressgres and can run in air-gapped environments like Antithesis.
For an interactive shell:
docker run -d --name stressgres paradedb/stressgres:latest
docker exec -it stressgres bash
Docker Hub
To publish the Stressgres image to Docker Hub, trigger a workflow dispatch of the `Publish Stressgres (Docker) from within the Actions tab. This is useful to get updated Stressgres binaries to our BYOC end-to-end testing framework.
Antithesis
Antithesis is a deterministic simulation testing (DST) tool. Stressgres, via the Docker image, is able to run within Antithesis to execute suites in a fully deterministic environment. To execute a Stressgres suite within Antithesis, it needs to have its own singleton_driver_ file defined within the suites/antithesis/ folder. For more information on how Antithesis singleton drivers work, please refer to the Antithesis documentation.
To add a new suite:
Create the corresponding singleton driver
Trigger a release of the Docker image to the Antithesis registry via the
Test pg_search (Antithesis)workflow. This workflow builds and publishes the latest commit ParadeDB and Stressgres Docker images to Antithesis, and triggers a test run.
If it behaves as desired, merge your new singleton driver to main. The new suite will then be added to the nightly Antithesis runs.
Connection Strings
To facilitate testing with Antithesis, we deploy the ParadeDB CloudNativePG cluster with a manifest that hardcodes a dummy password. This ensures we can modify the Stressgres suite connection_string without needing to extract passwords dynamically.
The manifests can be found at docker/manifests/paradedb.yaml in paradedb/paradedb/paradedb/paradedb-enterprise and the password used in the singleton driver files must match.