@@ -14,11 +14,15 @@ here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
+debug="-d"
+
+TESTFILE=$TEST_DIR/lock_file
_cleanup()
{
kill $client_pid > /dev/null 2>&1
kill $server_pid > /dev/null 2>&1
+ rm -f $TESTFILE
}
# get standard environment, filters and checks
@@ -31,48 +35,71 @@ _supported_os Linux
_require_test
_require_test_fcntl_advisory_locks
-TESTFILE=$TEST_DIR/lock_file
+# set up log files
+SERVER_LOG=$TEST_DIR/server.out
+rm -f $SERVER_LOG
+touch $SERVER_LOG
+SERVER_PORT=$TEST_DIR/server.port
+rm -f $SERVER_PORT
+touch $SERVER_PORT
+CLIENT_LOG=$TEST_DIR/client.out
+rm -f $CLIENT_LOG
+touch $CLIENT_LOG
+
+touch $TESTFILE
+
+function dump_logs_fail()
+{
+ fail_str=$1
-rm -f $TEST_DIR/server.out
-touch $TEST_DIR/server.out
+ echo " ***** Client log *****" >> $seqres.full
+ cat $CLIENT_LOG >> $seqres.full
+ echo " ***** Server log *****" >> $seqres.full
+ cat $SERVER_LOG >> $seqres.full
+ echo " ***** End file details *****" >> $seqres.full
+ ls -la $TESTFILE >> $seqres.full
+ _fail $fail_str
+ exit 1
+}
# Start the server
-src/locktest $TESTFILE 2>&1 > $TEST_DIR/server.out &
+src/locktest $debug $TESTFILE 2> $SERVER_LOG 1> $SERVER_PORT &
server_pid=$!
timeout=30
while [ $timeout -gt 0 ]; do
sleep 1
- PORT=$(cat $TEST_DIR/server.out | grep "^server port: " | awk '{print $3}')
+ PORT=$(cat $SERVER_PORT | grep "^server port: " | awk '{print $3}')
if [ -n "$PORT" ]; then
break
fi
# check the existence of server process
if ! kill -s 0 $server_pid >/dev/null 2>&1; then
- echo "Server died abnormally"
- exit 1
+ dump_logs_fail "Server died abnormally"
fi
let timeout=timeout-1
done
if [ -z "$PORT" ]; then
- echo "Could not get server port"
- exit 1
+ dump_logs_fail "Could not get server port"
fi
# Start the client
-src/locktest -p $PORT -h localhost $TESTFILE 2>&1 > $TEST_DIR/client.out
+
+src/locktest $debug -p $PORT -h localhost $TESTFILE 2> $CLIENT_LOG
+client_result=$?
client_pid=$!
-result=$?
-if [ $result -eq 0 ]; then
- echo success!
- status=0
-else
- echo "Client reported failure ($result)"
- cat $TEST_DIR/*.out
+if [ $client_result -ne 0 ]; then
+ dump_logs_fail "Client reported failure ($client_result)"
fi
-
+wait $server_pid
+server_result=$?
+if [ $server_result -ne 0 ]; then
+ dump_logs_fail "Server reported failure ($server_result)"
+fi
+echo success!
+status=0
exit