From b1c04c26788b800a08571ecb70644dd7b4a9c22a Mon Sep 17 00:00:00 2001 From: Wentao Zhang Date: Tue, 2 Jul 2024 23:12:53 -0500 Subject: [PATCH] ci: verify reset buttons are working --- .github/workflows/llvm-19-patch-v0.6.yml | 4 ++ ci/5_boot_kernel_and_collect_coverage.sh | 74 ++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/.github/workflows/llvm-19-patch-v0.6.yml b/.github/workflows/llvm-19-patch-v0.6.yml index 0b53384..5b23284 100644 --- a/.github/workflows/llvm-19-patch-v0.6.yml +++ b/.github/workflows/llvm-19-patch-v0.6.yml @@ -109,5 +109,9 @@ jobs: llc --version - name: Boot the kernel and collect coverage run: ./ci/5_boot_kernel_and_collect_coverage.sh + - name: Print the index of coverage report (immediately after counter reset) + run: cat $MCDC_HOME/analysis_cnts_reset/text-coverage-reports/index.txt + - name: Print the index of coverage report (immediately after bitmap reset) + run: cat $MCDC_HOME/analysis_bits_reset/text-coverage-reports/index.txt - name: Print the index of coverage report run: cat $MCDC_HOME/analysis/text-coverage-reports/index.txt diff --git a/ci/5_boot_kernel_and_collect_coverage.sh b/ci/5_boot_kernel_and_collect_coverage.sh index a43cf7c..6145e01 100755 --- a/ci/5_boot_kernel_and_collect_coverage.sh +++ b/ci/5_boot_kernel_and_collect_coverage.sh @@ -1,5 +1,79 @@ #!/bin/bash +# +# Test the functionality of cnts_reset +# + +GUEST_COMMANDS="true" +GUEST_COMMANDS="$GUEST_COMMANDS; uname -a" +GUEST_COMMANDS="$GUEST_COMMANDS; ls /sys/kernel/debug/llvm-cov" +GUEST_COMMANDS="$GUEST_COMMANDS; echo 1 > /sys/kernel/debug/llvm-cov/cnts_reset" +GUEST_COMMANDS="$GUEST_COMMANDS; cp /sys/kernel/debug/llvm-cov/profraw ." + +cd $MCDC_HOME/linux +$MCDC_HOME/linux-mcdc/scripts/q -c "$GUEST_COMMANDS" + +file profraw |& tee /tmp/file.log +if ! grep "LLVM raw profile data, version 10" /tmp/file.log > /dev/null; then + printf "\nUnexpected profraw\n" + exit 1 +fi + +mkdir -p $MCDC_HOME/analysis_cnts_reset +mv profraw $MCDC_HOME/analysis_cnts_reset +cd $MCDC_HOME/analysis_cnts_reset + +llvm-profdata merge profraw -o profdata +llvm-cov show --show-mcdc \ + --show-mcdc-summary \ + --show-region-summary=false \ + --show-branch-summary=false \ + --format=text \ + -use-color \ + -show-directory-coverage \ + -output-dir=text-coverage-reports \ + -instr-profile profdata \ + $MCDC_HOME/linux/vmlinux + +# +# Test the functionality of bits_reset +# + +GUEST_COMMANDS="true" +GUEST_COMMANDS="$GUEST_COMMANDS; uname -a" +GUEST_COMMANDS="$GUEST_COMMANDS; ls /sys/kernel/debug/llvm-cov" +GUEST_COMMANDS="$GUEST_COMMANDS; echo 1 > /sys/kernel/debug/llvm-cov/bits_reset" +GUEST_COMMANDS="$GUEST_COMMANDS; cp /sys/kernel/debug/llvm-cov/profraw ." + +cd $MCDC_HOME/linux +$MCDC_HOME/linux-mcdc/scripts/q -c "$GUEST_COMMANDS" + +file profraw |& tee /tmp/file.log +if ! grep "LLVM raw profile data, version 10" /tmp/file.log > /dev/null; then + printf "\nUnexpected profraw\n" + exit 1 +fi + +mkdir -p $MCDC_HOME/analysis_bits_reset +mv profraw $MCDC_HOME/analysis_bits_reset +cd $MCDC_HOME/analysis_bits_reset + +llvm-profdata merge profraw -o profdata +llvm-cov show --show-mcdc \ + --show-mcdc-summary \ + --show-region-summary=false \ + --show-branch-summary=false \ + --format=text \ + -use-color \ + -show-directory-coverage \ + -output-dir=text-coverage-reports \ + -instr-profile profdata \ + $MCDC_HOME/linux/vmlinux + +# +# Actual coverage of KUnit + boot +# + GUEST_COMMANDS="true" GUEST_COMMANDS="$GUEST_COMMANDS; uname -a" GUEST_COMMANDS="$GUEST_COMMANDS; ls /sys/kernel/debug/llvm-cov"