at 23.05-pre 2.3 kB view raw
1import ./make-test-python.nix ({ ... } : 2 3let 4 server = { pkgs, ... } : { 5 networking.firewall.allowedTCPPorts = [ 3334 ]; 6 boot.initrd.postDeviceCommands = '' 7 ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb 8 ''; 9 10 virtualisation.emptyDiskImages = [ 4096 ]; 11 12 virtualisation.fileSystems = 13 { "/data" = 14 { device = "/dev/disk/by-label/data"; 15 fsType = "ext4"; 16 }; 17 }; 18 19 services.orangefs.server = { 20 enable = true; 21 dataStorageSpace = "/data/storage"; 22 metadataStorageSpace = "/data/meta"; 23 servers = { 24 server1 = "tcp://server1:3334"; 25 server2 = "tcp://server2:3334"; 26 }; 27 }; 28 }; 29 30 client = { lib, ... } : { 31 networking.firewall.enable = true; 32 33 services.orangefs.client = { 34 enable = true; 35 fileSystems = [{ 36 target = "tcp://server1:3334/orangefs"; 37 mountPoint = "/orangefs"; 38 }]; 39 }; 40 }; 41 42in { 43 name = "orangefs"; 44 45 nodes = { 46 server1 = server; 47 server2 = server; 48 49 client1 = client; 50 client2 = client; 51 }; 52 53 testScript = '' 54 # format storage 55 for server in server1, server2: 56 server.start() 57 server.wait_for_unit("multi-user.target") 58 server.succeed("mkdir -p /data/storage /data/meta") 59 server.succeed("chown orangefs:orangefs /data/storage /data/meta") 60 server.succeed("chmod 0770 /data/storage /data/meta") 61 server.succeed( 62 "sudo -g orangefs -u orangefs pvfs2-server -f /etc/orangefs/server.conf" 63 ) 64 65 # start services after storage is formated on all machines 66 for server in server1, server2: 67 server.succeed("systemctl start orangefs-server.service") 68 69 with subtest("clients can reach and mount the FS"): 70 for client in client1, client2: 71 client.start() 72 client.wait_for_unit("orangefs-client.service") 73 # Both servers need to be reachable 74 client.succeed("pvfs2-check-server -h server1 -f orangefs -n tcp -p 3334") 75 client.succeed("pvfs2-check-server -h server2 -f orangefs -n tcp -p 3334") 76 client.wait_for_unit("orangefs.mount") 77 78 with subtest("R/W test between clients"): 79 client1.succeed("echo test > /orangefs/file1") 80 client2.succeed("grep test /orangefs/file1") 81 ''; 82})