Build Rust binaries with cargo build --release. Build PostgreSQL module before
integration tests, using server headers for PostgreSQL major under test
See module build guide for PG_CONFIG and installation
make -C pgext
make -C pgext faultshim.so
cargo nextest run --workspace --all-targets --locked
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
RUSTDOCFLAGS='-D warnings' cargo doc --no-deps --lib --binsIntegration tests start PostgreSQL and ClickHouse instances. Put matching
PostgreSQL tools and ClickHouse on PATH, and install extensions required by
selected tests. Tests skip when a tool, extension, or generated fixture is
missing, so a passing result alone does not prove integration scenario ran
Set WALSHADOW_REQUIRE_TOOLS=1 to fail them instead, as CI does
CI workflow defines supported test matrix and dependency setup. Nextest config bounds cluster-test concurrency to limit memory and disk use
Regenerate fixtures using PostgreSQL major being tested:
WALSHADOW_USE_LOCAL=1 fixtures/wal/classify/capture.sh
WALSHADOW_USE_LOCAL=1 fixtures/wal/filter/capture.sh
WALSHADOW_USE_LOCAL=1 fixtures/wal/xlog_switch/capture.sh
WALSHADOW_USE_LOCAL=1 fixtures/wal/vacuum_full_pg_depend/capture.shRun instrumented suite and generate reports from same execution:
make -C pgext coverage-build
cargo llvm-cov clean --workspace
cargo llvm-cov nextest --workspace --all-targets --locked --no-report --no-fail-fast
cargo llvm-cov report --summary-only
cargo llvm-cov report --lcov --output-path /tmp/walshadow-lcov.info
make -C pgext coverage-htmlInstall GCC, matching gcov, and gcovr for
PG module coverage of pgext/*.c and pgext/*.h
CI merges coverage across PostgreSQL 16, 17, 18, and 19. Use fresh line-coverage reports to locate missing behavior; exported function counts can include generic instantiations. Do not disable lints or coverage to make a report pass
Performance workloads and deployment commands live in bench Keep performance comparisons separate from correctness tests
Keep operating instructions in docs, system explanations and diagrams in architecture, and unfinished work in plans. Remove completed plans. Link source for low-level behavior instead of copying implementation into prose
Describe behavior in present tense. Keep release history and roadmap language out of operating guides. State upgrade requirements by version or capability