Files
qdrant/tools/unit-test-coverage.sh
Tim Visée 57ad76db98 Disable RocksDB features in local development builds (#7552)
* Disable rocksdb compile time feature by default

* Also disable RocksDB feature in segment crate

* Enable RocksDB feature in all CI builds

* Remove extra job for testing non-RocksDB build, it's the default now

* Keep RocksDB structures in generated OpenAPI schema

* Fix obsolete --workspace flag breaking builds with explicit features

* Also build including RocksDB in e2e tests on CI
2025-11-25 17:29:50 +01:00

47 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Usage: tools/coverage.sh
#
# For running on low RAM machines like Github CI, Use `RUN_PER_PACKAGE=true tools/coverage.sh`
#
# If using locally, occasionally run `cargo llvm-cov clean` to avoid bloating `target/llvm-cov-target` dir with .profraw files
RUN_PER_PACKAGE=${RUN_PER_PACKAGE:-"false"}
OUTPATH_PATH="unit-test-coverage.lcov"
# TODO: Try building with RUSTFLAG="-C instrument-coverage" instead of llvm-cov and see if that works faster or avoids OOM in CI
if [ "$RUN_PER_PACKAGE" == "false" ]; then
# Run for the entire workspace in one shot. This assumes that the machine has enough memory
cargo llvm-cov --no-clean nextest --profile ci --workspace --features rocksdb --lcov --output-path "lcov.info"
cargo llvm-cov report --html
exit 0
fi
PACKAGES=($(cargo metadata --format-version 1 | jq -r '.workspace_members[] | split("/") | .[-1] | split("#")[0]' | sort))
REPORT_DIR="/tmp/llvm-cov-reports"
echo "Workspace packages: ${PACKAGES[*]}"
mkdir -p "$REPORT_DIR"
LCOV_COMMAND_ARGS=""
for PACKAGE in "${PACKAGES[@]}"; do
echo "Testing package with coverage: $PACKAGE"
PACKAGE_REPORT_PATH="$REPORT_DIR/$PACKAGE.info"
# Profile "ci" is configured in .config/nextest.toml
cargo llvm-cov --no-clean nextest --profile ci -p "$PACKAGE" --features rocksdb --lcov --output-path "$PACKAGE_REPORT_PATH"
echo "Testing completed for package $PACKAGE. Cleaning artifacts"
cargo llvm-cov clean -p "$PACKAGE"
if [ -e "$PACKAGE_REPORT_PATH" ]; then # If file exists
LCOV_COMMAND_ARGS="${LCOV_COMMAND_ARGS} -a $PACKAGE_REPORT_PATH"
fi
done
if [ -n "$LCOV_COMMAND_ARGS" ]; then
lcov $LCOV_COMMAND_ARGS --output-file "$OUTPATH_PATH"
fi