Skip to content

Latest commit

 

History

History
66 lines (51 loc) · 2.64 KB

File metadata and controls

66 lines (51 loc) · 2.64 KB

Build and test

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 --bins

Integration 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

WAL fixtures and coverage

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.sh

Run 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-html

Install 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

Documentation

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