diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000000..0d2fa7a42b --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,44 @@ +on: + push: + branches: + - "**" # target all branches + pull_request: + branches: + - master + +name: Code Coverage + +env: + # We partition coverage tests into multiple parts to avoid filling diskspace in a single runner + PARTITIONS_COUNT: 8 + +jobs: + coverage: + runs-on: ubuntu-latest + + strategy: + matrix: + # This range spans from `0` to `PARTITIONS_COUNT - 1`, where `PARTITIONS_COUNT` is the number of partitions (defined in env var above) + partition: [0, 1, 2, 3, 4, 5, 6, 7] + + steps: + - name: Install dependencies + run: sudo apt-get install -yqq build-essential python3 python3-toml + - uses: actions/checkout@v1 + - name: Install rust + run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly-2024-03-20 + - name: Run cargo clean + run: cargo clean + - name: Install grcov from cargo + run: cargo install grcov + + - name: Run coverage tests + run: python3 build-tools/workspace-partition.py ${{ env.PARTITIONS_COUNT }} ${{ matrix.partition }} | xargs -I {} sh -c 'CARGO_INCREMENTAL=0 RUST_BACKTRACE=full RUST_LOG=debug RUSTFLAGS="-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off" RUSTDOCFLAGS="-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off" RUSTUP_TOOLCHAIN=nightly-2024-03-20 cargo test' + + - name: Collect coverage data with grcov + run: grcov . --source-dir . --output-type lcov --branch --ignore-not-existing --binary-path ./target/debug/ -o grcov-report-${{ matrix.partition }} + + - uses: actions/upload-artifact@v2 + with: + name: code-coverage-report-${{ matrix.partition }} + path: grcov-report-${{ matrix.partition }} diff --git a/.github/workflows/coverage.yml.disabled b/.github/workflows/coverage.yml.disabled deleted file mode 100644 index 17a4e7cd4a..0000000000 --- a/.github/workflows/coverage.yml.disabled +++ /dev/null @@ -1,76 +0,0 @@ -# on: -# push: -# branches: -# - "**" # target all branches -# pull_request: -# branches: -# - master - -# name: Code Coverage - -# env: -# # We partition coverage tests into multiple parts to avoid filling diskspace in a single runner -# PARTITIONS_COUNT: 30 - -# jobs: -# coverage: -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# # This range spans from `0` to `PARTITIONS_COUNT - 1`, where `PARTITIONS_COUNT` is the number of partitions (defined in env var above) -# partition: -# [ -# 0, -# 1, -# 2, -# 3, -# 4, -# 5, -# 6, -# 7, -# 8, -# 9, -# 10, -# 11, -# 12, -# 13, -# 14, -# 15, -# 16, -# 17, -# 18, -# 19, -# 20, -# 21, -# 22, -# 23, -# 24, -# 25, -# 26, -# 27, -# 28, -# 29, -# ] - -# steps: -# - name: Install dependencies -# run: sudo apt-get install -yqq build-essential python3 python3-toml -# - uses: actions/checkout@v1 -# - name: Install rust -# run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly-2023-11-01 -# - name: Run cargo clean -# run: cargo clean -# - name: Install grcov from cargo -# run: cargo install grcov - -# - name: Run coverage tests -# run: python3 build-tools/workspace-partition.py ${{ env.PARTITIONS_COUNT }} ${{ matrix.partition }} | xargs -I {} sh -c 'CARGO_INCREMENTAL=0 RUST_BACKTRACE=full RUST_LOG=debug RUSTFLAGS="-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off" RUSTDOCFLAGS="-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off" RUSTUP_TOOLCHAIN=nightly-2023-11-01 cargo test' - -# - name: Collect coverage data with grcov -# run: grcov . --source-dir . --output-type lcov --branch --ignore-not-existing --binary-path ./target/debug/ -o grcov-report-${{ matrix.partition }} - -# - uses: actions/upload-artifact@v2 -# with: -# name: code-coverage-report-${{ matrix.partition }} -# path: grcov-report-${{ matrix.partition }} diff --git a/.github/workflows/loom.yml b/.github/workflows/loom.yml index 9e9adefa98..d0a6403eaa 100644 --- a/.github/workflows/loom.yml +++ b/.github/workflows/loom.yml @@ -18,18 +18,20 @@ jobs: test_loom: runs-on: ubuntu-latest steps: + - name: Checkout repository and submodules + uses: actions/checkout@v2 + with: + submodules: recursive + - name: Update local dependency repositories run: sudo apt-get update - name: Install dependencies run: sudo apt-get install -yqq --no-install-recommends build-essential python3 python3-toml podman build-essential pkg-config libssl-dev - name: Install rust deps run: sudo apt-get install -yqq build-essential pkg-config libssl-dev - - uses: actions/checkout@v2 + - name: Install rust run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(python3 ./build-tools/rust-version-extractor/rust-version-extractor.py) - - name: Checkout repository and submodules - uses: actions/checkout@v2 - with: - submodules: recursive + - name: Run permutation tests run: cargo test --tests --release -p storage -p chainstate-storage -p storage-lmdb -p storage-inmemory