62 lines
1.8 KiB
Nix
62 lines
1.8 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')
|
|
'';
|
|
}
|
|
)
|