praxis-bench is the shared benchmarking and performance-testing tool for
Praxis. It load-tests a Praxis (or
compatible) proxy image and produces comparison reports against Envoy, NGINX,
and HAProxy baselines, so any repository with a standard proxy build (praxis,
ai, experimental) can measure it the same way.
The proxy under test is treated as an opaque container image: plug in your
image with --image and get results. The tool does not depend on Praxis
source.
Run the CLI directly:
cargo run -p praxis-bench -- --image ghcr.io/praxis-proxy/praxis:latestOr use the container runner, which bundles the docker CLI and the
vegeta/fortio load generators. Share the host Docker socket and network so
it can start proxy containers and reach them:
docker run --rm --network host \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/praxis-proxy/benchmarks --image ghcr.io/praxis-proxy/praxis:latestSubcommands:
praxis-bench # run benchmarks, write a report
praxis-bench visualize ... # render an SVG chart from a report
praxis-bench compare A B # compare two reports for regressionsA full run needs a Docker (or Podman) daemon and the vegeta and fortio
load generators on PATH; both are bundled in the container image.
This repository follows the praxis-proxy conventions: the same machine-enforced quality standards used across the organization.
- Lints: ~200 rustc/clippy/rustdoc lints at deny, including no unchecked
arithmetic, no
ascasts, nounwrap/panic, exhaustive enum matching, and documentation on every item (public and private) - Testing: unit + integration tests required; 90% line / 80% region coverage floor; mutation testing; property-based testing conventions
- Supply chain:
cargo audit+cargo denywith pinned registries and a license allowlist - Reviewability: PRs capped at 750 added production lines, with required descriptions, conventional commits, DCO sign-off, and signed commits
- Everything else: markdown, TOML, shell, spelling, and workflow files are linted too
Install the requirements, then:
make all # build + fmt + lint + test + audit
make help # every available target| Document | Contents |
|---|---|
| conventions.md | Coding style, testing, type design, lint policy |
| development.md | Requirements, build/test/coverage commands |
| enhancements | Proposal lifecycle for larger changes |
| release.md | Versioning, tagging, release pipeline |
| CONTRIBUTING.md | Contributor entry point and PR gates |