jetbrains: 2024.1 -> 2024.2.7 (#351041)
[NixPkgs.git] / nixos / tests / nomad.nix
blob51b11a8fef909e94a53adb630b2d40c0c5276760
1 import ./make-test-python.nix (
2   { lib, ... }: {
3     name = "nomad";
4     nodes = {
5       default_server = { pkgs, lib, ... }: {
6         networking = {
7           interfaces.eth1.ipv4.addresses = lib.mkOverride 0 [{
8             address = "192.168.1.1";
9             prefixLength = 16;
10           }];
11         };
13         environment.etc."nomad.custom.json".source =
14           (pkgs.formats.json { }).generate "nomad.custom.json" {
15             region = "universe";
16             datacenter = "earth";
17           };
19         services.nomad = {
20           enable = true;
22           settings = {
23             server = {
24               enabled = true;
25               bootstrap_expect = 1;
26             };
27           };
29           extraSettingsPaths = [ "/etc/nomad.custom.json" ];
30           enableDocker = false;
31         };
32       };
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         };
42         environment.etc."nomad.custom.json".source =
43           (pkgs.formats.json { }).generate "nomad.custom.json" {
44             region = "universe";
45             datacenter = "earth";
46           };
48         services.nomad = {
49           enable = true;
50           dropPrivileges = false;
52           settings = {
53             data_dir = "/nomad/data/dir";
54             server = {
55               enabled = true;
56               bootstrap_expect = 1;
57             };
58           };
60           extraSettingsPaths = [ "/etc/nomad.custom.json" ];
61           enableDocker = false;
62         };
64         systemd.services.nomad.serviceConfig.ExecStartPre = "${pkgs.writeShellScript "mk_data_dir" ''
65           set -euxo pipefail
67           ${pkgs.coreutils}/bin/mkdir -p /nomad/data/dir
68         ''}";
69       };
70     };
72     testScript = ''
73       def test_nomad_server(server):
74           server.wait_for_unit("nomad.service")
76           # wait for healthy server
77           server.wait_until_succeeds(
78               "[ $(nomad operator raft list-peers | grep true | wc -l) == 1 ]"
79           )
81           # wait for server liveness
82           server.succeed("[ $(nomad server members | grep -o alive | wc -l) == 1 ]")
84           # check the region
85           server.succeed("nomad server members | grep -o universe")
87           # check the datacenter
88           server.succeed("[ $(nomad server members | grep -o earth | wc -l) == 1 ]")
91       servers = [default_server, custom_state_dir_server]
93       for server in servers:
94           test_nomad_server(server)
95     '';
96   }