3
0
Fork 0
forked from mirrors/nixpkgs

Add basic ZFS tests

This commit is contained in:
adisbladis 2017-11-14 02:56:03 +08:00
parent 3c0c18792d
commit 59e4599723
No known key found for this signature in database
GPG key ID: ED58F95069B004F5

85
nixos/tests/zfs.nix Normal file
View file

@ -0,0 +1,85 @@
{ system ? builtins.currentSystem }:
with import ../lib/testing.nix { inherit system; };
let
makeTest = import ./make-test.nix;
makeZfsTest = name:
{ kernelPackage ? pkgs.linuxPackages_latest
, enableUnstable ? false
, extraTest ? ""
}:
makeTest {
name = "zfs-" + name;
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ adisbladis ];
};
machine = { config, lib, pkgs, ... }:
{
virtualisation.emptyDiskImages = [ 4096 ];
networking.hostId = "deadbeef";
boot.kernelPackages = kernelPackage;
boot.supportedFilesystems = [ "zfs" ];
boot.zfs.enableUnstable = enableUnstable;
environment.systemPackages = with pkgs; [
parted
];
};
testScript = ''
$machine->succeed("modprobe zfs");
$machine->succeed("zpool status");
$machine->succeed("ls /dev");
$machine->succeed(
"mkdir /tmp/mnt",
"udevadm settle",
"parted --script /dev/vdb mklabel msdos",
"parted --script /dev/vdb -- mkpart primary 1024M -1s",
"udevadm settle",
"zpool create rpool /dev/vdb1",
"zfs create -o mountpoint=legacy rpool/root",
"mount -t zfs rpool/root /tmp/mnt",
"udevadm settle",
"umount /tmp/mnt",
"zpool destroy rpool",
"udevadm settle"
);
'' + extraTest;
};
in {
stable = makeZfsTest "stable" { };
unstable = makeZfsTest "unstable" {
enableUnstable = true;
extraTest = ''
$machine->succeed(
"echo password | zpool create -o altroot='/tmp/mnt' -O encryption=aes-256-gcm -O keyformat=passphrase rpool /dev/vdb1",
"zfs create -o mountpoint=legacy rpool/root",
"mount -t zfs rpool/root /tmp/mnt",
"udevadm settle",
"umount /tmp/mnt",
"zpool destroy rpool",
"udevadm settle"
);
'';
};
installer = (import ./installer.nix { }).zfsroot;
}