From b0484eedefc6921ec63ce08dc2cb3679fe75042b Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 16 Jan 2026 18:01:31 +0000 Subject: [PATCH] Clean up build_coverage.sh to run all steps in sequence Simplifies the script to automatically compile, run (60s), and generate the coverage report in a single invocation. Removes the two-step --report flag approach and adds quieter output with clear step markers. --- build_coverage.sh | 63 ++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/build_coverage.sh b/build_coverage.sh index bdbdbfa..7be4ce3 100644 --- a/build_coverage.sh +++ b/build_coverage.sh @@ -1,40 +1,37 @@ #!/bin/bash set -e -# Build simulation with branch coverage instrumentation -gcc src/sha256.c src/basic.c src/file_system.c src/byte_queue.c src/file_tree.c src/message.c src/tcp.c src/wal.c src/hash_set.c src/client.c src/metadata_server.c src/chunk_server.c src/random_client.c src/main.c quakey/src/lfs.c quakey/src/lfs_util.c quakey/src/quakey.c -o toasty_simulation_coverage -Iquakey/include -Iinclude -Wall -Wextra -ggdb -O0 -DMAIN_SIMULATION --coverage -fprofile-arcs -ftest-coverage +SIMULATION_BINARY="toasty_simulation_coverage" +RUN_DURATION=60 +COVERAGE_DIR="coverage_html" + +echo "=== Step 1: Building simulation with coverage instrumentation ===" +gcc src/sha256.c src/basic.c src/file_system.c src/byte_queue.c src/file_tree.c \ + src/message.c src/tcp.c src/wal.c src/hash_set.c src/client.c \ + src/metadata_server.c src/chunk_server.c src/random_client.c src/main.c \ + quakey/src/lfs.c quakey/src/lfs_util.c quakey/src/quakey.c \ + -o "$SIMULATION_BINARY" \ + -Iquakey/include -Iinclude \ + -Wall -Wextra -ggdb -O0 \ + -DMAIN_SIMULATION \ + --coverage -fprofile-arcs -ftest-coverage +echo "Build complete: $SIMULATION_BINARY" -echo "Coverage build complete: toasty_simulation_coverage" echo "" -echo "To generate HTML coverage report:" -echo " 1. Run: ./toasty_simulation_coverage" -echo " 2. Run: ./build_coverage.sh --report" +echo "=== Step 2: Running simulation for ${RUN_DURATION}s ===" +lcov --zerocounters --directory . --quiet +lcov --capture --initial --directory . --output-file coverage_base.info --rc lcov_branch_coverage=1 --quiet +timeout --signal=INT --kill-after=5 "$RUN_DURATION" "./$SIMULATION_BINARY" || true +echo "Simulation finished" -if [ "$1" = "--report" ]; then - # Reset previous coverage data - lcov --zerocounters --directory . +echo "" +echo "=== Step 3: Generating coverage report ===" +lcov --capture --directory . --output-file coverage_test.info --rc lcov_branch_coverage=1 --quiet +lcov --add-tracefile coverage_base.info --add-tracefile coverage_test.info --output-file coverage.info --rc lcov_branch_coverage=1 --quiet +lcov --remove coverage.info '/usr/*' 'quakey/*' --output-file coverage.info --rc lcov_branch_coverage=1 --quiet +genhtml coverage.info --output-directory "$COVERAGE_DIR" --branch-coverage --quiet +rm -f coverage_base.info coverage_test.info - # Capture baseline coverage (before running) - lcov --capture --initial --directory . --output-file coverage_base.info --rc lcov_branch_coverage=1 - - # Run the simulation with a 60 second time limit - # Use SIGINT for graceful shutdown (allows coverage data to be flushed) - # Falls back to SIGKILL after 5 seconds if process doesn't exit - echo "Running simulation (60 second limit)..." - timeout --signal=INT --kill-after=5 60 ./toasty_simulation_coverage || true - - # Capture coverage after running - lcov --capture --directory . --output-file coverage_test.info --rc lcov_branch_coverage=1 - - # Combine baseline and test coverage - lcov --add-tracefile coverage_base.info --add-tracefile coverage_test.info --output-file coverage.info --rc lcov_branch_coverage=1 - - # Remove external/system headers from report - lcov --remove coverage.info '/usr/*' --output-file coverage.info --rc lcov_branch_coverage=1 - - # Generate HTML report - genhtml coverage.info --output-directory coverage_html --branch-coverage - - echo "" - echo "HTML coverage report generated in: coverage_html/index.html" -fi +echo "" +echo "=== Done ===" +echo "Coverage report: $COVERAGE_DIR/index.html"