diff options
Diffstat (limited to 'nixos/tests/haproxy.nix')
-rw-r--r-- | nixos/tests/haproxy.nix | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/nixos/tests/haproxy.nix b/nixos/tests/haproxy.nix new file mode 100644 index 00000000000..b6ff4102fe6 --- /dev/null +++ b/nixos/tests/haproxy.nix @@ -0,0 +1,54 @@ +import ./make-test-python.nix ({ pkgs, ...}: { + name = "haproxy"; + nodes = { + machine = { ... }: { + imports = [ ../modules/profiles/minimal.nix ]; + services.haproxy = { + enable = true; + config = '' + defaults + timeout connect 10s + + backend http_server + mode http + server httpd [::1]:8000 + + frontend http + bind *:80 + mode http + http-request use-service prometheus-exporter if { path /metrics } + use_backend http_server + ''; + }; + services.httpd = { + enable = true; + virtualHosts.localhost = { + documentRoot = pkgs.writeTextDir "index.txt" "We are all good!"; + adminAddr = "notme@yourhost.local"; + listen = [{ + ip = "::1"; + port = 8000; + }]; + }; + }; + }; + }; + testScript = '' + start_all() + machine.wait_for_unit("multi-user.target") + machine.wait_for_unit("haproxy.service") + machine.wait_for_unit("httpd.service") + assert "We are all good!" in machine.succeed("curl -fk http://localhost:80/index.txt") + assert "haproxy_process_pool_allocated_bytes" in machine.succeed( + "curl -fk http://localhost:80/metrics" + ) + + with subtest("reload"): + machine.succeed("systemctl reload haproxy") + # wait some time to ensure the following request hits the reloaded haproxy + machine.sleep(5) + assert "We are all good!" in machine.succeed( + "curl -fk http://localhost:80/index.txt" + ) + ''; +}) |