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.
This commit is contained in:
+30
-33
@@ -1,40 +1,37 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Build simulation with branch coverage instrumentation
|
SIMULATION_BINARY="toasty_simulation_coverage"
|
||||||
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
|
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 ""
|
||||||
echo "To generate HTML coverage report:"
|
echo "=== Step 2: Running simulation for ${RUN_DURATION}s ==="
|
||||||
echo " 1. Run: ./toasty_simulation_coverage"
|
lcov --zerocounters --directory . --quiet
|
||||||
echo " 2. Run: ./build_coverage.sh --report"
|
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
|
echo ""
|
||||||
# Reset previous coverage data
|
echo "=== Step 3: Generating coverage report ==="
|
||||||
lcov --zerocounters --directory .
|
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)
|
echo ""
|
||||||
lcov --capture --initial --directory . --output-file coverage_base.info --rc lcov_branch_coverage=1
|
echo "=== Done ==="
|
||||||
|
echo "Coverage report: $COVERAGE_DIR/index.html"
|
||||||
# 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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user