]> sourceware.org Git - lvm2.git/commitdiff
NIX: Re-work VM monitoring.
authorPetr Rockai <prockai@redhat.com>
Sun, 29 Jun 2014 15:37:35 +0000 (17:37 +0200)
committerPetr Rockai <prockai@redhat.com>
Thu, 5 Feb 2015 12:47:19 +0000 (13:47 +0100)
nix/default.nix

index c73ec291610d3abf45dcc71eabbb949d1b6ab9ec..19df6e839bab7b8e598a9ec8043867c04b2299f1 100644 (file)
@@ -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
This page took 0.042957 seconds and 5 git commands to generate.