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