at 23.05-pre 2.2 kB view raw
1import ./make-test-python.nix ({ pkgs, ... } : 2 3let 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 53in { 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})