summaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
authorPetr Rockai <prockai@redhat.com>2014-06-29 17:37:35 +0200
committerPetr Rockai <prockai@redhat.com>2015-02-05 13:47:19 +0100
commitfa2e84caa80053dbc5a8b42d2d3e2e1492736243 (patch)
treee6a7f52562260844317764a0da9ff96a602e9d08 /nix
parentf96c310eea7e4f6a6cc567e2f5b52a2d1f5f4c90 (diff)
downloadlvm2-fa2e84caa80053dbc5a8b42d2d3e2e1492736243.tar.gz
NIX: Re-work VM monitoring.
Diffstat (limited to 'nix')
-rw-r--r--nix/default.nix35
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