nixosTests.kea: migrate to nspawn

Fix a robustness issue when curl'ig the Prometheus Exporter, where grep
exiting early caused curl to throw SIGPIPE.
This commit is contained in:
Martin Weinelt
2026-06-15 01:38:15 +02:00
parent 944882ea94
commit fec2f10b70
+19 -12
View File
@@ -6,7 +6,6 @@
# address.
{
pkgs,
lib,
...
}:
@@ -15,7 +14,7 @@
name = "kea";
nodes = {
containers = {
router =
{ config, pkgs, ... }:
{
@@ -26,6 +25,7 @@
firewall.allowedUDPPorts = [ 67 ];
};
services.resolved.enable = false;
systemd.network = {
enable = true;
networks = {
@@ -141,6 +141,7 @@
firewall.allowedUDPPorts = [ 53 ];
};
services.resolved.enable = false;
systemd.network = {
enable = true;
networks = {
@@ -153,8 +154,6 @@
};
};
services.resolved.enable = false;
# Set up an authoritative nameserver, serving the `lan.nixos.test`
# zone and configure an ACL that allows dynamic updates from
# the router's ip address.
@@ -213,6 +212,7 @@
{
virtualisation.vlans = [ 1 ];
systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug";
services.resolved.enable = false;
networking = {
useNetworkd = true;
useDHCP = false;
@@ -222,16 +222,23 @@
};
};
testScript =
{ ... }:
# python
''
start_all()
router.wait_for_unit("kea-dhcp4-server.service")
client.systemctl("start systemd-networkd-wait-online.service")
client.wait_for_unit("systemd-networkd-wait-online.service")
client.wait_until_succeeds("ping -c 5 10.0.0.1")
router.wait_until_succeeds("ping -c 5 10.0.0.3")
nameserver.wait_until_succeeds("kdig +short client.lan.nixos.test @10.0.0.2 | grep -q 10.0.0.3")
router.log(router.execute("curl 127.0.0.1:9547")[1])
router.succeed("curl --no-buffer 127.0.0.1:9547 | grep -qE '^kea_dhcp4_addresses_assigned_total.*1.0$'")
with subtest("DHCPv4"):
client.systemctl("start systemd-networkd-wait-online.service")
client.wait_for_unit("systemd-networkd-wait-online.service")
client.wait_until_succeeds("ping -c 5 10.0.0.1")
router.wait_until_succeeds("ping -c 5 10.0.0.3")
with subtest("DDNS"):
nameserver.wait_until_succeeds("kdig +short client.lan.nixos.test @10.0.0.2 | grep -q 10.0.0.3")
with subtest("Prometheus Exporter"):
router.log(router.execute("curl 127.0.0.1:9547")[1])
router.succeed("curl --silent 127.0.0.1:9547 | grep -qE '^kea_dhcp4_addresses_assigned_total.*1.0$'")
'';
}