55 lines
1.6 KiB
Nix
55 lines
1.6 KiB
Nix
|
import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
||
|
name = "envoy";
|
||
|
meta = with pkgs.lib.maintainers; {
|
||
|
maintainers = [ cameronnemo ];
|
||
|
};
|
||
|
|
||
|
nodes.machine = { pkgs, ... }: {
|
||
|
services.envoy.enable = true;
|
||
|
services.envoy.settings = {
|
||
|
admin = {
|
||
|
access_log_path = "/dev/null";
|
||
|
address = {
|
||
|
socket_address = {
|
||
|
protocol = "TCP";
|
||
|
address = "127.0.0.1";
|
||
|
port_value = 80;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
static_resources = {
|
||
|
listeners = [];
|
||
|
clusters = [];
|
||
|
};
|
||
|
};
|
||
|
specialisation = {
|
||
|
withoutConfigValidation.configuration = { ... }: {
|
||
|
services.envoy = {
|
||
|
requireValidConfig = false;
|
||
|
settings.admin.access_log_path = lib.mkForce "/var/log/envoy/access.log";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
testScript = { nodes, ... }:
|
||
|
let
|
||
|
specialisations = "${nodes.machine.system.build.toplevel}/specialisation";
|
||
|
in
|
||
|
''
|
||
|
machine.start()
|
||
|
|
||
|
with subtest("envoy.service starts and responds with ready"):
|
||
|
machine.wait_for_unit("envoy.service")
|
||
|
machine.wait_for_open_port(80)
|
||
|
machine.wait_until_succeeds("curl -fsS localhost:80/ready")
|
||
|
|
||
|
with subtest("envoy.service works with config path not available at eval time"):
|
||
|
machine.succeed('${specialisations}/withoutConfigValidation/bin/switch-to-configuration test')
|
||
|
machine.wait_for_unit("envoy.service")
|
||
|
machine.wait_for_open_port(80)
|
||
|
machine.wait_until_succeeds("curl -fsS localhost:80/ready")
|
||
|
machine.succeed('test -f /var/log/envoy/access.log')
|
||
|
'';
|
||
|
})
|