aboutsummaryrefslogtreecommitdiff
path: root/testcases/commands
diff options
context:
space:
mode:
authorCyril Hrubis <chrubis@suse.cz>2016-01-14 15:28:08 +0100
committerCyril Hrubis <chrubis@suse.cz>2016-01-14 15:33:42 +0100
commita76b72ad31fa7bb22a09f323dadd5db7c00c7f56 (patch)
tree421aad02eb2b46dd4d0c14b8d208a4c2f81cfada /testcases/commands
parentdf6c543d6762cac87eddde91efd104c7af08be0d (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-xtestcases/commands/mkswap/mkswap01.sh32
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"