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 <[email protected]>
---
testcases/lib/test.sh | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/testcases/lib/test.sh b/testcases/lib/test.sh
index eecbfba..1c5bdf2 100644
--- a/testcases/lib/test.sh
+++ b/testcases/lib/test.sh
@@ -129,6 +129,60 @@ 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=$2
+ local usleep_time=100000
+
+ # 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
+ re='^[0-9]+$'
+ if ! [[ $timeout =~ $re ]]; then
+ echo "only numbers as second argument"
+ return 1
+ fi
+
+ if [ -z "$TMPDIR" ]; then
+ TMPDIR="/tmp"
+ fi
+
+ local output=$(mktemp --tmpdir=$TMPDIR)
+ sh -c "eval $command" >$output 2>&1 &
+ local pid=$!
+ timeout=$((timeout*1000000))
+ while [ $timeout -gt 0 ]; do
+ kill -s 0 $pid 2>/dev/null
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ timeout=$((timeout - usleep_time))
+ usleep $usleep_time
+ done
+
+ local ret=0
+ if [ $timeout -le 0 ]; then
+ ret=128
+ kill -9 $pid
+ fi
+
+ wait $pid
+ ret=$((ret | $?))
+
+ cat $output
+ rm -f $output
+
+ 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=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list