at 18.03-beta 3.2 kB view raw
1import ./make-test.nix ({ pkgs, ... } : 2 3let 4 connAuthFile="beegfs/auth-def.key"; 5 6 client = { config, pkgs, lib, ... } : { 7 networking.firewall.enable = false; 8 services.beegfsEnable = true; 9 services.beegfs.default = { 10 mgmtdHost = "mgmt"; 11 connAuthFile = "/etc/${connAuthFile}"; 12 client = { 13 mount = false; 14 enable = true; 15 }; 16 }; 17 18 fileSystems = pkgs.lib.mkVMOverride # FIXME: this should be creatd by the module 19 [ { mountPoint = "/beegfs"; 20 device = "default"; 21 fsType = "beegfs"; 22 options = [ "cfgFile=/etc/beegfs/client-default.conf" "_netdev" ]; 23 } 24 ]; 25 26 environment.etc."${connAuthFile}" = { 27 enable = true; 28 text = "ThisIsALousySecret"; 29 mode = "0600"; 30 }; 31 }; 32 33 34 server = service : { config, pkgs, lib, ... } : { 35 networking.firewall.enable = false; 36 boot.initrd.postDeviceCommands = '' 37 ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb 38 ''; 39 40 virtualisation.emptyDiskImages = [ 4096 ]; 41 42 fileSystems = pkgs.lib.mkVMOverride 43 [ { mountPoint = "/data"; 44 device = "/dev/disk/by-label/data"; 45 fsType = "ext4"; 46 } 47 ]; 48 49 environment.systemPackages = with pkgs; [ beegfs ]; 50 environment.etc."${connAuthFile}" = { 51 enable = true; 52 text = "ThisIsALousySecret"; 53 mode = "0600"; 54 }; 55 56 services.beegfsEnable = true; 57 services.beegfs.default = { 58 mgmtdHost = "mgmt"; 59 connAuthFile = "/etc/${connAuthFile}"; 60 "${service}" = { 61 enable = true; 62 storeDir = "/data"; 63 }; 64 }; 65 }; 66 67in 68{ 69 name = "beegfs"; 70 71 nodes = { 72 meta = server "meta"; 73 mgmt = server "mgmtd"; 74 storage1 = server "storage"; 75 storage2 = server "storage"; 76 client1 = client; 77 client2 = client; 78 }; 79 80 testScript = '' 81 # Initalize the data directories 82 $mgmt->waitForUnit("default.target"); 83 $mgmt->succeed("beegfs-setup-mgmtd -C -f -p /data"); 84 $mgmt->succeed("systemctl start beegfs-mgmtd-default"); 85 86 $meta->waitForUnit("default.target"); 87 $meta->succeed("beegfs-setup-meta -C -f -s 1 -p /data"); 88 $meta->succeed("systemctl start beegfs-meta-default"); 89 90 $storage1->waitForUnit("default.target"); 91 $storage1->succeed("beegfs-setup-storage -C -f -s 1 -i 1 -p /data"); 92 $storage1->succeed("systemctl start beegfs-storage-default"); 93 94 $storage2->waitForUnit("default.target"); 95 $storage2->succeed("beegfs-setup-storage -C -f -s 2 -i 2 -p /data"); 96 $storage2->succeed("systemctl start beegfs-storage-default"); 97 98 # 99 100 # Basic test 101 $client1->waitForUnit("beegfs.mount"); 102 $client1->succeed("beegfs-check-servers-default"); 103 $client1->succeed("echo test > /beegfs/test"); 104 $client2->waitForUnit("beegfs.mount"); 105 $client2->succeed("test -e /beegfs/test"); 106 $client2->succeed("cat /beegfs/test | grep test"); 107 108 # test raid0/stripping 109 $client1->succeed("dd if=/dev/urandom bs=1M count=10 of=/beegfs/striped"); 110 $client2->succeed("cat /beegfs/striped > /dev/null"); 111 112 # check if fs is still healthy 113 $client1->succeed("beegfs-fsck-default --checkfs"); 114 ''; 115})