diff --git a/.github/actions/pmem_test_prepare/action.yml b/.github/actions/pmem_test_prepare/action.yml index 8a67800fcf4..2342444a309 100644 --- a/.github/actions/pmem_test_prepare/action.yml +++ b/.github/actions/pmem_test_prepare/action.yml @@ -9,6 +9,10 @@ inputs: description: Build with the fault injection capability required: false default: '0' + valgrind: + description: Build with Valgrind support + required: true + runs: using: composite steps: @@ -30,6 +34,7 @@ runs: - env: FAULT_INJECTION: ${{ inputs.fault_injection }} NDCTL_ENABLE: ${{ inputs.ndctl_enable }} + VALGRIND: ${{ inputs.valgrind }} run: | echo '::group::Build' $WORKDIR/build-pmdk.sh diff --git a/.github/workflows/pmem_test_matrix.yml b/.github/workflows/pmem_test_matrix.yml index ccb032b74c4..4b62b0c6788 100644 --- a/.github/workflows/pmem_test_matrix.yml +++ b/.github/workflows/pmem_test_matrix.yml @@ -9,6 +9,9 @@ on: force_enable: required: true type: string + valgrind: + required: true + type: string timeout_minutes: required: false type: number @@ -28,11 +31,14 @@ jobs: os: [rhel, opensuse] build: [debug, nondebug] + steps: - uses: actions/checkout@v4 - name: Test prepare uses: ./.github/actions/pmem_test_prepare + with: + valgrind: ${{ inputs.valgrind }} - name: Test run uses: ./.github/actions/pmem_test_run diff --git a/.github/workflows/pmem_tests.yml b/.github/workflows/pmem_tests.yml index 36899997ea8..7b4ce111f33 100644 --- a/.github/workflows/pmem_tests.yml +++ b/.github/workflows/pmem_tests.yml @@ -17,6 +17,7 @@ jobs: # Exclude all Valgrind tests. All tests employing Valgrind tooling are run # in the dedicated workflows below. force_enable: '["none"]' + valgrind: 0 # Test the default build with force-enabled Valgrind tooling for (persistent) @@ -25,6 +26,7 @@ jobs: uses: ./.github/workflows/pmem_test_matrix.yml with: force_enable: '["pmemcheck", "memcheck"]' + valgrind: 1 # Test the default build with force-enabled Valgrind tooling for thread error @@ -33,6 +35,7 @@ jobs: uses: ./.github/workflows/pmem_test_matrix.yml with: force_enable: '["drd", "helgrind"]' + valgrind: 1 # 9h = 7h20m (the longest workflow execution time) + ~20% leeway. timeout_minutes: 540 @@ -52,6 +55,8 @@ jobs: - name: Test prepare uses: ./.github/actions/pmem_test_prepare + with: + valgrid: 1 - name: Test run uses: ./.github/actions/pmem_test_run @@ -73,6 +78,7 @@ jobs: uses: ./.github/actions/pmem_test_prepare with: fault_injection: '1' + valgrind: 1 - name: Test run uses: ./.github/actions/pmem_test_run @@ -84,6 +90,8 @@ jobs: # By default, PMDK is built with NDCTL in order to provide RAS features. # This build is only viable as long as DAOS builds PMDK with NDCTL_ENABLE=n # https://github.com/daos-stack/pmdk/pull/12 + # It should be removed as soon as following PR is merged + # https://github.com/daos-stack/pmdk/pull/35 ndctl_enable_n: name: Without ndctl if: github.repository == 'pmem/pmdk' @@ -96,8 +104,17 @@ jobs: uses: ./.github/actions/pmem_test_prepare with: ndctl_enable: n + valgrind: 0 - name: Test run uses: ./.github/actions/pmem_test_run with: build: nondebug # only the production build is considered + + # Test the default build with the basic test suite. + Basic_w_Valgrind: + uses: ./.github/workflows/pmem_test_matrix.yml + with: + # Exclude all Valgrind tests but keep Valgrind tools built-in. + force_enable: '["none"]' + valgrind: 1