Whamcloud - gitweb
LU-8203 tests: Wait for archive operation to be completed. 42/20442/8
authorKirtankumar Krishna Shetty <kirtan.shetty@seagate.com>
Wed, 25 May 2016 11:33:48 +0000 (17:03 +0530)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 22 Jun 2016 02:55:43 +0000 (02:55 +0000)
As bandwith control is set to 1048576B/s in the test, so
the archive operation takes <= 40 secs to copy 39000000
bytes.

If we dont wait for the on going archive action to finish
then status will remain as STARTED and never becomes
SUCCEED as we call copytool_cleanup soon after archiving
5MB of data and the request will be stuck there for ever.

Sometimes because of previous unclean shutdown of copytool,
test_60 results in failure because of stuck request.

Test-Parameters: trivial testlist=sanity-hsm,sanity-hsm

Change-Id: I2413c32a617e43fb24e7ca6696026a3c9e1cad00
Seagate-bug-id: MRP-2586
Signed-off-by: Kirtankumar Krishna Shetty <kirtan.shetty@seagate.com>
Reviewed-on: http://review.whamcloud.com/20442
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jian Yu <jian.yu@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/sanity-hsm.sh

index fd2f711..aba7228 100755 (executable)
@@ -681,66 +681,19 @@ check_enough_free_space() {
        return 0
 }
 
-make_large_for_striping() {
+make_custom_file_for_progress() {
        local file2=${1/$DIR/$DIR2}
-       local sz=$($LCTL get_param -n lov.*-clilov-*.stripesize | head -n1)
+       local fsize=${2:-"39"}
+       local blksz=$($LCTL get_param -n lov.*-clilov-*.stripesize | head -n1)
+       blksz=${3:-$blksz}
 
-       cleanup_large_files
-
-       check_enough_free_space 5 $sz
-       [ $? != 0 ] && return $?
-
-       dd if=/dev/urandom of=$file2 count=5 bs=$sz conv=fsync ||
-               file_creation_failure dd $file2 $?
-
-       path2fid $1 || error "cannot get fid on $1"
-}
-
-make_large_for_progress() {
-       local file2=${1/$DIR/$DIR2}
-
-       cleanup_large_files
-
-       check_enough_free_space 39 1000000
-       [ $? != 0 ] && return $?
-
-       # big file is large enough, so copy time is > 30s
-       # so copytool make 1 progress
-       # size is not a multiple of 1M to avoid stripe
-       # aligment
-       dd if=/dev/urandom of=$file2 count=39 bs=1000000 conv=fsync ||
-               file_creation_failure dd $file2 $?
-
-       path2fid $1 || error "cannot get fid on $1"
-}
-
-make_large_for_progress_aligned() {
-       local file2=${1/$DIR/$DIR2}
+       [[ $fsize -gt  0 ]] || error "Invalid file size"
+       [[ $blksz -gt 0 ]] || error "Invalid stripe size"
 
        cleanup_large_files
-
-       check_enough_free_space 33 1048576
+       check_enough_free_space $fsize $blksz
        [ $? != 0 ] && return $?
-
-       # big file is large enough, so copy time is > 30s
-       # so copytool make 1 progress
-       # size is a multiple of 1M to have stripe
-       # aligment
-       dd if=/dev/urandom of=$file2 count=33 bs=1M conv=fsync ||
-               file_creation_failure dd $file2 $?
-       path2fid $1 || error "cannot get fid on $1"
-}
-
-make_large_for_cancel() {
-       local file2=${1/$DIR/$DIR2}
-
-       cleanup_large_files
-
-       check_enough_free_space 103 1048576
-       [ $? != 0 ] && return $?
-
-       # Copy timeout is 100s. 105MB => 105s
-       dd if=/dev/urandom of=$file2 count=103 bs=1M conv=fsync ||
+       dd if=/dev/zero of=$file2 count=$fsize bs=$blksz conv=fsync ||
                file_creation_failure dd $file2 $?
        path2fid $1 || error "cannot get fid on $1"
 }
@@ -1305,7 +1258,7 @@ test_12c() {
        local f=$DIR/$tdir/$tfile
        $LFS setstripe -c 2 $f
        local fid
-       fid=$(make_large_for_striping $f)
+       fid=$(make_custom_file_for_progress $f 5)
        [ $? != 0 ] && skip "not enough free space" && return
 
        local FILE_CRC=$(md5sum $f)
@@ -2320,7 +2273,7 @@ test_26() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2360,7 +2313,7 @@ test_27b() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2382,7 +2335,7 @@ test_28() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2639,7 +2592,7 @@ test_31b() {
 
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2663,7 +2616,7 @@ test_31c() {
 
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress_aligned $f)
+       fid=$(make_custom_file_for_progress $f 33 1048576)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2687,7 +2640,7 @@ test_33() {
 
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2754,7 +2707,7 @@ test_34() {
 
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2790,7 +2743,7 @@ test_35() {
        local f=$DIR/$tdir/$tfile
        local f1=$DIR/$tdir/$tfile-1
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        local fid1=$(copy_file /etc/passwd $f1)
@@ -2829,7 +2782,7 @@ test_36() {
 
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -2993,7 +2946,7 @@ test_54() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid=$(make_custom_file_for_progress $f 39 1000000)
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f ||
                error "could not archive file"
@@ -3021,7 +2974,7 @@ test_55() {
 
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
-       local fid=$(make_large_for_progress $f)
+       local fid=$(make_custom_file_for_progress $f 39 1000000)
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f ||
                error "could not archive file"
@@ -3050,7 +3003,7 @@ test_56() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f ||
@@ -3191,7 +3144,7 @@ test_60() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 10)
        [ $? != 0 ] && skip "not enough free space" && return
 
        local mdtidx=0
@@ -3246,6 +3199,10 @@ test_60() {
                error "Expected progress update after at least $interval seconds"
        fi
 
+       echo "Wait for on going archive hsm action to complete"
+       wait_update $agent "grep -o copied $copytool_log" "copied" 10 ||
+               echo "File archiving not completed even after 10 secs"
+
        cdt_clear_no_retry
        copytool_cleanup
 }
@@ -3310,7 +3267,7 @@ test_71() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f ||
@@ -3588,7 +3545,7 @@ test_104() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        # if cdt is on, it can serve too quickly the request
@@ -3856,7 +3813,7 @@ test_200() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_cancel $f)
+       fid=$(make_custom_file_for_progress $f 103 1048576)
        [ $? != 0 ] && skip "not enough free space" && return
 
        # test with cdt on is made in test_221
@@ -3904,7 +3861,7 @@ test_202() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $f
@@ -3954,7 +3911,7 @@ test_221() {
 
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_cancel $f)
+       fid=$(make_custom_file_for_progress $f 103 1048576)
        [ $? != 0 ] && skip "not enough free space" && return
 
        changelog_setup
@@ -4063,7 +4020,7 @@ test_223b() {
 
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        changelog_setup
@@ -4125,7 +4082,7 @@ test_225() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_progress $f)
+       fid=$(make_custom_file_for_progress $f 39 1000000)
        [ $? != 0 ] && skip "not enough free space" && return
 
        changelog_setup
@@ -4330,7 +4287,7 @@ test_251() {
        mkdir -p $DIR/$tdir
        local f=$DIR/$tdir/$tfile
        local fid
-       fid=$(make_large_for_cancel $f)
+       fid=$(make_custom_file_for_progress $f 103 1048576)
        [ $? != 0 ] && skip "not enough free space" && return
 
        cdt_disable