Code Coverage (#82)

code coverage:  generate code coverage reports

* Add instrumentation flags to rocshmem target when adding -DBUILD_CODE_COVERAGE cmake flag
* Add helper script to build all subprojects and generate code coverage reports
* Update README with code coverage instructions

[ROCm/rocshmem commit: 474112d03c]
This commit is contained in:
Jobbins
2025-05-16 09:09:17 -06:00
committad av GitHub
förälder 6a7644e467
incheckning 22ea3f0c8b
7 ändrade filer med 90 tillägg och 8 borttagningar
+61
Visa fil
@@ -0,0 +1,61 @@
#!/bin/bash
set -e
export CODE_COV="ON"
src_path=$(dirname "$(realpath $0)")
mkdir -p ipc && pushd ipc
$src_path/ipc_single
popd
mkdir -p ro_net && pushd ro_net
$src_path/ro_net
popd
mkdir -p ro_ipc && pushd ro_ipc
$src_path/ro_ipc
popd
mkdir -p ./test_output
export PROFRAW_DIR=./coverage-report/profraw
mkdir -p $PROFRAW_DIR
# Unit Tests
LLVM_PROFILE_FILE="$PROFRAW_DIR/ipc_unit-%p.profraw" ../scripts/unit_tests/driver.sh ./ipc/tests/unit_tests/rocshmem_unit_tests all
LLVM_PROFILE_FILE="$PROFRAW_DIR/ro_net-unit-%p.profraw" ../scripts/unit_tests/driver.sh ./ro_net/tests/unit_tests/rocshmem_unit_tests all
LLVM_PROFILE_FILE="$PROFRAW_DIR/ro_ipc-unit-%p.profraw" ../scripts/unit_tests/driver.sh ./ro_ipc/tests/unit_tests/rocshmem_unit_tests all
# Functional Tests
LLVM_PROFILE_FILE="$PROFRAW_DIR/ipc-functional-%p.profraw" ../scripts/functional_tests/driver.sh ./ipc/tests/functional_tests/rocshmem_example_driver all ./test_output/
LLVM_PROFILE_FILE="$PROFRAW_DIR/ro_net-functional-%p.profraw" ../scripts/functional_tests/driver.sh ./ro_net/tests/functional_tests/rocshmem_example_driver all ./test_output/
LLVM_PROFILE_FILE="$PROFRAW_DIR/ro_ipc-functional-%p.profraw" ../scripts/functional_tests/driver.sh ./ro_ipc/tests/functional_tests/rocshmem_example_driver all ./test_output/
# Coverage Report
/opt/rocm/llvm/bin/llvm-profdata merge -sparse $PROFRAW_DIR/*.profraw -o ./coverage-report/rocshmem.profdata
/opt/rocm/llvm/bin/llvm-cov report \
-object ./ipc/tests/unit_tests/rocshmem_unit_tests \
-object ./ipc/tests/functional_tests/rocshmem_example_driver \
-object ./ro_net/tests/unit_tests/rocshmem_unit_tests \
-object ./ro_net/tests/functional_tests/rocshmem_example_driver \
-object ./ro_ipc/tests/unit_tests/rocshmem_unit_tests \
-object ./ro_ipc/tests/functional_tests/rocshmem_example_driver \
-instr-profile=./coverage-report/rocshmem.profdata \
--ignore-filename-regex=".*test.*"
/opt/rocm/llvm/bin/llvm-cov show \
-object ./ipc/tests/unit_tests/rocshmem_unit_tests \
-object ./ipc/tests/functional_tests/rocshmem_example_driver \
-object ./ro_net/tests/unit_tests/rocshmem_unit_tests \
-object ./ro_net/tests/functional_tests/rocshmem_example_driver \
-object ./ro_ipc/tests/unit_tests/rocshmem_unit_tests \
-object ./ro_ipc/tests/functional_tests/rocshmem_example_driver \
-instr-profile=./coverage-report/rocshmem.profdata \
--ignore-filename-regex=".*test.*"
-format=html \
-output-dir=coverage-report
cd coverage-report && python3 -m http.server
@@ -36,6 +36,7 @@ fi
src_path=$(dirname "$(realpath $0)")/../../
cmake \
-DBUILD_CODE_COVERAGE=${CODE_COV:-OFF} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$install_path \
-DCMAKE_VERBOSE_MAKEFILE=OFF \
@@ -36,6 +36,7 @@ fi
src_path=$(dirname "$(realpath $0)")/../../
cmake \
-DBUILD_CODE_COVERAGE=${CODE_COV:-OFF} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$install_path \
-DCMAKE_VERBOSE_MAKEFILE=OFF \
@@ -36,6 +36,7 @@ fi
src_path=$(dirname "$(realpath $0)")/../../
cmake \
-DBUILD_CODE_COVERAGE=${CODE_COV:-OFF} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$install_path \
-DCMAKE_VERBOSE_MAKEFILE=OFF \