[3/5] generic/131: wait until the server is ready
diff mbox series

Message ID 20181229023452.28074-4-houtao1@huawei.com
State New
Headers show
Series
  • tiny fixes for xfstests
Related show

Commit Message

Hou Tao Dec. 29, 2018, 2:34 a.m. UTC
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 the server exits.

Signed-off-by: Hou Tao <houtao1@huawei.com>
---
 tests/generic/131 | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

Comments

Eryu Guan Dec. 29, 2018, 8:14 a.m. UTC | #1
On Sat, Dec 29, 2018 at 10:34:50AM +0800, Hou Tao wrote:
> 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 the server exits.
> 
> Signed-off-by: Hou Tao <houtao1@huawei.com>
> ---
>  tests/generic/131 | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/generic/131 b/tests/generic/131
> index d7c146ae..1af86e77 100755
> --- a/tests/generic/131
> +++ b/tests/generic/131
> @@ -37,13 +37,20 @@ TESTFILE=$TEST_DIR/lock_file
>  src/locktest $TESTFILE 2>&1 > $TEST_DIR/server.out &
>  locktest_pid1=$!
>  
> -sleep 1
> +while true; do
> +	sleep 1

Looks like we'll loop forever if the locktest process is there but fails
to print out the server port due to random reasons.

I think it's better to retry N times and give up if the server is still
not ready.

Thanks,
Eryu

>  
> -PORT=$(cat $TEST_DIR/server.out | grep "^server port: " | awk '{print $3}')
> -if [ -z $PORT ]; then
> -	echo "Could not get server port"
> -	exit 1
> -fi
> +	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 "Could not get server port"
> +		exit 1
> +	fi
> +done
>  
>  # Start the client
>  src/locktest -p $PORT -h localhost $TESTFILE 2>&1 > $TEST_DIR/client.out
> -- 
> 2.16.2.dirty
>
Hou Tao Jan. 4, 2019, 8:56 a.m. UTC | #2
Hi,

On 2018/12/29 16:14, Eryu Guan wrote:
> On Sat, Dec 29, 2018 at 10:34:50AM +0800, Hou Tao wrote:
>> 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 the server exits.
>>
>> Signed-off-by: Hou Tao <houtao1@huawei.com>
>> ---
>>  tests/generic/131 | 19 +++++++++++++------
>>  1 file changed, 13 insertions(+), 6 deletions(-)
>>
>> diff --git a/tests/generic/131 b/tests/generic/131
>> index d7c146ae..1af86e77 100755
>> --- a/tests/generic/131
>> +++ b/tests/generic/131
>> @@ -37,13 +37,20 @@ TESTFILE=$TEST_DIR/lock_file
>>  src/locktest $TESTFILE 2>&1 > $TEST_DIR/server.out &
>>  locktest_pid1=$!
>>  
>> -sleep 1
>> +while true; do
>> +	sleep 1
> 
> Looks like we'll loop forever if the locktest process is there but fails
> to print out the server port due to random reasons.
> 
> I think it's better to retry N times and give up if the server is still
> not ready.
> 
Thanks for your suggestion, will send v2 soon.

> Thanks,
> Eryu
> 
>>  
>> -PORT=$(cat $TEST_DIR/server.out | grep "^server port: " | awk '{print $3}')
>> -if [ -z $PORT ]; then
>> -	echo "Could not get server port"
>> -	exit 1
>> -fi
>> +	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 "Could not get server port"
>> +		exit 1
>> +	fi
>> +done
>>  
>>  # Start the client
>>  src/locktest -p $PORT -h localhost $TESTFILE 2>&1 > $TEST_DIR/client.out
>> -- 
>> 2.16.2.dirty
>>
> 
>

Patch
diff mbox series

diff --git a/tests/generic/131 b/tests/generic/131
index d7c146ae..1af86e77 100755
--- a/tests/generic/131
+++ b/tests/generic/131
@@ -37,13 +37,20 @@  TESTFILE=$TEST_DIR/lock_file
 src/locktest $TESTFILE 2>&1 > $TEST_DIR/server.out &
 locktest_pid1=$!
 
-sleep 1
+while true; do
+	sleep 1
 
-PORT=$(cat $TEST_DIR/server.out | grep "^server port: " | awk '{print $3}')
-if [ -z $PORT ]; then
-	echo "Could not get server port"
-	exit 1
-fi
+	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 "Could not get server port"
+		exit 1
+	fi
+done
 
 # Start the client
 src/locktest -p $PORT -h localhost $TESTFILE 2>&1 > $TEST_DIR/client.out