プログラムのテスト ケースを作成しようとしていますが、実行時間が 4 秒を超えた場合にテスト ケースを失敗させたいと考えています。Linuxでこれを行うにはどうすればよいですか? (私はUbuntuを使用しています)
実行のタイミングを計って 4 を超えて失敗できることはわかっていますが、それは単に悪いアプローチです。
ありがとう!
(シェル スクリプト ソリューション) テストケースをバックグラウンドで実行し、その 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
最終的解決:
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 ${!}