summary refs log tree commit diff
path: root/nixos/tests/moosefs.nix
diff options
context:
space:
mode:
authorMarkus Kowalewski <markus.kowalewski@gmail.com>2021-10-06 21:51:07 +0200
committerMarkus Kowalewski <markus.kowalewski@gmail.com>2022-02-03 12:31:36 +0100
commitb74dc1a2308feeedb93e56c6f33e45d5b9812c69 (patch)
treeb85d9aa385862712f96be6c2513b22311a3a7cd4 /nixos/tests/moosefs.nix
parentb302bda010aada3452e21c6b0ae5284605fa3734 (diff)
downloadnixpkgs-b74dc1a2308feeedb93e56c6f33e45d5b9812c69.tar
nixpkgs-b74dc1a2308feeedb93e56c6f33e45d5b9812c69.tar.gz
nixpkgs-b74dc1a2308feeedb93e56c6f33e45d5b9812c69.tar.bz2
nixpkgs-b74dc1a2308feeedb93e56c6f33e45d5b9812c69.tar.lz
nixpkgs-b74dc1a2308feeedb93e56c6f33e45d5b9812c69.tar.xz
nixpkgs-b74dc1a2308feeedb93e56c6f33e45d5b9812c69.tar.zst
nixpkgs-b74dc1a2308feeedb93e56c6f33e45d5b9812c69.zip
nixos/tests: add moosefs test
Diffstat (limited to 'nixos/tests/moosefs.nix')
-rw-r--r--nixos/tests/moosefs.nix89
1 files changed, 89 insertions, 0 deletions
diff --git a/nixos/tests/moosefs.nix b/nixos/tests/moosefs.nix
new file mode 100644
index 00000000000..0dc08748b82
--- /dev/null
+++ b/nixos/tests/moosefs.nix
@@ -0,0 +1,89 @@
+import ./make-test-python.nix ({ pkgs, ... } :
+
+let
+  master = { pkgs, ... } : {
+    # data base is stored in memory
+    # server crashes with default memory size
+    virtualisation.memorySize = 1024;
+
+    services.moosefs.master = {
+      enable = true;
+      openFirewall = true;
+      exports = [
+        "* / rw,alldirs,admin,maproot=0:0"
+        "* . rw"
+      ];
+    };
+  };
+
+  chunkserver = { pkgs, ... } : {
+    virtualisation.emptyDiskImages = [ 4096 ];
+    boot.initrd.postDeviceCommands = ''
+      ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb
+    '';
+
+    fileSystems = pkgs.lib.mkVMOverride {
+      "/data" = {
+        device = "/dev/disk/by-label/data";
+        fsType = "ext4";
+      };
+    };
+
+    services.moosefs = {
+      masterHost = "master";
+      chunkserver = {
+        openFirewall = true;
+        enable = true;
+        hdds = [ "~/data" ];
+      };
+    };
+  };
+
+  metalogger = { pkgs, ... } : {
+    services.moosefs = {
+      masterHost = "master";
+      metalogger.enable = true;
+    };
+  };
+
+  client = { pkgs, ... } : {
+    services.moosefs.client.enable = true;
+  };
+
+in {
+  name = "moosefs";
+
+  nodes= {
+    inherit master;
+    inherit metalogger;
+    chunkserver1 = chunkserver;
+    chunkserver2 = chunkserver;
+    client1 = client;
+    client2 = client;
+  };
+
+  testScript = ''
+    # prepare master server
+    master.start()
+    master.wait_for_unit("multi-user.target")
+    master.succeed("mfsmaster-init")
+    master.succeed("systemctl restart mfs-master")
+    master.wait_for_unit("mfs-master.service")
+
+    metalogger.wait_for_unit("mfs-metalogger.service")
+
+    for chunkserver in [chunkserver1, chunkserver2]:
+        chunkserver.wait_for_unit("multi-user.target")
+        chunkserver.succeed("chown moosefs:moosefs /data")
+        chunkserver.succeed("systemctl restart mfs-chunkserver")
+        chunkserver.wait_for_unit("mfs-chunkserver.service")
+
+    for client in [client1, client2]:
+        client.wait_for_unit("multi-user.target")
+        client.succeed("mkdir /moosefs")
+        client.succeed("mount -t moosefs master:/ /moosefs")
+
+    client1.succeed("echo test > /moosefs/file")
+    client2.succeed("grep test /moosefs/file")
+  '';
+})