[LTP] [PATCH v2 2/3] shell: Introduce TST_TIMEOUT variable

Petr Vorel pvorel@suse.cz
Tue Sep 17 18:55:20 CEST 2019


> Hi Petr,

> Thanks for your working.
Thanks for a review!

...
> > +++ b/testcases/lib/tst_test.sh
> > @@ -379,9 +379,41 @@ _tst_rescmp()

> >  _tst_setup_timer()
> >  {
> > +       TST_TIMEOUT=${TST_TIMEOUT:-300}
> >         LTP_TIMEOUT_MUL=${LTP_TIMEOUT_MUL:-1}

> > -       local sec=$((300 * LTP_TIMEOUT_MUL))
> > +       if [ "$TST_TIMEOUT" = -1 ]; then
> > +               tst_res TINFO "Timeout per run is disabled"
> > +               return
> > +       fi
> > +
> > +       local err is_float
> > +       if tst_is_num "$LTP_TIMEOUT_MUL"; then
> > +               if tst_is_int "$LTP_TIMEOUT_MUL"; then
> > +                       [ "$LTP_TIMEOUT_MUL" -ge 1 ] || err=1
> > +               else
> > +                       tst_test_cmds awk
This is the reason: awk dependency.

> > +                       echo | awk '{if ('"$LTP_TIMEOUT_MUL"' < 1) {exit
> > 1}}' || err=1
> > +                       is_float=1
> > +               fi
> > +       else
> > +               err=1
> > +       fi


> I'm OK to allow $LTP_TIMEOUT_MUL being float. But here I don't see what's
> enough reason to add the is_float variable. Because we could use the float
> expression for both types comparing, isn't it?


> > +       if [ "$err" ]; then
> > +               tst_brk TCONF "LTP_TIMEOUT_MUL must be number >= 1!
> > ($LTP_TIMEOUT_MUL)"
> > +       fi
> > +
> > +       if ! tst_is_int "$TST_TIMEOUT" || [ "$TST_TIMEOUT" -lt 1 ]; then
> > +               tst_brk TBROK "TST_TIMEOUT must be int >= 1!
> > ($TST_TIMEOUT)"
> > +       fi
> > +
> > +       local sec
> > +       if [ "$is_float" ]; then
> > +               sec=`echo |awk '{printf("%d\n", '$TST_TIMEOUT' *
> > '$LTP_TIMEOUT_MUL')}'`
> > +       else
> > +               sec=$((TST_TIMEOUT * LTP_TIMEOUT_MUL))
> > +       fi


> Here as well, why we need to distinguish the float and int, is the float
> expression does not work for integer?
Because it brings awk dependency on whole library, which I'm not sure if we
want (awk is a must on linux distros, it's in busybox; it's missing on android
toolsbox, but android project concentrates on syscalls, probably nobody uses
shell tests on android). Also I'm not sure about containers, JeOS etc. (it
sometimes miss a basic dependency).
If awk dependency is ok, it'd simplify test a bit.

Kind regards,
Petr


More information about the ltp mailing list