From: Wang Shilong Date: Mon, 18 Jan 2021 02:26:31 +0000 (+0800) Subject: LU-12766 test: convert time to seconds properly X-Git-Tag: 2.14.51~165 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=1a2b381616b372efb5e386ef5fff3aa2f76873a4 LU-12766 test: convert time to seconds properly 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 Change-Id: I1c02e83f5ec15de2a4a6b312dd6e36b55dd4a7bc Reviewed-on: https://review.whamcloud.com/41259 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Jian Yu Reviewed-by: James Nunez Reviewed-by: Oleg Drokin --- diff --git a/lustre/tests/sanity-quota.sh b/lustre/tests/sanity-quota.sh index 365a424..5b07fa3 100755 --- a/lustre/tests/sanity-quota.sh +++ b/lustre/tests/sanity-quota.sh @@ -355,34 +355,48 @@ wait_grace_time() { 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| - awk 'NR == 3{ print $9 }'| sed 's/s$//') + awk 'NR == 3{ print $9 }') ;; *) 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}; - [[ $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 ..." - [ "$time" == "-" ] && + [ "$orig_time" == "-" ] && 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 - let time+=$extrasleep - echo "...sleep $time seconds" - sleep $time + let sleep_seconds+=$extrasleep + echo "...sleep $sleep_seconds seconds" + sleep $sleep_seconds fi }