On 12/19/2014 07:11 PM, Matus Marhefka wrote:
> Function tst_timeout() added into LTP test interface:
> 
>       tst_timeout "command arg1 arg2 ..." timeout
> 
> Function enables waiting for specified command for timeout
> seconds. Example usage:
> 
>       cmd_output=$(tst_timeout "ping -c 3 localhost" 5)
>       if [ $? -ne 0 ]; then
>               tst_brkm TBROK "timeout reached!"
>       fi
> 
> where $cmd_output contains stdout and stderr of ping command.
> 
> Signed-off-by: Matus Marhefka <mmarh...@redhat.com>

Nice function.

Acked-by: Wanlong Gao <gaowanl...@cn.fujitsu.com>


> ---
>  testcases/lib/test.sh | 43 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
> 
> diff --git a/testcases/lib/test.sh b/testcases/lib/test.sh
> index eecbfba..ad78a87 100644
> --- a/testcases/lib/test.sh
> +++ b/testcases/lib/test.sh
> @@ -129,6 +129,49 @@ tst_check_cmds()
>       done
>  }
>  
> +# tst_timeout "command arg1 arg2 ..." timeout
> +# Runs command for specified timeout (in seconds).
> +# Function returns retcode of command or 1 if arguments are invalid.
> +tst_timeout()
> +{
> +     local command=$1
> +     local timeout=$(echo $2 | grep -o "^[0-9]\+$")
> +
> +     # command must be non-empty string with command to run
> +     if [ -z "$command" ]; then
> +             echo "first argument must be non-empty string"
> +             return 1
> +     fi
> +
> +     # accept only numbers as timeout
> +     if [ -z "$timeout" ]; then
> +             echo "only numbers as second argument"
> +             return 1
> +     fi
> +
> +     setsid sh -c "eval $command" 2>&1 &
> +     local pid=$!
> +     while [ $timeout -gt 0 ]; do
> +             kill -s 0 $pid 2>/dev/null
> +             if [ $? -ne 0 ]; then
> +                     break
> +             fi
> +             timeout=$((timeout - 1))
> +             sleep 1
> +     done
> +
> +     local ret=0
> +     if [ $timeout -le 0 ]; then
> +             ret=128
> +             kill -TERM -- -$pid
> +     fi
> +
> +     wait $pid
> +     ret=$((ret | $?))
> +
> +     return $ret
> +}
> +
>  # Check that test name is set
>  if [ -z "$TCID" ]; then
>       tst_brkm TBROK "TCID is not defined"
> 


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to