Whamcloud - gitweb
LU-12766 test: convert time to seconds properly 59/41259/4
authorWang Shilong <wshilong@ddn.com>
Mon, 18 Jan 2021 02:26:31 +0000 (10:26 +0800)
committerOleg Drokin <green@whamcloud.com>
Fri, 26 Feb 2021 08:22:57 +0000 (08:22 +0000)
According to test logs, grace time could be 3m56s,
and it will be converted to 21305s by wrongly which
caused timeout of test sytem.

Actually, grace time could be something like 1w2d3h4m5s
Fix calculations for this.

Test-Parameters: trivial testlist=sanity-quota
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Change-Id: I1c02e83f5ec15de2a4a6b312dd6e36b55dd4a7bc
Reviewed-on: https://review.whamcloud.com/41259
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: James Nunez <jnunez@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/tests/sanity-quota.sh

index 365a424..5b07fa3 100755 (executable)
@@ -355,34 +355,48 @@ wait_grace_time() {
        case $flavour in
                block)
                        time=$(lfs quota -$qtype $qarg $parg $DIR|
        case $flavour in
                block)
                        time=$(lfs quota -$qtype $qarg $parg $DIR|
-                                  awk 'NR == 3{ print $5 }'| sed 's/s$//')
+                                  awk 'NR == 3{ print $5 }')
                        ;;
                file)
                        time=$(lfs quota -$qtype $qarg $DIR|
                        ;;
                file)
                        time=$(lfs quota -$qtype $qarg $DIR|
-                                  awk 'NR == 3{ print $9 }'| sed 's/s$//')
+                                  awk 'NR == 3{ print $9 }')
                        ;;
                *)
                        error "Unknown quota type: $flavour"
                        ;;
        esac
 
                        ;;
                *)
                        error "Unknown quota type: $flavour"
                        ;;
        esac
 
+       local sleep_seconds=0
+       local orig_time=$time
+
+       echo "Grace time is $time"
        # from lfs.c:__sec2str()
        # const char spec[] = "smhdw";
        # {1, 60, 60*60, 24*60*60, 7*24*60*60};
        # from lfs.c:__sec2str()
        # const char spec[] = "smhdw";
        # {1, 60, 60*60, 24*60*60, 7*24*60*60};
-       [[ $time == *m* ]] && time=${time//m/} && time=$((time*60));
-       [[ $time == *h* ]] && time=${time//h/} && time=$((time*60*60));
-       [[ $time == *d* ]] && time=${time//d/} && time=$((time*24*60*60));
-       [[ $time == *w* ]] && time=${time//w/} && time=$((time*7*24*60*60));
+       [[ $time == *w* ]] && w_time=${time%w*} &&
+               let sleep_seconds+=$((w_time*7*24*60*60));
+       time=${time#*w}
+       [[ $time == *d* ]] && d_time=${time%d*} &&
+               let sleep_seconds+=$((d_time*24*60*60));
+       time=${time#*d}
+       [[ $time == *h* ]] && h_time=${time%h*} &&
+               let sleep_seconds+=$((h_time*60*60));
+       time=${time#*h}
+       [[ $time == *m* ]] && m_time=${time%m*} &&
+               let sleep_seconds+=$((m_time*60));
+       time=${time#*m}
+       [[ $time == *s* ]] && s_time=${time%s*} &&
+               let sleep_seconds+=$s_time
 
        echo "Sleep through grace ..."
 
        echo "Sleep through grace ..."
-       [ "$time" == "-" ] &&
+       [ "$orig_time" == "-" ] &&
            error "Grace timeout was not set or quota not exceeded"
            error "Grace timeout was not set or quota not exceeded"
-       if [ "$time" == "none" ]; then
+       if [ "$orig_time" == "none" ]; then
            echo "...Grace timeout already expired"
        else
            echo "...Grace timeout already expired"
        else
-               let time+=$extrasleep
-               echo "...sleep $time seconds"
-               sleep $time
+               let sleep_seconds+=$extrasleep
+               echo "...sleep $sleep_seconds seconds"
+               sleep $sleep_seconds
        fi
 }
 
        fi
 }