at 23.11-pre 1.7 kB view raw
1import ./make-test-python.nix ({pkgs, lib, ...}: 2 3let 4 client = { pkgs, ... } : { 5 environment.systemPackages = [ pkgs.glusterfs ]; 6 virtualisation.fileSystems = 7 { "/gluster" = 8 { device = "server1:/gv0"; 9 fsType = "glusterfs"; 10 }; 11 }; 12 }; 13 14 server = { pkgs, ... } : { 15 networking.firewall.enable = false; 16 services.glusterfs.enable = true; 17 18 # create a mount point for the volume 19 boot.initrd.postDeviceCommands = '' 20 ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb 21 ''; 22 23 virtualisation.emptyDiskImages = [ 1024 ]; 24 25 virtualisation.fileSystems = 26 { "/data" = 27 { device = "/dev/disk/by-label/data"; 28 fsType = "ext4"; 29 }; 30 }; 31 }; 32in { 33 name = "glusterfs"; 34 35 nodes = { 36 server1 = server; 37 server2 = server; 38 client1 = client; 39 client2 = client; 40 }; 41 42 testScript = '' 43 server1.wait_for_unit("glusterd.service") 44 server2.wait_for_unit("glusterd.service") 45 46 server1.wait_until_succeeds("gluster peer status") 47 server2.wait_until_succeeds("gluster peer status") 48 49 # establish initial contact 50 server1.succeed("gluster peer probe server2") 51 server1.succeed("gluster peer probe server1") 52 53 server1.succeed("gluster peer status | grep Connected") 54 55 # create volumes 56 server1.succeed("mkdir -p /data/vg0") 57 server2.succeed("mkdir -p /data/vg0") 58 server1.succeed("gluster volume create gv0 server1:/data/vg0 server2:/data/vg0") 59 server1.succeed("gluster volume start gv0") 60 61 # test clients 62 client1.wait_for_unit("gluster.mount") 63 client2.wait_for_unit("gluster.mount") 64 65 client1.succeed("echo test > /gluster/file1") 66 client2.succeed("grep test /gluster/file1") 67 ''; 68})