lol

nixos/tests: add test for custom nomad state directory

+56 -12
+56 -12
nixos/tests/nomad.nix
··· 2 2 { lib, ... }: { 3 3 name = "nomad"; 4 4 nodes = { 5 - server = { pkgs, lib, ... }: { 5 + default_server = { pkgs, lib, ... }: { 6 6 networking = { 7 7 interfaces.eth1.ipv4.addresses = lib.mkOverride 0 [{ 8 8 address = "192.168.1.1"; ··· 30 30 enableDocker = false; 31 31 }; 32 32 }; 33 + 34 + custom_state_dir_server = { pkgs, lib, ... }: { 35 + networking = { 36 + interfaces.eth1.ipv4.addresses = lib.mkOverride 0 [{ 37 + address = "192.168.1.1"; 38 + prefixLength = 16; 39 + }]; 40 + }; 41 + 42 + environment.etc."nomad.custom.json".source = 43 + (pkgs.formats.json { }).generate "nomad.custom.json" { 44 + region = "universe"; 45 + datacenter = "earth"; 46 + }; 47 + 48 + services.nomad = { 49 + enable = true; 50 + dropPrivileges = false; 51 + 52 + settings = { 53 + data_dir = "/nomad/data/dir"; 54 + server = { 55 + enabled = true; 56 + bootstrap_expect = 1; 57 + }; 58 + }; 59 + 60 + extraSettingsPaths = [ "/etc/nomad.custom.json" ]; 61 + enableDocker = false; 62 + }; 63 + 64 + systemd.services.nomad.serviceConfig.ExecStartPre = "${pkgs.writeShellScript "mk_data_dir" '' 65 + set -euxo pipefail 66 + 67 + ${pkgs.coreutils}/bin/mkdir -p /nomad/data/dir 68 + ''}"; 69 + }; 33 70 }; 34 71 35 72 testScript = '' 36 - server.wait_for_unit("nomad.service") 73 + def test_nomad_server(server): 74 + server.wait_for_unit("nomad.service") 37 75 38 - # wait for healthy server 39 - server.wait_until_succeeds( 40 - "[ $(nomad operator raft list-peers | grep true | wc -l) == 1 ]" 41 - ) 76 + # wait for healthy server 77 + server.wait_until_succeeds( 78 + "[ $(nomad operator raft list-peers | grep true | wc -l) == 1 ]" 79 + ) 42 80 43 - # wait for server liveness 44 - server.succeed("[ $(nomad server members | grep -o alive | wc -l) == 1 ]") 81 + # wait for server liveness 82 + server.succeed("[ $(nomad server members | grep -o alive | wc -l) == 1 ]") 83 + 84 + # check the region 85 + server.succeed("nomad server members | grep -o universe") 86 + 87 + # check the datacenter 88 + server.succeed("[ $(nomad server members | grep -o earth | wc -l) == 1 ]") 89 + 45 90 46 - # check the region 47 - server.succeed("nomad server members | grep -o universe") 91 + servers = [default_server, custom_state_dir_server] 48 92 49 - # check the datacenter 50 - server.succeed("[ $(nomad server members | grep -o earth | wc -l) == 1 ]") 93 + for server in servers: 94 + test_nomad_server(server) 51 95 ''; 52 96 } 53 97 )