lol

nixos/tests: add moosefs test

+90
+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 + 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 + import ./make-test-python.nix ({ pkgs, ... } : 2 + 3 + let 4 + master = { pkgs, ... } : { 5 + # data base is stored in memory 6 + # server crashes with default memory size 7 + virtualisation.memorySize = 1024; 8 + 9 + services.moosefs.master = { 10 + enable = true; 11 + openFirewall = true; 12 + exports = [ 13 + "* / rw,alldirs,admin,maproot=0:0" 14 + "* . rw" 15 + ]; 16 + }; 17 + }; 18 + 19 + chunkserver = { pkgs, ... } : { 20 + virtualisation.emptyDiskImages = [ 4096 ]; 21 + boot.initrd.postDeviceCommands = '' 22 + ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb 23 + ''; 24 + 25 + fileSystems = pkgs.lib.mkVMOverride { 26 + "/data" = { 27 + device = "/dev/disk/by-label/data"; 28 + fsType = "ext4"; 29 + }; 30 + }; 31 + 32 + services.moosefs = { 33 + masterHost = "master"; 34 + chunkserver = { 35 + openFirewall = true; 36 + enable = true; 37 + hdds = [ "~/data" ]; 38 + }; 39 + }; 40 + }; 41 + 42 + metalogger = { pkgs, ... } : { 43 + services.moosefs = { 44 + masterHost = "master"; 45 + metalogger.enable = true; 46 + }; 47 + }; 48 + 49 + client = { pkgs, ... } : { 50 + services.moosefs.client.enable = true; 51 + }; 52 + 53 + in { 54 + name = "moosefs"; 55 + 56 + nodes= { 57 + inherit master; 58 + inherit metalogger; 59 + chunkserver1 = chunkserver; 60 + chunkserver2 = chunkserver; 61 + client1 = client; 62 + client2 = client; 63 + }; 64 + 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") 72 + 73 + metalogger.wait_for_unit("mfs-metalogger.service") 74 + 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") 80 + 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") 85 + 86 + client1.succeed("echo test > /moosefs/file") 87 + client2.succeed("grep test /moosefs/file") 88 + ''; 89 + })