r21554: Use a snippet from tridge's junkcode to cause us to wait for smbd to
authorAndrew Bartlett <abartlet@samba.org>
Tue, 27 Feb 2007 02:59:22 +0000 (02:59 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:48:56 +0000 (14:48 -0500)
exit.

If we kill smbd right away, we can interrupt the gcov data file
writeout.  Instead, we now wait up to 20 seconds for the process to
exit, before sending it a kill -9.

Andrew Bartlett

source/script/tests/selftest.sh
source/script/tests/test_functions.sh

index 70a91d4697de772c11e258cb8b97f79471690eb2..92fba70c4a5d83f861006615df95dbedb8d6e5d5 100755 (executable)
@@ -247,7 +247,11 @@ exit $?
 ) 9>$SMBD_TEST_FIFO
 totalfailed=$?
 
-kill `cat $PIDDIR/smbd.pid`
+smbd_PID=`cat $PIDDIR/smbd.pid`
+waitforpid $smbd_PID 20 || {
+    echo "smbd process $1 took more than 20 seconds to exit, killing"
+    kill -9 $smbd_PID
+}
 
 if [ "$TEST_LDAP"x = "yesx" ]; then
     if test -z "$FEDORA_DS_PREFIX"; then
index 42c7d614d30f33d5c9f59573b5477ef99716c6aa..9b869782cd5421942f2abb1da52562d2b806ee6b 100755 (executable)
@@ -113,6 +113,22 @@ EOF
        exit $failed
 }
 
+# wait for a pid with given timeout
+# returns 1 if it timed out, 0 if the process exited itself
+waitforpid() {
+    pid=$1
+    timeout=$2 # in seconds
+    _wcount=0
+    while kill -0 $pid 2> /dev/null; do
+       sleep 1;
+       _wcount=`expr $_wcount + 1`
+       if [ $_wcount -eq $timeout ]; then
+           return "1";
+       fi
+    done
+    return "0";
+}
+
 if [ -z "$VALGRIND" ]; then
     MALLOC_CHECK_=2
     export MALLOC_CHECK_