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