mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-28 02:50:41 +03:00
NIX: Re-work VM monitoring.
This commit is contained in:
parent
f96c310eea
commit
fa2e84caa8
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user