tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
nixos/tests: add moosefs test
Markus Kowalewski
4 years ago
b74dc1a2
b302bda0
+90
2 changed files
expand all
collapse all
unified
split
nixos
tests
all-tests.nix
moosefs.nix
+1
nixos/tests/all-tests.nix
···
303
303
moodle = handleTest ./moodle.nix {};
304
304
morty = handleTest ./morty.nix {};
305
305
mosquitto = handleTest ./mosquitto.nix {};
306
306
+
moosefs = handleTest ./moosefs.nix {};
306
307
mpd = handleTest ./mpd.nix {};
307
308
mpv = handleTest ./mpv.nix {};
308
309
mumble = handleTest ./mumble.nix {};
+89
nixos/tests/moosefs.nix
···
1
1
+
import ./make-test-python.nix ({ pkgs, ... } :
2
2
+
3
3
+
let
4
4
+
master = { pkgs, ... } : {
5
5
+
# data base is stored in memory
6
6
+
# server crashes with default memory size
7
7
+
virtualisation.memorySize = 1024;
8
8
+
9
9
+
services.moosefs.master = {
10
10
+
enable = true;
11
11
+
openFirewall = true;
12
12
+
exports = [
13
13
+
"* / rw,alldirs,admin,maproot=0:0"
14
14
+
"* . rw"
15
15
+
];
16
16
+
};
17
17
+
};
18
18
+
19
19
+
chunkserver = { pkgs, ... } : {
20
20
+
virtualisation.emptyDiskImages = [ 4096 ];
21
21
+
boot.initrd.postDeviceCommands = ''
22
22
+
${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb
23
23
+
'';
24
24
+
25
25
+
fileSystems = pkgs.lib.mkVMOverride {
26
26
+
"/data" = {
27
27
+
device = "/dev/disk/by-label/data";
28
28
+
fsType = "ext4";
29
29
+
};
30
30
+
};
31
31
+
32
32
+
services.moosefs = {
33
33
+
masterHost = "master";
34
34
+
chunkserver = {
35
35
+
openFirewall = true;
36
36
+
enable = true;
37
37
+
hdds = [ "~/data" ];
38
38
+
};
39
39
+
};
40
40
+
};
41
41
+
42
42
+
metalogger = { pkgs, ... } : {
43
43
+
services.moosefs = {
44
44
+
masterHost = "master";
45
45
+
metalogger.enable = true;
46
46
+
};
47
47
+
};
48
48
+
49
49
+
client = { pkgs, ... } : {
50
50
+
services.moosefs.client.enable = true;
51
51
+
};
52
52
+
53
53
+
in {
54
54
+
name = "moosefs";
55
55
+
56
56
+
nodes= {
57
57
+
inherit master;
58
58
+
inherit metalogger;
59
59
+
chunkserver1 = chunkserver;
60
60
+
chunkserver2 = chunkserver;
61
61
+
client1 = client;
62
62
+
client2 = client;
63
63
+
};
64
64
+
65
65
+
testScript = ''
66
66
+
# prepare master server
67
67
+
master.start()
68
68
+
master.wait_for_unit("multi-user.target")
69
69
+
master.succeed("mfsmaster-init")
70
70
+
master.succeed("systemctl restart mfs-master")
71
71
+
master.wait_for_unit("mfs-master.service")
72
72
+
73
73
+
metalogger.wait_for_unit("mfs-metalogger.service")
74
74
+
75
75
+
for chunkserver in [chunkserver1, chunkserver2]:
76
76
+
chunkserver.wait_for_unit("multi-user.target")
77
77
+
chunkserver.succeed("chown moosefs:moosefs /data")
78
78
+
chunkserver.succeed("systemctl restart mfs-chunkserver")
79
79
+
chunkserver.wait_for_unit("mfs-chunkserver.service")
80
80
+
81
81
+
for client in [client1, client2]:
82
82
+
client.wait_for_unit("multi-user.target")
83
83
+
client.succeed("mkdir /moosefs")
84
84
+
client.succeed("mount -t moosefs master:/ /moosefs")
85
85
+
86
86
+
client1.succeed("echo test > /moosefs/file")
87
87
+
client2.succeed("grep test /moosefs/file")
88
88
+
'';
89
89
+
})