forked from mirrors/nixpkgs
Add basic ZFS tests
This commit is contained in:
parent
3c0c18792d
commit
59e4599723
85
nixos/tests/zfs.nix
Normal file
85
nixos/tests/zfs.nix
Normal 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;
|
||||
|
||||
}
|
Loading…
Reference in a new issue