@@ -15,7 +15,9 @@ PORT="${2:-$RANDOM_PORT}"
1515HOST=" 127.0.0.1"
1616PIDFILE=" /tmp/scache-consistency-test.pid"
1717DBDIR=" /tmp/scache-consistency-test-db"
18- SCACHE_BIN=" $SCRIPT_DIR /src/server/scache"
18+ SCACHE_BIN_REAL=" $SCRIPT_DIR /src/server/scache"
19+ SCACHE_BIN=" $SCACHE_BIN_REAL "
20+ VALGRIND_WRAPPER=" /tmp/scache-consistency-valgrind.sh"
1921
2022# Colors
2123RED=' \033[0;31m'
@@ -35,28 +37,51 @@ echo "Tests: $TEST_SELECTOR"
3537echo " "
3638
3739# Build scache if needed
38- if [ ! -x " $SCACHE_BIN " ]; then
40+ if [ ! -x " $SCACHE_BIN_REAL " ]; then
3941 echo -e " ${YELLOW} Building simple-cache...${NC} "
4042 cd " $SCRIPT_DIR "
4143 make clean && make
42- if [ ! -x " $SCACHE_BIN " ]; then
44+ if [ ! -x " $SCACHE_BIN_REAL " ]; then
4345 echo -e " ${RED} Failed to build simple-cache${NC} "
4446 exit 1
4547 fi
4648fi
4749
50+ if [ " ${SCACHE_VALGRIND:- 0} " = " 1" ]; then
51+ cat > " $VALGRIND_WRAPPER " << EOF
52+ #!/bin/bash
53+ exec valgrind ${SCACHE_VALGRIND_ARGS:- --leak-check=full --show-leak-kinds=all} "$SCACHE_BIN_REAL " "\$ @"
54+ EOF
55+ chmod +x " $VALGRIND_WRAPPER "
56+ SCACHE_BIN=" $VALGRIND_WRAPPER "
57+ fi
58+
59+ export SCACHE_PIDFILE=" $PIDFILE "
60+ export SCACHE_DBDIR=" $DBDIR "
61+ export SCACHE_BIN
62+
4863# Clean up any previous run
4964cleanup () {
5065 if [ -f " $PIDFILE " ]; then
5166 PID=$( cat " $PIDFILE " 2> /dev/null)
5267 if [ -n " $PID " ] && [ " $PID " != " 0" ] && [ " $PID " != " " ] && kill -0 " $PID " 2> /dev/null; then
53- kill -9 " $PID " 2> /dev/null || true
68+ kill -TERM " $PID " 2> /dev/null || true
69+ for _ in $( seq 1 50) ; do
70+ if ! kill -0 " $PID " 2> /dev/null; then
71+ break
72+ fi
73+ sleep 0.1
74+ done
75+ if kill -0 " $PID " 2> /dev/null; then
76+ kill -KILL " $PID " 2> /dev/null || true
77+ fi
5478 fi
5579 rm -f " $PIDFILE "
5680 fi
5781 rm -rf " $DBDIR "
5882}
5983cleanup
84+ trap ' rm -f "$VALGRIND_WRAPPER"' EXIT
6085
6186# Start server
6287start_server () {
0 commit comments