-# test03.sh - test start and stop of the threaded server (-T)
-#
-# FIXME - this test does not currently pass (H 22-oct-2002)
-# When the client exits, the process dies with a segfault
+#!/bin/sh
+# $Id: stop03.sh,v 1.8 2004-09-24 15:03:19 adam Exp $
+# test start and stop of the threaded server (-T)
-echo "initializing"
+pp=${srcdir:-"."}
+
+LOG=stop03.log
+
+rm -f $LOG
+echo "initializing" >>$LOG
mkdir -p reg
-rm -f idx.log srv.log servercrash
-../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
+../../index/zebraidx -l $LOG -c $pp/zebra1.cfg init || exit 1
#create a base to test on
-../../index/zebraidx -l idx.log -c zebra1.cfg update records || exit 1
+../../index/zebraidx -l $LOG -c $pp/zebra1.cfg update records || exit 1
#kill old server (if any)
test -f zebrasrv.pid && kill -9 `cat zebrasrv.pid`
-rm -f zebrasrv.pid
-rm -f srv.log
-echo "Starting server with -T (threaded)..."
+echo "Starting server with -T (threaded)..." >>$LOG
(
- ../../index/zebrasrv -T -c zebra1.cfg -l srv.log tcp:@:9901 ||
- echo "server failed with $?" > servercrash
+ ../../index/zebrasrv -T -c $pp/zebra1.cfg -l $LOG tcp:@:9901 2>out ||
+ echo "server failed with $?" > $LOG
)&
sleep 1
-echo " checking that it runs... "
-test -f zebrasrv.pid || exit 1
+if grep 'not available' out >/dev/null; then
+ test -f zebrasrv.pid && rm zebrasrv.pid
+ exit 0
+fi
+echo " checking that it runs... " >>$LOG
+test -f zebrasrv.pid || sleep 5 || test -f zebrasrv.pid || exit 1
PID=`cat zebrasrv.pid`
-ps -p $PID >/dev/null || exit 1
+ps -p $PID | grep $PID >/dev/null || exit 1
-echo " connecting to it..."
-../testclient localhost:9901 utah > log || exit 1
+echo " connecting to it..." >>$LOG
+../api/testclient localhost:9901 utah >>$LOG || exit 1
sleep 1
-echo " checking that it still runs..."
+echo " checking that it still runs..." >>$LOG
ps -p $PID >/dev/null || exit 1
-echo " connecting again, with a delay..."
-../testclient localhost:9901 utah 5 > log &
+echo " connecting again, with a delay..." >>$LOG
+../api/testclient localhost:9901 utah 5 >>$LOG &
sleep 1 # let the client connect
-echo " killing it..."
-kill $PID
+echo " killing it..." >>$LOG
+kill $PID
sleep 1
-echo " checking that it is dead"
-ps -p $PID >/dev/null && exit 1
+echo " checking that it is dead" >>$LOG
+ps -p $PID | grep $PID >/dev/null && exit 1
-echo ok
# clean up
-rm -rf reg idx.log srv.log zebrasrv.pid servercrash
+rm -rf reg zebrasrv.pid