-
Notifications
You must be signed in to change notification settings - Fork 0
Development
Ken Tobias edited this page Jun 21, 2026
·
15 revisions
This page covers compiling, testing, and benchmarking the etr codebase.
To compile and run all tests locally, you need:
- The Rust toolchain (
rustup.rs) -
just(command runner) -
tmux(required for local end-to-end tests) - OpenSSH client/server with passwordless login to
localhostconfigured (required for E2E tests)
# Debug build
cargo build
# Release build
cargo build --releaseWe maintain a comprehensive suite of static checks, unit tests, and automated end-to-end tests:
# Run formatting and clippy lints
just check
# Run unit and integration tests (78 tests)
just test
# Run local end-to-end session and reconnect tests (launches etr in tmux)
just e2e-local
# Run local end-to-end tests for -L port forwarding (TCP + UDP, IPv4 + IPv6, reconnect)
just e2e-forward-local
# Run local end-to-end tests for -R port forwarding (TCP + UDP, IPv4 + IPv6, reconnect)
just e2e-reverse-local
# Run local end-to-end test for --env variable forwarding
just e2e-env-local
# Regression test: concurrent UDP senders through -L (v0.4.9 per-sender routing)
just e2e-udp-concurrent
# Run throughput/memory stress tests
just stress-localWe use criterion to benchmark core performance-sensitive areas of the codebase, including TLS certificate generation, connection handshakes, round-trip latency, and throughput.
# Run the benchmark suite
just bench