summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorSarah Brofeldt <sarah@qtr.dk>2020-08-18 15:05:22 +0200
committerSarah Brofeldt <sarah@qtr.dk>2020-11-11 18:45:14 +0100
commitffe4dbf32f4335d9a8f7fc124ff7614fb9413363 (patch)
tree892081d934ba4a3615c9f5d5be212862b7f865e3 /nixos
parentd7e7fb7e7d1704a69f45085fa2a314f2bc7de1df (diff)
downloadnixpkgs-ffe4dbf32f4335d9a8f7fc124ff7614fb9413363.tar
nixpkgs-ffe4dbf32f4335d9a8f7fc124ff7614fb9413363.tar.gz
nixpkgs-ffe4dbf32f4335d9a8f7fc124ff7614fb9413363.tar.bz2
nixpkgs-ffe4dbf32f4335d9a8f7fc124ff7614fb9413363.tar.lz
nixpkgs-ffe4dbf32f4335d9a8f7fc124ff7614fb9413363.tar.xz
nixpkgs-ffe4dbf32f4335d9a8f7fc124ff7614fb9413363.tar.zst
nixpkgs-ffe4dbf32f4335d9a8f7fc124ff7614fb9413363.zip
nixos/tests/zfs: Test boot.zfs.forceImportAll
Diffstat (limited to 'nixos')
-rw-r--r--nixos/tests/zfs.nix35
1 files changed, 34 insertions, 1 deletions
diff --git a/nixos/tests/zfs.nix b/nixos/tests/zfs.nix
index 87e6c900c98..e05cd540227 100644
--- a/nixos/tests/zfs.nix
+++ b/nixos/tests/zfs.nix
@@ -18,7 +18,7 @@ let
         maintainers = [ adisbladis ];
       };
 
-      machine = { pkgs, ... }: {
+      machine = { pkgs, lib, ... }: {
         virtualisation.emptyDiskImages = [ 4096 ];
         networking.hostId = "deadbeef";
         boot.kernelPackages = kernelPackage;
@@ -26,6 +26,24 @@ let
         boot.zfs.enableUnstable = enableUnstable;
 
         environment.systemPackages = [ pkgs.parted ];
+
+        # Setup regular fileSystems machinery to ensure forceImportAll can be
+        # tested via the regular service units.
+        fileSystems = lib.mkVMOverride {
+          "/forcepool" = {
+            device = "forcepool";
+            fsType = "zfs";
+            options = [ "noauto" ];
+          };
+        };
+
+        # forcepool doesn't exist at first boot, and we need to manually test
+        # the import after tweaking the hostId.
+        systemd.services.zfs-import-forcepool.wantedBy = lib.mkVMOverride [];
+        systemd.targets.zfs.wantedBy = lib.mkVMOverride [];
+        boot.zfs.forceImportAll = true;
+        # /dev/disk/by-id doesn't get populated in the NixOS test framework
+        boot.zfs.devNodes = "/dev/disk/by-uuid";
       };
 
       testScript = ''
@@ -57,6 +75,21 @@ let
             "zpool destroy rpool",
             "udevadm settle",
         )
+
+        with subtest("boot.zfs.forceImportAll works"):
+            machine.succeed(
+                "rm /etc/hostid",
+                "zgenhostid deadcafe",
+                "zpool create forcepool /dev/vdb1 -O mountpoint=legacy",
+            )
+            machine.shutdown()
+            machine.start()
+            machine.succeed("udevadm settle")
+            machine.fail("zpool import forcepool")
+            machine.succeed(
+                "systemctl start zfs-import-forcepool.service",
+                "mount -t zfs forcepool /tmp/mnt",
+            )
       '' + extraTest;
 
     };