Files
apfstests/tests/generic/131
T
Hou Tao e18876187c generic/131: wait until the server is ready or timeout
When running xfstests under KVM VM and the load of host is high,
only delaying 1s and checking the readiness of server are not
enough, and the test case will fail early.

Fix it by repeatedly checking the readiness signal until it's found,
or timeout is triggered.

[Eryu: check if lock server died or not, like v1 patch did]

Signed-off-by: Hou Tao <houtao1@huawei.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2019-01-06 22:40:40 +08:00

76 lines
1.4 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved.
#
# FSQA Test No. 131
#
# lock test created from CXFSQA test lockfile_simple
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
kill $locktest_pid2 > /dev/null 2>&1
kill $locktest_pid1 > /dev/null 2>&1
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
# real QA test starts here
_supported_fs generic
_supported_os Linux
_require_test
_require_test_fcntl_advisory_locks
TESTFILE=$TEST_DIR/lock_file
# Start the server
src/locktest $TESTFILE 2>&1 > $TEST_DIR/server.out &
locktest_pid1=$!
timeout=30
while [ $timeout -gt 0 ]; do
sleep 1
PORT=$(cat $TEST_DIR/server.out | grep "^server port: " | awk '{print $3}')
if [ -n "$PORT" ]; then
break
fi
# check the existence of server process
if ! kill -s 0 $locktest_pid1 >/dev/null 2>&1; then
echo "Server died abnormally"
exit 1
fi
let timeout=timeout-1
done
if [ -z "$PORT" ]; then
echo "Could not get server port"
exit 1
fi
# Start the client
src/locktest -p $PORT -h localhost $TESTFILE 2>&1 > $TEST_DIR/client.out
locktest_pid2=$!
result=$?
if [ $result -eq 0 ]; then
echo success!
status=0
else
echo "Client reported failure ($result)"
cat $TEST_DIR/*.out
fi
exit