diff options
author | Petr Rockai <prockai@redhat.com> | 2014-06-29 17:37:35 +0200 |
---|---|---|
committer | Petr Rockai <prockai@redhat.com> | 2014-11-20 12:36:45 +0100 |
commit | 92d6ef4b58914511ea6a93bfe4dc9c2f7e304f27 (patch) | |
tree | 01b464987b8973e9a983a35a04951e00009111e0 | |
parent | 9280c52aed908adf8bbcb2e20aadc0c108b9c019 (diff) | |
download | lvm2-92d6ef4b58914511ea6a93bfe4dc9c2f7e304f27.tar.gz |
NIX: Re-work VM monitoring.
-rw-r--r-- | nix/default.nix | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/nix/default.nix b/nix/default.nix index c73ec2916..19df6e839 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -1,3 +1,4 @@ +# -*- mode: nix; indent-tabs-mode: nil -*- { nixpkgs ? <nixpkgs>, lvm2Src, release ? false, rawhide32 ? "" , rawhide64 ? "" , fc20_32_updates ? "", fc20_64_updates ? "", @@ -72,34 +73,42 @@ let counter=0 rm -f j.current j.last t.current t.last while true; do + if ! test -f pid; then + counter=0 + sleep 60 + continue + fi + cat xchg/results-ndev/journal xchg/results-udev/journal > j.current 2> /dev/null cat xchg/results-ndev/timestamp xchg/results-udev/timestamp > t.current 2> /dev/null - # the journal didn't change for 10 minutes, kill the VM - if diff j.current j.last > /dev/null 2> /dev/null; then + if diff j.current j.last >& /dev/null; then counter=$(($counter + 1)); else counter=0 fi - if test $counter -eq 10 || diff t.current t.last > /dev/null 2> /dev/null; then - kill $1 - sleep 3600 # wait for the parent to kill us + if test $counter -eq 10 || diff t.current t.last >& /dev/null; then + echo + echo "VM got stuck; timestamps: $(cat t.current) $(cat t.last), counter = $counter." + echo "last journal entry: $(tail -n 1 j.current), previously $(tail -n 1 j.last)" + kill -- -$(cat pid) fi sleep 60 - mv j.current j.last - mv t.current t.last + mv j.current j.last >& /dev/null + mv t.current t.last >& /dev/null done } - for i in seq 1 20; do # we allow up to 20 VM restarts + monitor & + + for i in `seq 1 20`; do # we allow up to 20 VM restarts ${vmtools.qemu}/bin/qemu-img create -f qcow2 /dev/shm/testdisk.img 4G setsid bash -e ${vmtools.vmRunCommand (vmtools.qemuCommandLinux kernel)} & pid=$! - sleep 60 # give the VM some time to get up and running - monitor $pid & - mon=$! + sleep 180 # give the VM some time to get up and running + echo $pid > pid # monitor go wait $pid || true - kill $mon + rm -f pid # disarm the monitor process # if we have any new results, stash them mv xchg/results-*'/'*.txt $out/test-results/ || true @@ -109,7 +118,7 @@ let break fi - sleep 5 # wait for the VM to clean up before starting up a new one + sleep 10 # wait for the VM to clean up before starting up a new one done cat xchg/results-ndev/list xchg/results-udev/list > $out/test-results/list || true |