1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#!/bin/sh
RETURN=0
SOCKS_PER_PROCESS=3
EXPECTED_DLOCK=6
EXPECTED_LEFTOVER=2
tidy_qb_dirs()
{
for dd in "$@"; do
rm $dd
rmdir $(dirname $dd) 2> /dev/null
done
}
tidy_dlock_sockets()
{
IPC_NAME=$1
for d in /dev/shm /var/run $SOCKETDIR; do
# Tidy up the deadlock checker sockets first
dlocks=$(find $d -name "qb-*-test_*dlock*${IPC_NAME}*" -size +0c 2>/dev/null)
if [ "$(echo $dlocks|wc -w)" -eq $(($SOCKS_PER_PROCESS * $EXPECTED_DLOCK)) ]; then
tidy_qb_dirs $dlocks
rm $dlocks
elif [ -n "${dlocks}" ]; then
echo
echo "Error: dlock shared memory segments not closed/unlinked"
echo
RETURN=1
fi
# Now look for other expected leftovers
leftovers=$(find $d -name "qb-*-test_*${IPC_NAME}*" -size +0c 2>/dev/null | wc -l)
if [ "${leftovers}" -gt 0 ]; then
echo
echo "Error: shared memory segments not closed/unlinked"
echo
RETURN=1
fi
leftovers="$(find $d -name "qb-*-test_*${IPC_NAME}*" -size 0c 2>/dev/null)"
expected=$(($SOCKS_PER_PROCESS * $EXPECTED_LEFTOVER))
if [ "$(printf '%s\n' "${leftovers}" | wc -l)" -eq "$expected" ]; then
echo
echo "There were some empty leftovers (expected), removing them"
echo "${leftovers}"
echo
tidy_qb_dirs $leftovers
elif [ -n "${leftovers}" ]; then
echo
echo "Error: unexpected number of empty leftovers. expected ${expected}"
echo "${leftovers}"
echo
RETURN=1
fi
done
return $RETURN
}
IPC_NAME=$(cat ipc-test-name 2>/dev/null)
tidy_dlock_sockets $IPC_NAME
RETURN=$?
# Linux also runs filesystem socket tests
if [ "$(uname -s)" = "Linux" ] && [ "`id -u`" = "0" ]
then
IPC_NAME=$(cat ipc-test-name-sock 2>/dev/null)
tidy_dlock_sockets $IPC_NAME
if [ $? -ne 0 ]
then
RETURN=$?
fi
fi
# Clean up empty /dev/shm directories left over by some tests
DIRS=$(grep "Free'ing ringbuffer" ipc.log sock_ipc_wrapper.log| cut -f4 -d ' '|cut -f-4 -d'/'|sort|uniq)
for i in $DIRS
do
rmdir $i 2>/dev/null
done
ps aux | grep -v grep | grep -E 'lt-.*\.test'
if [ $? -eq 0 ]; then
echo "test program frozen"
RETURN=1
fi
# Keep it tidy - distcheck checks we have not left a mess
rm -f ipc-test-name*
rm -f crash_test_dummy.core
exit $RETURN
|