-mkdir $(distdir)/records
cp $(srcdir)/records/*.grs $(distdir)/records
-TESTS = test01.sh test02.sh test03.sh test04.sh \
+TESTS = stop01.sh stop02.sh stop03.sh stop04.sh \
test1.sh test2.sh \
- timing1.sh
+ timing1.sh timing2.sh
EXTRA_DIST = $(TESTS) zebra.cfg zebra1.cfg zebra2.cfg
--- /dev/null
+# test01.sh - test start and stop of the server with -1
+#
+
+echo "initializing"
+mkdir -p reg
+rm -f idx.log srv.log
+../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
+
+#create a base to test on
+../../index/zebraidx -l idx.log -c 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 -1 (one shot)..."
+../../index/zebrasrv -1 -c zebra1.cfg -l srv.log tcp:@:9901 &
+sleep 1
+
+echo " checking that it runs... "
+test -f zebrasrv.pid || exit 1
+PID=`cat zebrasrv.pid`
+ps -p $PID >/dev/null || exit 1
+
+echo " connecting to it..."
+../testclient localhost:9901 utah > log || exit 1
+sleep 1
+
+echo " checking that server does not run any more"
+ps -p $PID >/dev/null && exit 1
+
+echo ok
+# clean up
+rm -rf reg idx.log srv.log zebrasrv.pid
--- /dev/null
+# test02.sh - test start and stop of the server with -S
+#
+# FIXME - this test does not currently pass (H 22-oct-2002)
+# Something rotten with signals and threads and mutexes...
+
+echo "initializing"
+mkdir -p reg
+rm -f idx.log srv.log
+../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
+
+#create a base to test on
+../../index/zebraidx -l idx.log -c 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 -S (static)..."
+../../index/zebrasrv -S -c zebra1.cfg -l srv.log tcp:@:9901 &
+sleep 1
+
+echo " checking that it runs... "
+test -f zebrasrv.pid || exit 1
+PID=`cat zebrasrv.pid`
+ps -p $PID >/dev/null || exit 1
+
+echo " connecting to it..."
+../testclient localhost:9901 utah > log || exit 1
+sleep 1
+
+echo " checking that it still runs..."
+ps -p $PID >/dev/null || exit 1
+
+echo " connecting again, with a delay..."
+../testclient -d 5 localhost:9901 utah > log &
+sleep 1 # let the client connect
+
+echo " killing it..."
+kill $PID
+
+echo " checking that it is dead..."
+ps -p $PID >/dev/null && exit 1
+
+echo ok
+# clean up
+rm -rf reg idx.log srv.log zebrasrv.pid
--- /dev/null
+# 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
+
+echo "initializing"
+mkdir -p reg
+rm -f idx.log srv.log servercrash
+../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
+
+#create a base to test on
+../../index/zebraidx -l idx.log -c 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)..."
+(
+ ../../index/zebrasrv -T -c zebra1.cfg -l srv.log tcp:@:9901 ||
+ echo "server failed with $?" > servercrash
+)&
+sleep 1
+
+echo " checking that it runs... "
+test -f zebrasrv.pid || exit 1
+PID=`cat zebrasrv.pid`
+ps -p $PID >/dev/null || exit 1
+
+echo " connecting to it..."
+../testclient localhost:9901 utah > log || exit 1
+sleep 1
+
+echo " checking that it still runs..."
+ps -p $PID >/dev/null || exit 1
+
+echo " connecting again, with a delay..."
+../testclient localhost:9901 utah 5 > log &
+sleep 1 # let the client connect
+
+echo " killing it..."
+kill $PID
+sleep 1
+
+echo " checking that it is dead"
+ps -p $PID >/dev/null && exit 1
+
+echo ok
+# clean up
+rm -rf reg idx.log srv.log zebrasrv.pid servercrash
--- /dev/null
+# test04.sh - test start and stop of the forked server
+#
+
+echo "initializing"
+mkdir -p reg
+rm -f idx.log srv.log
+../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
+
+#create a base to test on
+../../index/zebraidx -l idx.log -c 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 (forked)..."
+../../index/zebrasrv -c zebra1.cfg -l srv.log tcp:@:9901 &
+sleep 1
+
+echo " checking that it runs... "
+test -f zebrasrv.pid || exit 1
+PID=`cat zebrasrv.pid`
+ps -p $PID >/dev/null || exit 1
+
+echo " connecting to it..."
+../testclient localhost:9901 utah > log || exit 1
+sleep 1
+
+echo " checking that it still runs..."
+ps -p $PID >/dev/null || exit 1
+
+echo " connecting again, with a delay..."
+../testclient localhost:9901 utah 5 > log &
+sleep 1 # let the client connect
+
+echo " killing it..."
+kill $PID
+sleep 1
+
+echo " checking that the server is dead..."
+ps -p $PID >/dev/null && exit 1
+
+echo ok
+# clean up
+rm -rf reg idx.log srv.log zebrasrv.pid
+++ /dev/null
-# test01.sh - test start and stop of the server with -1
-#
-
-echo "initializing"
-mkdir -p reg
-rm -f idx.log srv.log
-../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
-
-#create a base to test on
-../../index/zebraidx -l idx.log -c 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 -1 (one shot)..."
-../../index/zebrasrv -1 -c zebra1.cfg -l srv.log tcp:@:9901 &
-sleep 1
-
-echo " checking that it runs... "
-test -f zebrasrv.pid || exit 1
-PID=`cat zebrasrv.pid`
-ps -p $PID >/dev/null || exit 1
-
-echo " connecting to it..."
-../testclient localhost:9901 utah > log || exit 1
-sleep 1
-
-echo " checking that server does not run any more"
-ps -p $PID >/dev/null && exit 1
-
-echo ok
-# clean up
-rm -rf reg idx.log srv.log zebrasrv.pid
+++ /dev/null
-# test02.sh - test start and stop of the server with -S
-#
-# FIXME - this test does not currently pass (H 22-oct-2002)
-# Something rotten with signals and threads and mutexes...
-
-echo "initializing"
-mkdir -p reg
-rm -f idx.log srv.log
-../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
-
-#create a base to test on
-../../index/zebraidx -l idx.log -c 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 -S (static)..."
-../../index/zebrasrv -S -c zebra1.cfg -l srv.log tcp:@:9901 &
-sleep 1
-
-echo " checking that it runs... "
-test -f zebrasrv.pid || exit 1
-PID=`cat zebrasrv.pid`
-ps -p $PID >/dev/null || exit 1
-
-echo " connecting to it..."
-../testclient localhost:9901 utah > log || exit 1
-sleep 1
-
-echo " checking that it still runs..."
-ps -p $PID >/dev/null || exit 1
-
-echo " connecting again, with a delay..."
-../testclient -d 5 localhost:9901 utah > log &
-sleep 1 # let the client connect
-
-echo " killing it..."
-kill $PID
-
-echo " checking that it is dead..."
-ps -p $PID >/dev/null && exit 1
-
-echo ok
-# clean up
-rm -rf reg idx.log srv.log zebrasrv.pid
+++ /dev/null
-# 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
-
-echo "initializing"
-mkdir -p reg
-rm -f idx.log srv.log servercrash
-../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
-
-#create a base to test on
-../../index/zebraidx -l idx.log -c 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)..."
-(
- ../../index/zebrasrv -T -c zebra1.cfg -l srv.log tcp:@:9901 ||
- echo "server failed with $?" > servercrash
-)&
-sleep 1
-
-echo " checking that it runs... "
-test -f zebrasrv.pid || exit 1
-PID=`cat zebrasrv.pid`
-ps -p $PID >/dev/null || exit 1
-
-echo " connecting to it..."
-../testclient localhost:9901 utah > log || exit 1
-sleep 1
-
-echo " checking that it still runs..."
-ps -p $PID >/dev/null || exit 1
-
-echo " connecting again, with a delay..."
-../testclient localhost:9901 utah 5 > log &
-sleep 1 # let the client connect
-
-echo " killing it..."
-kill $PID
-sleep 1
-
-echo " checking that it still runs waiting for the client"
-ps -p $PID >/dev/null || exit 1
-
-echo " waiting for the client to exit..."
-sleep 3
-
-echo " checking that the server is dead..."
-ps -p $PID >/dev/null && exit 1
-
-echo " checking that it exited normally..."
-test -f servercrash && exit 1
-
-echo ok
-# clean up
-rm -rf reg idx.log srv.log zebrasrv.pid servercrash
+++ /dev/null
-# test04.sh - test start and stop of the forked server
-#
-
-echo "initializing"
-mkdir -p reg
-rm -f idx.log srv.log
-../../index/zebraidx -l idx.log -c zebra1.cfg init || exit 1
-
-#create a base to test on
-../../index/zebraidx -l idx.log -c 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 (forked)..."
-../../index/zebrasrv -c zebra1.cfg -l srv.log tcp:@:9901 &
-sleep 1
-
-echo " checking that it runs... "
-test -f zebrasrv.pid || exit 1
-PID=`cat zebrasrv.pid`
-ps -p $PID >/dev/null || exit 1
-
-echo " connecting to it..."
-../testclient localhost:9901 utah > log || exit 1
-sleep 1
-
-echo " checking that it still runs..."
-ps -p $PID >/dev/null || exit 1
-
-echo " connecting again, with a delay..."
-../testclient localhost:9901 utah 5 > log &
-sleep 1 # let the client connect
-
-echo " killing it..."
-kill $PID
-sleep 1
-
-echo " checking that the server is dead..."
-ps -p $PID >/dev/null && exit 1
-
-echo ok
-# clean up
-rm -rf reg idx.log srv.log zebrasrv.pid
# timing1.sh - tests that updates are reflected immediately
# in the registers. Repeatedly modifies a record and counts hits.
-# Because of the timing aspect of this, if may fail at any time
-# or not at all.
+# Test 1: with good sleeps in every between - should pass always
echo "Testing timings of updates"
echo " init..."
../../index/zebrasrv -S -c zebra2.cfg -l srv.log tcp:@:9901 &
sleep 1
test -f zebrasrv.pid || exit 1
+sleep 2
echo " update 1..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 1..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
grep "^Result count: 9$" log || exit 1
+sleep 2
echo "making a test record..."
cp records/esdd0006.grs records/esdd0002.grs
echo " indexing it..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 2..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
grep "^Result count: 10$" log || exit 1
+
+sleep 2
echo " 1a: modifying a test record (xyz)..."
sed 's/UTAH/XYZ/g' <records/esdd0002.grs >records/esdd0002x.grs
mv records/esdd0002x.grs records/esdd0002.grs
echo " indexing it..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 3..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
echo " checking..."
grep "^Result count: 9$" log || exit 1
+sleep 2
echo " 1b: modifying the test record back (utah)..."
sed 's/XYZ/UTAH/g' <records/esdd0002.grs >records/esdd0002x.grs
mv records/esdd0002x.grs records/esdd0002.grs
echo " indexing it..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 4..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
echo " checking..."
grep "^Result count: 10$" log || exit 1
+sleep 2
echo " 2a: modifying the test record (xyz)..."
sed 's/UTAH/XYZ/g' <records/esdd0002.grs >records/esdd0002x.grs
mv records/esdd0002x.grs records/esdd0002.grs
echo " indexing it..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 5..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
echo " checking..."
grep "^Result count: 9$" log || exit 1
+sleep 2
echo " 2b: modifying the test record back (utah)..."
sed 's/XYZ/UTAH/g' <records/esdd0002.grs >records/esdd0002x.grs
mv records/esdd0002x.grs records/esdd0002.grs
+sleep 2
echo " indexing it..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 6..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
echo " checking..."
grep "^Result count: 10$" log || exit 1
+sleep 2
echo " 3a: modifying the test record (xyz)..."
sed 's/UTAH/XYZ/g' <records/esdd0002.grs >records/esdd0002x.grs
mv records/esdd0002x.grs records/esdd0002.grs
+sleep 2
echo " indexing it..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 7..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
echo " checking..."
grep "^Result count: 9$" log || exit 1
+sleep 2
echo " 3b: modifying the test record back (utah)..."
sed 's/XYZ/UTAH/g' <records/esdd0002.grs >records/esdd0002x.grs
mv records/esdd0002x.grs records/esdd0002.grs
echo " indexing it..."
../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+sleep 2
echo " search 8..."
../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
echo " checking..."
--- /dev/null
+# timing2.sh
+# 2: Test without sleeps, fails around step 1a or 1b.
+
+echo "Testing timings of updates"
+echo " init..."
+rm -f idx.log log
+rm -f records/esdd000[12].grs # these should not be here, will be created later
+../../index/zebraidx -l idx.log init || exit 1
+
+echo " killing old server (if any)..."
+test -f zebrasrv.pid && kill -9 `cat zebrasrv.pid`
+rm -f zebrasrv.pid
+rm -f srv.log
+
+echo " starting server..."
+../../index/zebrasrv -S -c zebra2.cfg -l srv.log tcp:@:9901 &
+sleep 1
+test -f zebrasrv.pid || exit 1
+
+echo " update 1..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 1..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+grep "^Result count: 9$" log || exit 1
+
+echo "making a test record..."
+cp records/esdd0006.grs records/esdd0002.grs
+
+echo " indexing it..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 2..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+grep "^Result count: 10$" log || exit 1
+echo " 1a: modifying a test record (xyz)..."
+sed 's/UTAH/XYZ/g' <records/esdd0002.grs >records/esdd0002x.grs
+mv records/esdd0002x.grs records/esdd0002.grs
+
+echo " indexing it..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 3..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+echo " checking..."
+grep "^Result count: 9$" log || exit 1
+
+echo " 1b: modifying the test record back (utah)..."
+sed 's/XYZ/UTAH/g' <records/esdd0002.grs >records/esdd0002x.grs
+mv records/esdd0002x.grs records/esdd0002.grs
+
+echo " indexing it..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 4..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+echo " checking..."
+grep "^Result count: 10$" log || exit 1
+
+echo " 2a: modifying the test record (xyz)..."
+sed 's/UTAH/XYZ/g' <records/esdd0002.grs >records/esdd0002x.grs
+mv records/esdd0002x.grs records/esdd0002.grs
+
+echo " indexing it..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 5..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+echo " checking..."
+grep "^Result count: 9$" log || exit 1
+
+echo " 2b: modifying the test record back (utah)..."
+sed 's/XYZ/UTAH/g' <records/esdd0002.grs >records/esdd0002x.grs
+mv records/esdd0002x.grs records/esdd0002.grs
+
+echo " indexing it..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 6..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+echo " checking..."
+grep "^Result count: 10$" log || exit 1
+
+
+echo " 3a: modifying the test record (xyz)..."
+sed 's/UTAH/XYZ/g' <records/esdd0002.grs >records/esdd0002x.grs
+mv records/esdd0002x.grs records/esdd0002.grs
+
+echo " indexing it..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 7..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+echo " checking..."
+grep "^Result count: 9$" log || exit 1
+
+echo " 3b: modifying the test record back (utah)..."
+sed 's/XYZ/UTAH/g' <records/esdd0002.grs >records/esdd0002x.grs
+mv records/esdd0002x.grs records/esdd0002.grs
+
+echo " indexing it..."
+../../index/zebraidx -l idx.log -c zebra2.cfg update records || exit 1
+
+echo " search 8..."
+../testclient localhost:9901 "@attr 1=4 utah" > log || exit 1
+echo " checking..."
+grep "^Result count: 10$" log || exit 1
+
+
+echo "stopping server..."
+test -f zebrasrv.pid || exit 1
+kill -9 `cat zebrasrv.pid` || exit 1
+rm -f idx.log log
+rm -f records/esdd000[12].grs
+rm -f zebrasrv.pid
+rm -f srv.log
+
+echo ok