diff options
author | Cyril Hrubis <chrubis@suse.cz> | 2016-01-14 15:28:08 +0100 |
---|---|---|
committer | Cyril Hrubis <chrubis@suse.cz> | 2016-01-14 15:33:42 +0100 |
commit | a76b72ad31fa7bb22a09f323dadd5db7c00c7f56 (patch) | |
tree | 421aad02eb2b46dd4d0c14b8d208a4c2f81cfada /testcases/commands | |
parent | df6c543d6762cac87eddde91efd104c7af08be0d (diff) |
commands/mkswap01: Fix race
It can take up to 10ms for the /dev/disk/by-* files to appear after we
do the mkswap -L or mkswap -U. Now the test waits up to 100ms for the
files to be created before it calls swapon.
This fixes random sporadic failures I've seen on some systems.
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
Diffstat (limited to 'testcases/commands')
-rwxr-xr-x | testcases/commands/mkswap/mkswap01.sh | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/testcases/commands/mkswap/mkswap01.sh b/testcases/commands/mkswap/mkswap01.sh index 8fc571e7a..ae4c98a8a 100755 --- a/testcases/commands/mkswap/mkswap01.sh +++ b/testcases/commands/mkswap/mkswap01.sh @@ -46,11 +46,33 @@ cleanup() tst_rmdir } +wait_for_file() +{ + local path="$1" + local retries=10 + + if [ -z "$path" ]; then + return + fi + + while [ $retries -gt 0 ]; do + if [ -e "$path" ]; then + return + fi + tst_resm TINFO "Waiting for $path to appear" + retries=$((retries - 1)) + tst_sleep 10ms + done + + tst_resm TWARN "The file $path haven't appeared" +} + mkswap_verify() { local mkswap_op="$1" local op_arg="$2" local swapfile="$3" + local dev_file="$5" local before=`awk '/SwapTotal/ {print $2}' /proc/meminfo` @@ -62,7 +84,10 @@ mkswap_verify() local pagesize=$PAGE_SIZE fi + wait_for_file "$dev_file" + swapon $swapfile 2>/dev/null + if [ $? -ne 0 ]; then tst_resm TINFO "Can not do swapon on $swapfile." if [ $pagesize -ne $PAGE_SIZE ]; then @@ -113,6 +138,7 @@ mkswap_test() local op_arg="$2" local device="$3" local size="$4" + local dev_file="$5" local mkswap_cmd="mkswap $mkswap_op $op_arg $TST_DEVICE $size" @@ -130,7 +156,7 @@ mkswap_test() fi if [ -n "$device" ]; then - mkswap_verify "$mkswap_op" "$op_arg" "$device" "$size" + mkswap_verify "$mkswap_op" "$op_arg" "$device" "$size" "$dev_file" if [ $? -ne 0 ]; then tst_resm TFAIL "'${mkswap_cmd}' failed, not expected." return @@ -147,9 +173,9 @@ mkswap_test "" "" "$TST_DEVICE" "$((DEVICE_SIZE-10000))" mkswap_test "-f" "" "$TST_DEVICE" "$((DEVICE_SIZE+10000))" mkswap_test "-c" "" "$TST_DEVICE" mkswap_test "-p" "2048" "$TST_DEVICE" -mkswap_test "-L" "ltp_testswap" "-L ltp_testswap" +mkswap_test "-L" "ltp_testswap" "-L ltp_testswap" "" "/dev/disk/by-label/ltp_testswap" mkswap_test "-v1" "" "$TST_DEVICE" -mkswap_test "-U" "$UUID" "-U $UUID" +mkswap_test "-U" "$UUID" "-U $UUID" "" "/dev/disk/by-uuid/$UUID" mkswap_test "-V" mkswap_test "-h" |