]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
torture: Use elapsed time to detect hangs
[karo-tx-linux.git] / tools / testing / selftests / rcutorture / bin / kvm-test-1-run.sh
index 2bfdb48cd920d60ded6275973442e18efc983a13..27e544e29510f744d723a2c22c844ec88e3f9752 100755 (executable)
@@ -167,14 +167,18 @@ fi
 qemu_pid=$!
 commandcompleted=0
 echo Monitoring qemu job at pid $qemu_pid
-for ((i=0;i<$seconds;i++))
+while :
 do
+       kruntime=`awk 'BEGIN { print systime() - '"$kstarttime"' }' < /dev/null`
        if kill -0 $qemu_pid > /dev/null 2>&1
        then
+               if test $kruntime -ge $seconds
+               then
+                       break;
+               fi
                sleep 1
        else
                commandcompleted=1
-               kruntime=`awk 'BEGIN { print systime() - '"$kstarttime"' }' < /dev/null`
                if test $kruntime -lt $seconds
                then
                        echo Completed in $kruntime vs. $seconds >> $resdir/Warnings 2>&1
@@ -194,20 +198,22 @@ done
 if test $commandcompleted -eq 0
 then
        echo Grace period for qemu job at pid $qemu_pid
-       for ((i=0;i<=$grace;i++))
+       while :
        do
+               kruntime=`awk 'BEGIN { print systime() - '"$kstarttime"' }' < /dev/null`
                if kill -0 $qemu_pid > /dev/null 2>&1
                then
-                       sleep 1
+                       :
                else
                        break
                fi
-               if test $i -eq $grace
+               if test $kruntime -ge $((seconds + grace))
                then
-                       kruntime=`awk 'BEGIN { print systime() - '"$kstarttime"' }'`
                        echo "!!! Hang at $kruntime vs. $seconds seconds" >> $resdir/Warnings 2>&1
                        kill -KILL $qemu_pid
+                       break
                fi
+               sleep 1
        done
 fi