<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 18, 2019 at 4:39 PM Petr Vorel <<a href="mailto:pvorel@suse.cz" target="_blank">pvorel@suse.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">in TST_RETRY_FN_EXP_BACKOFF() and thus in TST_RETRY_FUNC() in new shell API.<br>
<br>
This function should also address possibility of slow machine.<br>
<br>
Because using on 2 places moved the default definition to the beginning<br>
of the script.<br>
+ use $((...)) instead of expr.<br>
+ move expression using $3 after check whether we have enough parameters<br>
<br>
+ document LTP_TIMEOUT_MUL environment variable in wiki.<br>
<br>
Signed-off-by: Petr Vorel <<a href="mailto:pvorel@suse.cz" target="_blank">pvorel@suse.cz</a>><br>
---<br>
Hi,<br>
<br>
I can squash these 2 commits.<br>
<br>
General question about Test Writing Guidelines in wiki [1]:<br>
1) we have separate section for C and shell API, which is probably a good<br>
choice, but we're trying to sync them. That leads to things like retry<br>
function documented under chapter for shell API (2.3).<br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">Thanks for point out this.</div><div class="gmail_default" style="font-size:small"></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
+ That page is too long and without table of contents (not easy to<br>
navigate in it; I tried to add TOC, but without success). Maybe adding<br>
TOC or split the page to 3: 1) general info 2) C API 3) shell API would<br>
help. WDYT?<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Personally, I think adding TOC may be a better choice, since we don't have the whole picture for the guidelines and usually hard to navigate in it. </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">To split the guideline that probably leads to the new LTP-user to read more document pages. That's an annoying thing for me at least :).</div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Kind regards,<br>
Petr<br>
<br>
[1] <a href="https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines" rel="noreferrer" target="_blank">https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines</a><br>
[2] <a href="https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#retry-a-function-in-limited-time" rel="noreferrer" target="_blank">https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#retry-a-function-in-limited-time</a><br>
<br>
 doc/test-writing-guidelines.txt | 2 ++<br>
 testcases/lib/tst_test.sh       | 9 +++++----<br>
 2 files changed, 7 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt<br>
index 869e6ed35..782e14f32 100644<br>
--- a/doc/test-writing-guidelines.txt<br>
+++ b/doc/test-writing-guidelines.txt<br>
@@ -1881,6 +1881,8 @@ simply by setting right '$TST_NEEDS_FOO'.<br>
                        the test (see below).<br>
 | 'TST_NEEDS_MODULE' | Test module name needed for the test (see below).<br>
 | 'TST_NEEDS_DRIVERS'| Checks kernel drivers support for the test.<br>
+| 'LTP_TIMEOUT_MUL'  | Multiply timeout (> 1 is useful for slow machines to<br>
+                       avoid unexpected timeout).<br>
 |=============================================================================<br>
<br>
 Checking for presence of commands<br>
diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh<br>
index 31b3a3951..60d765424 100644<br>
--- a/testcases/lib/tst_test.sh<br>
+++ b/testcases/lib/tst_test.sh<br>
@@ -17,6 +17,8 @@ export TST_ITERATIONS=1<br>
 export TST_TMPDIR_RHOST=0<br>
 export TST_LIB_LOADED=1<br>
<br>
+export LTP_TIMEOUT_MUL=${LTP_TIMEOUT_MUL:-1}<br>
+<br>
 . tst_ansi_color.sh<br>
 . tst_security.sh<br>
<br>
@@ -164,12 +166,13 @@ TST_RETRY_FN_EXP_BACKOFF()<br>
 {<br>
        local tst_fun="$1"<br>
        local tst_exp=$2<br>
-       local tst_sec=$(expr $3 \* 1000000)<br>
        local tst_delay=1<br>
+       local tst_sec<br>
<br>
        if [ $# -ne 3 ]; then<br>
                tst_brk TBROK "TST_RETRY_FN_EXP_BACKOFF expects 3 parameters"<br>
        fi<br>
+       tst_sec=$(($3 * LTP_TIMEOUT_MUL * 1000000))</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
        if ! tst_is_int "$tst_sec"; then<br>
                tst_brk TBROK "TST_RETRY_FN_EXP_BACKOFF: tst_sec must be integer ('$tst_sec')"<br>
@@ -185,7 +188,7 @@ TST_RETRY_FN_EXP_BACKOFF()<br>
                        tst_sleep ${tst_delay}us<br>
                        tst_delay=$((tst_delay*2))<br>
                else<br>
-                       tst_brk TBROK "\"$tst_fun\" timed out"<br>
+                       tst_brk TBROK "\"$tst_fun\" timed out! If you are running on slow machine, try exporting LTP_TIMEOUT_MUL > 1"<br>
                fi<br>
        done<br>
<br>
@@ -374,8 +377,6 @@ _tst_rescmp()<br>
<br>
 _tst_setup_timer()<br>
 {<br>
-       LTP_TIMEOUT_MUL=${LTP_TIMEOUT_MUL:-1}<br>
-<br>
        local sec=$((300 * LTP_TIMEOUT_MUL))<br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">Maybe we need to check if the LTP_TIMEOUT_MUL is valid(>1) as what we do for C API? <br></div></div><div><br></div>-- <br><div dir="ltr" class="m_6408866957368653632gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>