mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
e18876187c
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>
76 lines
1.4 KiB
Bash
Executable File
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
|