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') ''; } )