Skip to content

Commit 1d46e84

Browse files
author
Mathew
committed
...
1 parent 79181ad commit 1d46e84

2 files changed

Lines changed: 34 additions & 47 deletions

File tree

.github/workflows/build-test.yml

Lines changed: 5 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -253,52 +253,14 @@ jobs:
253253
run: |
254254
sudo mkdir -p /var/lib/scache/
255255
sudo chmod 0777 /var/lib/scache/
256-
chmod +x ./src/server/scache
256+
chmod +x ./src/server/scache ./run-php-tests.sh
257257
PWD=$(pwd)
258258
VALGRIND_SUPPRESSIONS=""
259259
if [[ "${{ matrix.target.cow_suppressions }}" == "true" ]]; then
260-
VALGRIND_SUPPRESSIONS="--suppressions=$PWD/valgrind-cow-child.supp"
260+
VALGRIND_SUPPRESSIONS=" --suppressions=$PWD/valgrind-cow-child.supp"
261261
fi
262-
263-
264-
pids=""
265-
function wait_all {
266-
for p in $pids; do
267-
IFS=" " read -r -a arrIN <<< "${p//:/ }"
268-
if wait "${arrIN[0]}"; then
269-
echo "Task \"${arrIN[1]}\" (${arrIN[0]}) succeeded"
270-
else
271-
echo "Task \"${arrIN[1]}\" (${arrIN[0]}) fail"
272-
exit 1
273-
fi
274-
done
275-
}
276-
277-
function run_tests {
278-
set -x
279-
set +e
280-
for i in {1..30}; do
281-
curl 127.0.0.1:8081 --max-time 1 --connect-timeout 1
282-
if [[ $? == 0 ]]; then
283-
echo "ready to start php test"
284-
break
285-
fi
286-
sleep 1
287-
done
288-
289-
set -e
290-
set -x
291-
for x in tests/php/test_*.php; do
292-
echo "Doing test $x"
293-
php "$x"
294-
done
295-
}
296-
297-
run_tests &
298-
pids="$!:php"
299-
300-
timeout --kill-after=5 --preserve-status 5m valgrind --leak-check=full --show-leak-kinds=all $VALGRIND_SUPPRESSIONS src/server/scache -b 127.0.0.1:8081 -B 127.0.0.1:8082
301-
302-
wait_all
262+
export SCACHE_VALGRIND=1
263+
export SCACHE_VALGRIND_ARGS="--leak-check=full --show-leak-kinds=all$VALGRIND_SUPPRESSIONS"
264+
./run-php-tests.sh
303265
shell: bash
304266

run-php-tests.sh

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ PORT="${2:-$RANDOM_PORT}"
1515
HOST="127.0.0.1"
1616
PIDFILE="/tmp/scache-consistency-test.pid"
1717
DBDIR="/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
2123
RED='\033[0;31m'
@@ -35,28 +37,51 @@ echo "Tests: $TEST_SELECTOR"
3537
echo ""
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
4648
fi
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
4964
cleanup() {
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
}
5983
cleanup
84+
trap 'rm -f "$VALGRIND_WRAPPER"' EXIT
6085

6186
# Start server
6287
start_server() {

0 commit comments

Comments
 (0)