at 18.03-beta 2.0 kB view raw
1{ system ? builtins.currentSystem }: 2 3with import ../lib/testing.nix { inherit system; }; 4 5let 6 7 makeTest = import ./make-test.nix; 8 9 makeZfsTest = name: 10 { kernelPackage ? pkgs.linuxPackages_latest 11 , enableUnstable ? false 12 , extraTest ? "" 13 }: 14 makeTest { 15 name = "zfs-" + name; 16 meta = with pkgs.stdenv.lib.maintainers; { 17 maintainers = [ adisbladis ]; 18 }; 19 20 machine = { config, lib, pkgs, ... }: 21 { 22 virtualisation.emptyDiskImages = [ 4096 ]; 23 networking.hostId = "deadbeef"; 24 boot.kernelPackages = kernelPackage; 25 boot.supportedFilesystems = [ "zfs" ]; 26 boot.zfs.enableUnstable = enableUnstable; 27 28 environment.systemPackages = with pkgs; [ 29 parted 30 ]; 31 }; 32 33 testScript = '' 34 $machine->succeed("modprobe zfs"); 35 $machine->succeed("zpool status"); 36 37 $machine->succeed("ls /dev"); 38 39 $machine->succeed( 40 "mkdir /tmp/mnt", 41 42 "udevadm settle", 43 "parted --script /dev/vdb mklabel msdos", 44 "parted --script /dev/vdb -- mkpart primary 1024M -1s", 45 "udevadm settle", 46 47 "zpool create rpool /dev/vdb1", 48 "zfs create -o mountpoint=legacy rpool/root", 49 "mount -t zfs rpool/root /tmp/mnt", 50 "udevadm settle", 51 52 "umount /tmp/mnt", 53 "zpool destroy rpool", 54 "udevadm settle" 55 56 ); 57 58 '' + extraTest; 59 60 }; 61 62 63in { 64 65 stable = makeZfsTest "stable" { }; 66 67 unstable = makeZfsTest "unstable" { 68 enableUnstable = true; 69 extraTest = '' 70 $machine->succeed( 71 "echo password | zpool create -o altroot='/tmp/mnt' -O encryption=aes-256-gcm -O keyformat=passphrase rpool /dev/vdb1", 72 "zfs create -o mountpoint=legacy rpool/root", 73 "mount -t zfs rpool/root /tmp/mnt", 74 "udevadm settle", 75 76 "umount /tmp/mnt", 77 "zpool destroy rpool", 78 "udevadm settle" 79 ); 80 ''; 81 }; 82 83 installer = (import ./installer.nix { }).zfsroot; 84 85}