我正在尝试为程序开发一个测试用例,并且如果运行时间超过4秒,就会失败测试用例。 这怎么能在linux上完成? (我正在使用Ubuntu)在某段时间后中止程序
我知道我可以计时执行并且它的时间大于4,但这只是一个不好的方法。
谢谢!
我正在尝试为程序开发一个测试用例,并且如果运行时间超过4秒,就会失败测试用例。 这怎么能在linux上完成? (我正在使用Ubuntu)在某段时间后中止程序
我知道我可以计时执行并且它的时间大于4,但这只是一个不好的方法。
谢谢!
(shell脚本解决方案) 在后台运行你的测试用例,得到它的PId,并在4秒后检查进程是否仍在运行。
wait_seconds=4
interval_seconds=0.5
run_your_test_case &
pid=$!
max=`expr "$wait_seconds/$interval_seconds"`
for ((I=0; I<$max; I++));do
if kill -0 $pid >/dev/null;then
echo 'test failed'
else
echo 'test ok'
break
fi
sleep $interval_seconds
done
非常棒!将/ dev/null更改为2>/dev/null 但是,现在测试需要4秒的*最小值* – Mikhail 2010-09-02 17:05:07
已更新,现在需要1,2,3或4秒。 – Lekensteyn 2010-09-02 18:52:02
最终的解决方案:
1 ./slowprogram.sh >/dev/null &
2 pid=$!
3 exitbreak=0
4 for c in {0..4}; do
5 sleep 1
6 kill -0 $pid 2>/dev/null
7 if [ $? -ne 0 ] ;then
8 exitbreak=1
9 break
10 fi
11 done
12 if [ $exitbreak == 1 ]; then
13 echo '[ OK ]'
14 else
15 echo '[FAIL]'
16 kill -9 $pid 2>/dev/null
17 fi
你也可以做类似<command> & sleep 5 && kill ${!}
好吧,我不喜欢任何的答案,是不是有某种方式与超时做? – 2010-09-03 04:11:19
你必须在某个地方设置一个限制。更糟糕的解决方案是不断循环检查;这会增加CPU使用率,并可能影响测试用例的持续时间。再次更新我的答案,您现在可以选择一个时间间隔(当前设置为0.5秒),如果您的测试用例立即结束,则不会有任何延迟。 – Lekensteyn 2010-09-03 10:30:46