mirror of
git://sourceware.org/git/lvm2.git
synced 2025-08-04 12:22:00 +03:00
NIX: Run each test flavour as a separate derivation.
This commit is contained in:
@ -9,9 +9,27 @@
|
|||||||
let
|
let
|
||||||
pkgs = import nixpkgs {};
|
pkgs = import nixpkgs {};
|
||||||
lib = pkgs.lib;
|
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; };
|
diskImage = diskFun { extraPackages = extras; };
|
||||||
name = "lvm2-test-${diskImage.name}";
|
name = "lvm2-test-${diskImage.name}-${flavour}";
|
||||||
|
|
||||||
# this is the builder that runs in the guest
|
# this is the builder that runs in the guest
|
||||||
origBuilder = pkgs.writeScript "vm-test-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";
|
url = "http://archives.fedoraproject.org/pub/archive/fedora/linux/updates/16/i386/lcov-1.9-2.fc16.noarch.rpm";
|
||||||
sha256 = "0ycdh5mb7p5ll76mqk0p6gpnjskvxxgh3a3bfr1crh94nvpwhp4z"; }}
|
sha256 = "0ycdh5mb7p5ll76mqk0p6gpnjskvxxgh3a3bfr1crh94nvpwhp4z"; }}
|
||||||
|
|
||||||
mkdir -p /tmp/xchg/results-{udev,ndev}
|
mkdir -p /tmp/xchg/results
|
||||||
|
|
||||||
dmsetup targets
|
dmsetup targets
|
||||||
|
|
||||||
export LVM_TEST_BACKING_DEVICE=/dev/sdb
|
export LVM_TEST_BACKING_DEVICE=/dev/sdb
|
||||||
|
|
||||||
lvm2-testsuite --batch --outdir /tmp/xchg/results-ndev --continue \
|
watch=
|
||||||
--fatal-timeouts --heartbeat /tmp/xchg/heartbeat \
|
if echo ${flavour} | grep -q udev; then
|
||||||
--flavours ndev-vanilla,ndev-cluster,ndev-lvmetad \
|
(/usr/lib/systemd/systemd-udevd || /usr/lib/udev/udevd || /sbin/udevd || \
|
||||||
--kmsg
|
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 || \
|
lvm2-testsuite --batch --outdir /tmp/xchg/results --continue \
|
||||||
find / -xdev -name \*udevd) >> /tmp/xchg/udevd.log 2>&1 &
|
|
||||||
lvm2-testsuite --batch --outdir /tmp/xchg/results-udev --continue \
|
|
||||||
--fatal-timeouts --heartbeat /tmp/xchg/heartbeat \
|
--fatal-timeouts --heartbeat /tmp/xchg/heartbeat \
|
||||||
--flavours udev-vanilla,udev-cluster,udev-lvmetad \
|
--flavours ${flavour} $watch --kmsg ${if lib.eqStrings T "" then "" else "--only ${T}"}
|
||||||
--watch /tmp/xchg/udevd.log --kmsg
|
|
||||||
|
|
||||||
# if we made it this far, all test results are in
|
|
||||||
|
|
||||||
# TODO: coverage reports
|
# TODO: coverage reports
|
||||||
# make lcov || true
|
# make lcov || true
|
||||||
@ -84,7 +99,7 @@ let
|
|||||||
continue
|
continue
|
||||||
fi
|
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
|
cat xchg/heartbeat > hb.current 2> /dev/null
|
||||||
if diff j.current j.last >& /dev/null; then
|
if diff j.current j.last >& /dev/null; then
|
||||||
counter=$(($counter + 1));
|
counter=$(($counter + 1));
|
||||||
@ -116,7 +131,7 @@ let
|
|||||||
rm -f pid # disarm the monitor process
|
rm -f pid # disarm the monitor process
|
||||||
|
|
||||||
# if we have any new results, stash them
|
# 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
|
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
|
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
|
sleep 10 # wait for the VM to clean up before starting up a new one
|
||||||
done
|
done
|
||||||
|
|
||||||
cat xchg/results-ndev/list xchg/results-udev/list > $out/test-results/list || true
|
cat xchg/results/list > $out/test-results/list || true
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user