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> --- 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" -- 1.8.3.1 ------------------------------------------------------------------------------ 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