diff options
Diffstat (limited to 'nixos/tests/check-filesystems.nix')
-rw-r--r-- | nixos/tests/check-filesystems.nix | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/nixos/tests/check-filesystems.nix b/nixos/tests/check-filesystems.nix new file mode 100644 index 000000000000..09401f9a3f44 --- /dev/null +++ b/nixos/tests/check-filesystems.nix @@ -0,0 +1,80 @@ +{ nixos ? ./.. +, nixpkgs ? /etc/nixos/nixpkgs +, system ? builtins.currentSystem +}: + +with import ../lib/build-vms.nix { inherit nixos nixpkgs system; }; + +rec { + nodes = { + share = {pkgs, config, ...}: { + services.nfs.server.enable = true; + services.nfs.server.exports = '' + /repos1 192.168.1.0/255.255.255.0(rw,no_root_squash) + /repos2 192.168.1.0/255.255.255.0(rw,no_root_squash) + ''; + services.nfs.server.createMountPoints = true; + + jobs.checkable = { + startOn = [ + config.jobs.nfs_kernel_exports.name + config.jobs.nfs_kernel_nfsd.name + ]; + respawn = true; + }; + }; + + fsCheck = {pkgs, config, ...}: { + fileSystems = + let + repos1 = { + mountPoint = "/repos1"; + autocreate = true; + device = "share:/repos1"; + fsType = "nfs"; + }; + + repos2 = { + mountPoint = "/repos2"; + autocreate = true; + device = "share:/repos2"; + fsType = "nfs"; + }; + in pkgs.lib.mkVMOverride [ + repos1 + repos1 # check remount + repos2 # check after remount + ]; + + jobs.checkable = { + startOn = "stopped ${config.jobs.filesystems.name}"; + respawn = true; + }; + }; + }; + + vms = buildVirtualNetwork { inherit nodes; }; + + test = runTests vms + '' + startAll; + + $share->waitForUnit("checkable"); + $fsCheck->waitForUnit("checkable"); + + # check repos1 + $fsCheck->succeed("test -d /repos1"); + $share->succeed("touch /repos1/test1"); + $fsCheck->succeed("test -e /repos1/test1"); + + # check repos2 (check after remount) + $fsCheck->succeed("test -d /repos2"); + $share->succeed("touch /repos2/test2"); + $fsCheck->succeed("test -e /repos2/test2"); + + # check without network + $share->block(); + $fsCheck->fail("test -e /repos1/test1"); + $fsCheck->fail("test -e /repos2/test2"); + ''; +} |