diff options
author | Petr Rockai <prockai@redhat.com> | 2014-07-29 14:30:22 +0200 |
---|---|---|
committer | Petr Rockai <prockai@redhat.com> | 2015-02-05 13:47:20 +0100 |
commit | 93d8455faac76f5dcbf40f45d28aaf506856eb85 (patch) | |
tree | e4cac51c30e1e7bda918c48dabb62f11de1d124a /nix | |
parent | 003bf24723624fcb6b10e3eec5a7b5bf5265b498 (diff) | |
download | lvm2-93d8455faac76f5dcbf40f45d28aaf506856eb85.tar.gz |
NIX: Run each test flavour as a separate derivation.
Diffstat (limited to 'nix')
-rw-r--r-- | nix/default.nix | 49 |
1 files changed, 32 insertions, 17 deletions
diff --git a/nix/default.nix b/nix/default.nix index 184fe9647..6cadd32bf 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -9,9 +9,27 @@ let pkgs = import nixpkgs {}; lib = pkgs.lib; - mkTest = { build, diskFun, extras ? [], kernel, vmtools, ... }: pkgs.stdenv.mkDerivation rec { + + mkTest = args: pkgs.stdenv.mkDerivation rec { + name = "lvm2-test-${(args.diskFun {}).name}"; + + builder = pkgs.writeScript "lvm2-collect-results" '' + #!${pkgs.bash}/bin/bash + . $stdenv/setup + mkdir -p $out/test-results + for i in ${lib.concatStringsSep " " buildInputs}; do + cat $i/test-results/list >> $out/test-results/list + cp $i/test-results'/'*.txt $out/test-results/ + done + ''; + + buildInputs = map (x: runTest (args // { flavour = x; })) + [ "ndev-vanilla" "ndev-lvmetad" "ndev-cluster" "udev-vanilla" "udev-lvmetad" "udev-cluster" ]; + }; + + runTest = { build, diskFun, extras ? [], kernel, vmtools, flavour, ... }: pkgs.stdenv.mkDerivation rec { diskImage = diskFun { extraPackages = extras; }; - name = "lvm2-test-${diskImage.name}"; + name = "lvm2-test-${diskImage.name}-${flavour}"; # this is the builder that runs in the guest origBuilder = pkgs.writeScript "vm-test-guest" '' @@ -24,25 +42,22 @@ let url = "http://archives.fedoraproject.org/pub/archive/fedora/linux/updates/16/i386/lcov-1.9-2.fc16.noarch.rpm"; sha256 = "0ycdh5mb7p5ll76mqk0p6gpnjskvxxgh3a3bfr1crh94nvpwhp4z"; }} - mkdir -p /tmp/xchg/results-{udev,ndev} + mkdir -p /tmp/xchg/results dmsetup targets export LVM_TEST_BACKING_DEVICE=/dev/sdb - lvm2-testsuite --batch --outdir /tmp/xchg/results-ndev --continue \ - --fatal-timeouts --heartbeat /tmp/xchg/heartbeat \ - --flavours ndev-vanilla,ndev-cluster,ndev-lvmetad \ - --kmsg + watch= + if echo ${flavour} | grep -q udev; then + (/usr/lib/systemd/systemd-udevd || /usr/lib/udev/udevd || /sbin/udevd || \ + find / -xdev -name \*udevd) >> /tmp/xchg/udevd.log 2>&1 & + watch="--watch /tmp/xchg/udevd.log" + fi - (/usr/lib/systemd/systemd-udevd || /usr/lib/udev/udevd || /sbin/udevd || \ - find / -xdev -name \*udevd) >> /tmp/xchg/udevd.log 2>&1 & - lvm2-testsuite --batch --outdir /tmp/xchg/results-udev --continue \ + lvm2-testsuite --batch --outdir /tmp/xchg/results --continue \ --fatal-timeouts --heartbeat /tmp/xchg/heartbeat \ - --flavours udev-vanilla,udev-cluster,udev-lvmetad \ - --watch /tmp/xchg/udevd.log --kmsg - - # if we made it this far, all test results are in + --flavours ${flavour} $watch --kmsg ${if lib.eqStrings T "" then "" else "--only ${T}"} # TODO: coverage reports # make lcov || true @@ -84,7 +99,7 @@ let continue fi - cat xchg/results-ndev/journal xchg/results-udev/journal > j.current 2> /dev/null + cat xchg/results/journal > j.current 2> /dev/null cat xchg/heartbeat > hb.current 2> /dev/null if diff j.current j.last >& /dev/null; then counter=$(($counter + 1)); @@ -116,7 +131,7 @@ let rm -f pid # disarm the monitor process # if we have any new results, stash them - mv xchg/results-*'/'*.txt $out/test-results/ || true + mv xchg/results'/'*.txt $out/test-results/ || true if test -n "$(cat xchg/in-vm-exit)"; then # the VM is done test 0 -eq "$(cat xchg/in-vm-exit)" && rm -f $out/nix-support/failed @@ -126,7 +141,7 @@ let 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 + cat xchg/results/list > $out/test-results/list || true ''; }; |