python312Packages.homematicip: 1.1.2 -> 1.1.3 (#356780)
[NixPkgs.git] / nixos / tests / moosefs.nix
blob0dc08748b82817399f1db3fdf419e9a9aa97cd34
1 import ./make-test-python.nix ({ pkgs, ... } :
3 let
4   master = { pkgs, ... } : {
5     # data base is stored in memory
6     # server crashes with default memory size
7     virtualisation.memorySize = 1024;
9     services.moosefs.master = {
10       enable = true;
11       openFirewall = true;
12       exports = [
13         "* / rw,alldirs,admin,maproot=0:0"
14         "* . rw"
15       ];
16     };
17   };
19   chunkserver = { pkgs, ... } : {
20     virtualisation.emptyDiskImages = [ 4096 ];
21     boot.initrd.postDeviceCommands = ''
22       ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb
23     '';
25     fileSystems = pkgs.lib.mkVMOverride {
26       "/data" = {
27         device = "/dev/disk/by-label/data";
28         fsType = "ext4";
29       };
30     };
32     services.moosefs = {
33       masterHost = "master";
34       chunkserver = {
35         openFirewall = true;
36         enable = true;
37         hdds = [ "~/data" ];
38       };
39     };
40   };
42   metalogger = { pkgs, ... } : {
43     services.moosefs = {
44       masterHost = "master";
45       metalogger.enable = true;
46     };
47   };
49   client = { pkgs, ... } : {
50     services.moosefs.client.enable = true;
51   };
53 in {
54   name = "moosefs";
56   nodes= {
57     inherit master;
58     inherit metalogger;
59     chunkserver1 = chunkserver;
60     chunkserver2 = chunkserver;
61     client1 = client;
62     client2 = client;
63   };
65   testScript = ''
66     # prepare master server
67     master.start()
68     master.wait_for_unit("multi-user.target")
69     master.succeed("mfsmaster-init")
70     master.succeed("systemctl restart mfs-master")
71     master.wait_for_unit("mfs-master.service")
73     metalogger.wait_for_unit("mfs-metalogger.service")
75     for chunkserver in [chunkserver1, chunkserver2]:
76         chunkserver.wait_for_unit("multi-user.target")
77         chunkserver.succeed("chown moosefs:moosefs /data")
78         chunkserver.succeed("systemctl restart mfs-chunkserver")
79         chunkserver.wait_for_unit("mfs-chunkserver.service")
81     for client in [client1, client2]:
82         client.wait_for_unit("multi-user.target")
83         client.succeed("mkdir /moosefs")
84         client.succeed("mount -t moosefs master:/ /moosefs")
86     client1.succeed("echo test > /moosefs/file")
87     client2.succeed("grep test /moosefs/file")
88   '';