#!/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