From 1237ac36db1a457ae561134d191d2924a9ce5ffc Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 25 Aug 2022 13:13:20 +0200 Subject: fix mdadm mounting, move test to mdadm test --- tests/mdadm.nix | 39 +++++++++++++++++++++++++++++++++++++++ tests/test.nix | 38 -------------------------------------- 2 files changed, 39 insertions(+), 38 deletions(-) create mode 100644 tests/mdadm.nix delete mode 100644 tests/test.nix (limited to 'tests') diff --git a/tests/mdadm.nix b/tests/mdadm.nix new file mode 100644 index 0000000..37465e4 --- /dev/null +++ b/tests/mdadm.nix @@ -0,0 +1,39 @@ +{ makeTest ? import +, pkgs ? (import {}) +}: +let + makeTest' = args: + makeTest args { + inherit pkgs; + inherit (pkgs) system; + }; + disko-config = import ../example/mdadm.nix; + tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); + tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); +in makeTest' { + name = "disko"; + + nodes.machine = + { config, pkgs, modulesPath, ... }: + + { + imports = [ + (modulesPath + "/profiles/installation-device.nix") + (modulesPath + "/profiles/base.nix") + ]; + + # speed-up eval + documentation.enable = false; + + virtualisation.emptyDiskImages = [ 512 512 ]; + }; + + testScript = '' + machine.succeed("echo 'secret' > /tmp/secret.key"); + machine.succeed("${tsp-create}"); + machine.succeed("${tsp-mount}"); + machine.succeed("${tsp-mount}"); # verify that the command is idempotent + machine.succeed("test -b /dev/md/raid1"); + machine.succeed("grep -qs '/mnt/raid' /proc/mounts"); + ''; +} diff --git a/tests/test.nix b/tests/test.nix deleted file mode 100644 index 1384590..0000000 --- a/tests/test.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ makeTest ? import -, pkgs ? (import {}) -}: -let - makeTest' = args: - makeTest args { - inherit pkgs; - inherit (pkgs) system; - }; - disko-config = import ../example/raid.nix; - tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); - tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); -in makeTest' { - name = "disko"; - - nodes.machine = - { config, pkgs, modulesPath, ... }: - - { - imports = [ - (modulesPath + "/profiles/installation-device.nix") - (modulesPath + "/profiles/base.nix") - ]; - - # speed-up eval - documentation.enable = false; - - virtualisation.emptyDiskImages = [ 512 512 ]; - }; - - testScript = '' - machine.succeed("echo 'secret' > /tmp/secret.key"); - machine.succeed("${tsp-create}"); - machine.succeed("${tsp-mount}"); - machine.succeed("${tsp-mount}"); # verify that the command is idempotent - machine.succeed("test -b /dev/md/raid1"); - ''; -} -- cgit v1.2.3 From dd99e29edc994056d5f700e24a75406115e98dff Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 25 Aug 2022 13:14:07 +0200 Subject: fix cryptsetup luksOpen idempotency, add luks-lvm test --- tests/luks-lvm.nix | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tests/luks-lvm.nix (limited to 'tests') diff --git a/tests/luks-lvm.nix b/tests/luks-lvm.nix new file mode 100644 index 0000000..3e2c5f2 --- /dev/null +++ b/tests/luks-lvm.nix @@ -0,0 +1,39 @@ +{ makeTest ? import +, pkgs ? (import {}) +}: +let + makeTest' = args: + makeTest args { + inherit pkgs; + inherit (pkgs) system; + }; + disko-config = import ../example/luks-lvm.nix; + tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); + tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); +in makeTest' { + name = "disko"; + + nodes.machine = + { config, pkgs, modulesPath, ... }: + + { + imports = [ + (modulesPath + "/profiles/installation-device.nix") + (modulesPath + "/profiles/base.nix") + ]; + + # speed-up eval + documentation.enable = false; + + virtualisation.emptyDiskImages = [ 512 ]; + }; + + testScript = '' + machine.succeed("echo 'secret' > /tmp/secret.key"); + machine.succeed("${tsp-create}"); + machine.succeed("${tsp-mount}"); + machine.succeed("${tsp-mount}"); # verify that the command is idempotent + machine.succeed("cryptsetup isLuks /dev/vdb2"); + machine.succeed("grep -qs '/mnt/home' /proc/mounts"); + ''; +} -- cgit v1.2.3 From 83fb8f661eb574f32fad1d51bbebd0c36595db01 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 25 Aug 2022 15:08:26 +0200 Subject: add zfs support/test/example --- tests/zfs.nix | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/zfs.nix (limited to 'tests') diff --git a/tests/zfs.nix b/tests/zfs.nix new file mode 100644 index 0000000..bc807bc --- /dev/null +++ b/tests/zfs.nix @@ -0,0 +1,40 @@ +{ makeTest ? import +, pkgs ? (import {}) +}: +let + makeTest' = args: + makeTest args { + inherit pkgs; + inherit (pkgs) system; + }; + disko-config = import ../example/zfs.nix; + tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); + tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); +in makeTest' { + name = "disko"; + + nodes.machine = + { config, pkgs, modulesPath, ... }: + + { + imports = [ + (modulesPath + "/profiles/installation-device.nix") + (modulesPath + "/profiles/base.nix") + ]; + + # speed-up eval + documentation.enable = false; + + virtualisation.emptyDiskImages = [ 512 512 ]; + }; + + testScript = '' + machine.succeed("echo 'secret' > /tmp/secret.key"); + machine.succeed("${tsp-create}"); + machine.succeed("${tsp-mount}"); + machine.succeed("${tsp-mount}"); # verify that the command is idempotent + machine.succeed("test -b /dev/zvol/zroot/zfs_testvolume"); + machine.succeed("grep -qs '/mnt/ext4onzfs' /proc/mounts"); + ''; +} + -- cgit v1.2.3 From 0ffaac7913565e497c5193d45fd50de78f3241f0 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 25 Aug 2022 15:16:26 +0200 Subject: run all tests on ci --- tests/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/default.nix (limited to 'tests') diff --git a/tests/default.nix b/tests/default.nix new file mode 100644 index 0000000..3b24ba6 --- /dev/null +++ b/tests/default.nix @@ -0,0 +1,8 @@ +{ makeTest ? import +, pkgs ? (import {}) +}@args: +{ + luks-lvm = import ./luks-lvm.nix args; + mdadm = import ./mdadm.nix args; + zfs = import ./zfs.nix args; +} -- cgit v1.2.3 From dadc49133042834dada6eafc98dcb1f7f2c5e43b Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 25 Aug 2022 18:36:56 +0200 Subject: add lvm raid --- tests/lvm-raid.nix | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tests/lvm-raid.nix (limited to 'tests') diff --git a/tests/lvm-raid.nix b/tests/lvm-raid.nix new file mode 100644 index 0000000..5165645 --- /dev/null +++ b/tests/lvm-raid.nix @@ -0,0 +1,39 @@ +{ makeTest ? import +, pkgs ? (import {}) +}: +let + makeTest' = args: + makeTest args { + inherit pkgs; + inherit (pkgs) system; + }; + disko-config = import ../example/lvm-raid.nix; + tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); + tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); +in makeTest' { + name = "disko"; + + nodes.machine = + { config, pkgs, modulesPath, ... }: + + { + imports = [ + (modulesPath + "/profiles/installation-device.nix") + (modulesPath + "/profiles/base.nix") + ]; + + # speed-up eval + documentation.enable = false; + + virtualisation.emptyDiskImages = [ 512 512 ]; + boot.kernelModules = [ "dm-raid" "dm-mirror" ]; + }; + + testScript = '' + machine.succeed("echo 'secret' > /tmp/secret.key"); + machine.succeed("${tsp-create}"); + machine.succeed("${tsp-mount}"); + machine.succeed("${tsp-mount}"); # verify that the command is idempotent + machine.succeed("grep -qs '/mnt/home' /proc/mounts"); + ''; +} -- cgit v1.2.3 From 81e704b638a8a7158bd9106b7fd592fb982d1864 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 25 Aug 2022 21:46:17 +0200 Subject: add btrfs subvolumes --- tests/btrfs-subvolumes.nix | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/btrfs-subvolumes.nix (limited to 'tests') diff --git a/tests/btrfs-subvolumes.nix b/tests/btrfs-subvolumes.nix new file mode 100644 index 0000000..6527329 --- /dev/null +++ b/tests/btrfs-subvolumes.nix @@ -0,0 +1,40 @@ +{ makeTest ? import +, pkgs ? (import {}) +}: +let + makeTest' = args: + makeTest args { + inherit pkgs; + inherit (pkgs) system; + }; + disko-config = import ../example/btrfs-subvolumes.nix; + tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); + tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); +in makeTest' { + name = "disko"; + + nodes.machine = + { config, pkgs, modulesPath, ... }: + + { + imports = [ + (modulesPath + "/profiles/installation-device.nix") + (modulesPath + "/profiles/base.nix") + ]; + + # speed-up eval + documentation.enable = false; + + virtualisation.emptyDiskImages = [ 512 ]; + }; + + testScript = '' + machine.succeed("echo 'secret' > /tmp/secret.key"); + machine.succeed("${tsp-create}"); + machine.succeed("${tsp-mount}"); + machine.succeed("${tsp-mount}"); # verify that the command is idempotent + machine.succeed("test -e /mnt/test"); + machine.succeed("btrfs subvolume list /mnt | grep -qs 'path test$'"); + ''; +} + -- cgit v1.2.3 From 1ac0e76b15a3b13c83d25a78b32dee4070a584b7 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 25 Aug 2022 23:12:49 +0200 Subject: tests: add lib, autoimport tests --- tests/btrfs-subvolumes.nix | 37 ++++-------------------------------- tests/default.nix | 17 ++++++++++++----- tests/lib.nix | 47 ++++++++++++++++++++++++++++++++++++++++++++++ tests/luks-lvm.nix | 37 ++++-------------------------------- tests/lvm-raid.nix | 41 +++++++--------------------------------- tests/mdadm.nix | 37 ++++-------------------------------- tests/zfs.nix | 38 ++++--------------------------------- 7 files changed, 82 insertions(+), 172 deletions(-) create mode 100644 tests/lib.nix (limited to 'tests') diff --git a/tests/btrfs-subvolumes.nix b/tests/btrfs-subvolumes.nix index 6527329..d901b0e 100644 --- a/tests/btrfs-subvolumes.nix +++ b/tests/btrfs-subvolumes.nix @@ -1,38 +1,9 @@ -{ makeTest ? import -, pkgs ? (import {}) +{ pkgs ? (import {}) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest }: -let - makeTest' = args: - makeTest args { - inherit pkgs; - inherit (pkgs) system; - }; +makeDiskoTest { disko-config = import ../example/btrfs-subvolumes.nix; - tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); - tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); -in makeTest' { - name = "disko"; - - nodes.machine = - { config, pkgs, modulesPath, ... }: - - { - imports = [ - (modulesPath + "/profiles/installation-device.nix") - (modulesPath + "/profiles/base.nix") - ]; - - # speed-up eval - documentation.enable = false; - - virtualisation.emptyDiskImages = [ 512 ]; - }; - - testScript = '' - machine.succeed("echo 'secret' > /tmp/secret.key"); - machine.succeed("${tsp-create}"); - machine.succeed("${tsp-mount}"); - machine.succeed("${tsp-mount}"); # verify that the command is idempotent + extraTestScript = '' machine.succeed("test -e /mnt/test"); machine.succeed("btrfs subvolume list /mnt | grep -qs 'path test$'"); ''; diff --git a/tests/default.nix b/tests/default.nix index 3b24ba6..14b7a19 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -1,8 +1,15 @@ { makeTest ? import , pkgs ? (import {}) }@args: -{ - luks-lvm = import ./luks-lvm.nix args; - mdadm = import ./mdadm.nix args; - zfs = import ./zfs.nix args; -} +let + lib = pkgs.lib; + makeDiskoTest = (pkgs.callPackage ./lib.nix { inherit makeTest; }).makeDiskoTest; + allTestFilenames = + builtins.map (lib.removeSuffix ".nix") ( + builtins.filter + (x: lib.hasSuffix ".nix" x && x != "default.nix" && x != "lib.nix") + (lib.attrNames (builtins.readDir ./.)) + ); + + allTests = lib.genAttrs (allTestFilenames) (test: import (./. + "/${test}.nix") { inherit makeDiskoTest; }); +in allTests diff --git a/tests/lib.nix b/tests/lib.nix new file mode 100644 index 0000000..b98be69 --- /dev/null +++ b/tests/lib.nix @@ -0,0 +1,47 @@ +{ pkgs ? (import {}) +, makeTest ? import +, ... +}: +{ + makeDiskoTest = { + disko-config, + extraTestScript, + extraConfig ? {} + }: + let + lib = pkgs.lib; + makeTest' = args: + makeTest args { + inherit pkgs; + inherit (pkgs) system; + }; + tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); + tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); + num-disks = builtins.length (builtins.filter (x: builtins.match "vd." x == []) (lib.attrNames disko-config.content)); + in makeTest' { + name = "disko"; + + nodes.machine = + { config, pkgs, modulesPath, ... }: + + { + imports = [ + (modulesPath + "/profiles/installation-device.nix") + (modulesPath + "/profiles/base.nix") + ]; + + # speed-up eval + documentation.enable = false; + + virtualisation.emptyDiskImages = builtins.genList (_: 512) num-disks; + } // extraConfig; + + testScript = '' + machine.succeed("echo 'secret' > /tmp/secret.key"); + machine.succeed("${tsp-create}"); + machine.succeed("${tsp-mount}"); + machine.succeed("${tsp-mount}"); # verify that the command is idempotent + ${extraTestScript} + ''; + }; +} diff --git a/tests/luks-lvm.nix b/tests/luks-lvm.nix index 3e2c5f2..305bff1 100644 --- a/tests/luks-lvm.nix +++ b/tests/luks-lvm.nix @@ -1,38 +1,9 @@ -{ makeTest ? import -, pkgs ? (import {}) +{ pkgs ? (import {}) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest }: -let - makeTest' = args: - makeTest args { - inherit pkgs; - inherit (pkgs) system; - }; +makeDiskoTest { disko-config = import ../example/luks-lvm.nix; - tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); - tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); -in makeTest' { - name = "disko"; - - nodes.machine = - { config, pkgs, modulesPath, ... }: - - { - imports = [ - (modulesPath + "/profiles/installation-device.nix") - (modulesPath + "/profiles/base.nix") - ]; - - # speed-up eval - documentation.enable = false; - - virtualisation.emptyDiskImages = [ 512 ]; - }; - - testScript = '' - machine.succeed("echo 'secret' > /tmp/secret.key"); - machine.succeed("${tsp-create}"); - machine.succeed("${tsp-mount}"); - machine.succeed("${tsp-mount}"); # verify that the command is idempotent + extraTestScript = '' machine.succeed("cryptsetup isLuks /dev/vdb2"); machine.succeed("grep -qs '/mnt/home' /proc/mounts"); ''; diff --git a/tests/lvm-raid.nix b/tests/lvm-raid.nix index 5165645..d7c4096 100644 --- a/tests/lvm-raid.nix +++ b/tests/lvm-raid.nix @@ -1,39 +1,12 @@ -{ makeTest ? import -, pkgs ? (import {}) +{ pkgs ? (import {}) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest }: -let - makeTest' = args: - makeTest args { - inherit pkgs; - inherit (pkgs) system; - }; +makeDiskoTest { disko-config = import ../example/lvm-raid.nix; - tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); - tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); -in makeTest' { - name = "disko"; - - nodes.machine = - { config, pkgs, modulesPath, ... }: - - { - imports = [ - (modulesPath + "/profiles/installation-device.nix") - (modulesPath + "/profiles/base.nix") - ]; - - # speed-up eval - documentation.enable = false; - - virtualisation.emptyDiskImages = [ 512 512 ]; - boot.kernelModules = [ "dm-raid" "dm-mirror" ]; - }; - - testScript = '' - machine.succeed("echo 'secret' > /tmp/secret.key"); - machine.succeed("${tsp-create}"); - machine.succeed("${tsp-mount}"); - machine.succeed("${tsp-mount}"); # verify that the command is idempotent + extraTestScript = '' machine.succeed("grep -qs '/mnt/home' /proc/mounts"); ''; + extraConfig = { + boot.kernelModules = [ "dm-raid" "dm-mirror" ]; + }; } diff --git a/tests/mdadm.nix b/tests/mdadm.nix index 37465e4..72f2faf 100644 --- a/tests/mdadm.nix +++ b/tests/mdadm.nix @@ -1,38 +1,9 @@ -{ makeTest ? import -, pkgs ? (import {}) +{ pkgs ? (import {}) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest }: -let - makeTest' = args: - makeTest args { - inherit pkgs; - inherit (pkgs) system; - }; +makeDiskoTest { disko-config = import ../example/mdadm.nix; - tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); - tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); -in makeTest' { - name = "disko"; - - nodes.machine = - { config, pkgs, modulesPath, ... }: - - { - imports = [ - (modulesPath + "/profiles/installation-device.nix") - (modulesPath + "/profiles/base.nix") - ]; - - # speed-up eval - documentation.enable = false; - - virtualisation.emptyDiskImages = [ 512 512 ]; - }; - - testScript = '' - machine.succeed("echo 'secret' > /tmp/secret.key"); - machine.succeed("${tsp-create}"); - machine.succeed("${tsp-mount}"); - machine.succeed("${tsp-mount}"); # verify that the command is idempotent + extraTestScript = '' machine.succeed("test -b /dev/md/raid1"); machine.succeed("grep -qs '/mnt/raid' /proc/mounts"); ''; diff --git a/tests/zfs.nix b/tests/zfs.nix index bc807bc..3c8216c 100644 --- a/tests/zfs.nix +++ b/tests/zfs.nix @@ -1,40 +1,10 @@ -{ makeTest ? import -, pkgs ? (import {}) +{ pkgs ? (import {}) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest }: -let - makeTest' = args: - makeTest args { - inherit pkgs; - inherit (pkgs) system; - }; +makeDiskoTest { disko-config = import ../example/zfs.nix; - tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); - tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); -in makeTest' { - name = "disko"; - - nodes.machine = - { config, pkgs, modulesPath, ... }: - - { - imports = [ - (modulesPath + "/profiles/installation-device.nix") - (modulesPath + "/profiles/base.nix") - ]; - - # speed-up eval - documentation.enable = false; - - virtualisation.emptyDiskImages = [ 512 512 ]; - }; - - testScript = '' - machine.succeed("echo 'secret' > /tmp/secret.key"); - machine.succeed("${tsp-create}"); - machine.succeed("${tsp-mount}"); - machine.succeed("${tsp-mount}"); # verify that the command is idempotent + extraTestScript = '' machine.succeed("test -b /dev/zvol/zroot/zfs_testvolume"); machine.succeed("grep -qs '/mnt/ext4onzfs' /proc/mounts"); ''; } - -- cgit v1.2.3 From 69f1337980756fe4ac001cadce7760e7b06c75da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 26 Aug 2022 08:41:58 +0200 Subject: fix inconsistent indentation with nixpkgs-fmt --- tests/btrfs-subvolumes.nix | 4 +-- tests/default.nix | 5 ++-- tests/lib.nix | 75 +++++++++++++++++++++++----------------------- tests/luks-lvm.nix | 4 +-- tests/lvm-raid.nix | 4 +-- tests/mdadm.nix | 4 +-- tests/zfs.nix | 4 +-- 7 files changed, 51 insertions(+), 49 deletions(-) (limited to 'tests') diff --git a/tests/btrfs-subvolumes.nix b/tests/btrfs-subvolumes.nix index d901b0e..3ff4386 100644 --- a/tests/btrfs-subvolumes.nix +++ b/tests/btrfs-subvolumes.nix @@ -1,5 +1,5 @@ -{ pkgs ? (import {}) -, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest +{ pkgs ? (import { }) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix { }).makeDiskoTest }: makeDiskoTest { disko-config = import ../example/btrfs-subvolumes.nix; diff --git a/tests/default.nix b/tests/default.nix index 14b7a19..525f936 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -1,5 +1,5 @@ { makeTest ? import -, pkgs ? (import {}) +, pkgs ? (import { }) }@args: let lib = pkgs.lib; @@ -12,4 +12,5 @@ let ); allTests = lib.genAttrs (allTestFilenames) (test: import (./. + "/${test}.nix") { inherit makeDiskoTest; }); -in allTests +in +allTests diff --git a/tests/lib.nix b/tests/lib.nix index b98be69..2ec42e6 100644 --- a/tests/lib.nix +++ b/tests/lib.nix @@ -1,47 +1,48 @@ -{ pkgs ? (import {}) +{ pkgs ? (import { }) , makeTest ? import , ... }: { - makeDiskoTest = { - disko-config, - extraTestScript, - extraConfig ? {} - }: - let - lib = pkgs.lib; - makeTest' = args: - makeTest args { - inherit pkgs; - inherit (pkgs) system; - }; - tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. {}).create disko-config); - tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. {}).mount disko-config); - num-disks = builtins.length (builtins.filter (x: builtins.match "vd." x == []) (lib.attrNames disko-config.content)); - in makeTest' { - name = "disko"; + makeDiskoTest = + { disko-config + , extraTestScript + , extraConfig ? { } + }: + let + lib = pkgs.lib; + makeTest' = args: + makeTest args { + inherit pkgs; + inherit (pkgs) system; + }; + tsp-create = pkgs.writeScript "create" ((pkgs.callPackage ../. { }).create disko-config); + tsp-mount = pkgs.writeScript "mount" ((pkgs.callPackage ../. { }).mount disko-config); + num-disks = builtins.length (builtins.filter (x: builtins.match "vd." x == [ ]) (lib.attrNames disko-config.content)); + in + makeTest' { + name = "disko"; - nodes.machine = - { config, pkgs, modulesPath, ... }: + nodes.machine = + { config, pkgs, modulesPath, ... }: - { - imports = [ - (modulesPath + "/profiles/installation-device.nix") - (modulesPath + "/profiles/base.nix") - ]; + { + imports = [ + (modulesPath + "/profiles/installation-device.nix") + (modulesPath + "/profiles/base.nix") + ]; - # speed-up eval - documentation.enable = false; + # speed-up eval + documentation.enable = false; - virtualisation.emptyDiskImages = builtins.genList (_: 512) num-disks; - } // extraConfig; + virtualisation.emptyDiskImages = builtins.genList (_: 512) num-disks; + } // extraConfig; - testScript = '' - machine.succeed("echo 'secret' > /tmp/secret.key"); - machine.succeed("${tsp-create}"); - machine.succeed("${tsp-mount}"); - machine.succeed("${tsp-mount}"); # verify that the command is idempotent - ${extraTestScript} - ''; - }; + testScript = '' + machine.succeed("echo 'secret' > /tmp/secret.key"); + machine.succeed("${tsp-create}"); + machine.succeed("${tsp-mount}"); + machine.succeed("${tsp-mount}"); # verify that the command is idempotent + ${extraTestScript} + ''; + }; } diff --git a/tests/luks-lvm.nix b/tests/luks-lvm.nix index 305bff1..f578c6f 100644 --- a/tests/luks-lvm.nix +++ b/tests/luks-lvm.nix @@ -1,5 +1,5 @@ -{ pkgs ? (import {}) -, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest +{ pkgs ? (import { }) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix { }).makeDiskoTest }: makeDiskoTest { disko-config = import ../example/luks-lvm.nix; diff --git a/tests/lvm-raid.nix b/tests/lvm-raid.nix index d7c4096..6c865c6 100644 --- a/tests/lvm-raid.nix +++ b/tests/lvm-raid.nix @@ -1,5 +1,5 @@ -{ pkgs ? (import {}) -, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest +{ pkgs ? (import { }) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix { }).makeDiskoTest }: makeDiskoTest { disko-config = import ../example/lvm-raid.nix; diff --git a/tests/mdadm.nix b/tests/mdadm.nix index 72f2faf..c9a2162 100644 --- a/tests/mdadm.nix +++ b/tests/mdadm.nix @@ -1,5 +1,5 @@ -{ pkgs ? (import {}) -, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest +{ pkgs ? (import { }) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix { }).makeDiskoTest }: makeDiskoTest { disko-config = import ../example/mdadm.nix; diff --git a/tests/zfs.nix b/tests/zfs.nix index 3c8216c..9e5e746 100644 --- a/tests/zfs.nix +++ b/tests/zfs.nix @@ -1,5 +1,5 @@ -{ pkgs ? (import {}) -, makeDiskoTest ? (pkgs.callPackage ./lib.nix {}).makeDiskoTest +{ pkgs ? (import { }) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix { }).makeDiskoTest }: makeDiskoTest { disko-config = import ../example/zfs.nix; -- cgit v1.2.3 From 05a90d4227dd14ab08fa3982f320ec771e5626db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 26 Aug 2022 08:49:46 +0200 Subject: tests: use mountpoint program to check for mountpoints --- tests/luks-lvm.nix | 2 +- tests/lvm-raid.nix | 2 +- tests/mdadm.nix | 2 +- tests/zfs.nix | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/luks-lvm.nix b/tests/luks-lvm.nix index f578c6f..d59f3f4 100644 --- a/tests/luks-lvm.nix +++ b/tests/luks-lvm.nix @@ -5,6 +5,6 @@ makeDiskoTest { disko-config = import ../example/luks-lvm.nix; extraTestScript = '' machine.succeed("cryptsetup isLuks /dev/vdb2"); - machine.succeed("grep -qs '/mnt/home' /proc/mounts"); + machine.succeed("mountpoint /mnt/home"); ''; } diff --git a/tests/lvm-raid.nix b/tests/lvm-raid.nix index 6c865c6..102dcd7 100644 --- a/tests/lvm-raid.nix +++ b/tests/lvm-raid.nix @@ -4,7 +4,7 @@ makeDiskoTest { disko-config = import ../example/lvm-raid.nix; extraTestScript = '' - machine.succeed("grep -qs '/mnt/home' /proc/mounts"); + machine.succeed("mountpoint /mnt/home"); ''; extraConfig = { boot.kernelModules = [ "dm-raid" "dm-mirror" ]; diff --git a/tests/mdadm.nix b/tests/mdadm.nix index c9a2162..bd57a00 100644 --- a/tests/mdadm.nix +++ b/tests/mdadm.nix @@ -5,6 +5,6 @@ makeDiskoTest { disko-config = import ../example/mdadm.nix; extraTestScript = '' machine.succeed("test -b /dev/md/raid1"); - machine.succeed("grep -qs '/mnt/raid' /proc/mounts"); + machine.succeed("mountpoint /mnt/raid"); ''; } diff --git a/tests/zfs.nix b/tests/zfs.nix index 9e5e746..e0c8fab 100644 --- a/tests/zfs.nix +++ b/tests/zfs.nix @@ -5,6 +5,6 @@ makeDiskoTest { disko-config = import ../example/zfs.nix; extraTestScript = '' machine.succeed("test -b /dev/zvol/zroot/zfs_testvolume"); - machine.succeed("grep -qs '/mnt/ext4onzfs' /proc/mounts"); + machine.succeed("mountpoint /mnt/ext4onzfs"); ''; } -- cgit v1.2.3 From 57b7c5506a64e169370f291bffa75d2888027ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 26 Aug 2022 09:07:24 +0200 Subject: also test zfs filesystem options --- tests/zfs.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tests') diff --git a/tests/zfs.nix b/tests/zfs.nix index e0c8fab..ebc6b04 100644 --- a/tests/zfs.nix +++ b/tests/zfs.nix @@ -5,6 +5,23 @@ makeDiskoTest { disko-config = import ../example/zfs.nix; extraTestScript = '' machine.succeed("test -b /dev/zvol/zroot/zfs_testvolume"); + + def assert_property(ds, property, expected_value): + out = machine.succeed(f"zfs get -H {property} {ds} -o value").rstrip() + assert ( + out == expected_value + ), f"Expected {property}={expected_value} on {ds}, got: {out}" + + assert_property("zroot", "compression", "lz4") + assert_property("zroot/zfs_fs", "compression", "lz4") + assert_property("zroot", "com.sun:auto-snapshot", "false") + assert_property("zroot/zfs_fs", "com.sun:auto-snapshot", "true") + assert_property("zroot/zfs_testvolume", "volsize", "10M") + + # FIXME: we cannot mount rootfs yet + #machine.succeed("mountpoint /mnt"); + machine.succeed("mountpoint /mnt/zfs_fs"); + machine.succeed("mountpoint /mnt/zfs_legacy_fs"); machine.succeed("mountpoint /mnt/ext4onzfs"); ''; } -- cgit v1.2.3 From 722dde361ca51864fd9b3b6b9a78875e436fbc24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 26 Aug 2022 10:28:07 +0200 Subject: zfs: support for root dataset mountpoint and mountpoint=none --- tests/zfs.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/zfs.nix b/tests/zfs.nix index ebc6b04..5940c4d 100644 --- a/tests/zfs.nix +++ b/tests/zfs.nix @@ -17,9 +17,9 @@ makeDiskoTest { assert_property("zroot", "com.sun:auto-snapshot", "false") assert_property("zroot/zfs_fs", "com.sun:auto-snapshot", "true") assert_property("zroot/zfs_testvolume", "volsize", "10M") + assert_property("zroot/zfs_unmounted_fs", "mountpoint", "none") - # FIXME: we cannot mount rootfs yet - #machine.succeed("mountpoint /mnt"); + machine.succeed("mountpoint /mnt"); machine.succeed("mountpoint /mnt/zfs_fs"); machine.succeed("mountpoint /mnt/zfs_legacy_fs"); machine.succeed("mountpoint /mnt/ext4onzfs"); -- cgit v1.2.3 From 9bb4aec9640cbc30e241c267158e506278862b5e Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 26 Aug 2022 12:50:52 +0200 Subject: support zfs over legacy fs --- tests/zfs-over-legacy.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/zfs-over-legacy.nix (limited to 'tests') diff --git a/tests/zfs-over-legacy.nix b/tests/zfs-over-legacy.nix new file mode 100644 index 0000000..13f86a9 --- /dev/null +++ b/tests/zfs-over-legacy.nix @@ -0,0 +1,12 @@ +{ pkgs ? (import { }) +, makeDiskoTest ? (pkgs.callPackage ./lib.nix { }).makeDiskoTest +}: +makeDiskoTest { + disko-config = import ../example/zfs-over-legacy.nix; + extraTestScript = '' + machine.succeed("test -e /mnt/zfs_fs"); + machine.succeed("mountpoint /mnt"); + machine.succeed("mountpoint /mnt/zfs_fs"); + ''; +} + -- cgit v1.2.3