From 6ce61209e477cc26f8cee4cebbe6600624fa8760 Mon Sep 17 00:00:00 2001 From: Rvfg Date: Fri, 9 Jan 2026 16:57:01 +0800 Subject: [PATCH] nixos/tests/containers-physical_interfaces: add autoStart test --- .../tests/containers-physical_interfaces.nix | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/nixos/tests/containers-physical_interfaces.nix b/nixos/tests/containers-physical_interfaces.nix index a0be80df7852..0cc36a1673c3 100644 --- a/nixos/tests/containers-physical_interfaces.nix +++ b/nixos/tests/containers-physical_interfaces.nix @@ -25,6 +25,28 @@ }; }; }; + autoStart = + { ... }: + { + virtualisation.vlans = [ 1 ]; + + networking.useNetworkd = true; + + systemd.network.netdevs."20-dummy-test".netdevConfig = { + Name = "dummy-test"; + Kind = "dummy"; + }; + + containers.autoStart = { + autoStart = true; + privateNetwork = true; + interfaces = [ "dummy-test" ]; + + config = { + networking.firewall.enable = false; + }; + }; + }; bridged = { ... }: { @@ -117,6 +139,16 @@ # that the device is present in the container. server.succeed("nixos-container run server -- ip a show dev eth1 >&2") + with subtest("Simple dummy interface is up, with autoStart enabled"): + autoStart.wait_for_unit("container@autoStart") + + # Check if any dependency of container@autoStart.service timed out. + # If a non-existing .device dependency is set in Wants, systemd will + # wait until that unit times out, resulting a delay of the container. + autoStart.fail("journalctl _PID=1 | grep sys-subsystem-net-devices | grep 'timed out'") + + autoStart.succeed("nixos-container run autoStart -- ip a show dev dummy-test >&2") + with subtest("Physical device in bridge in container can ping server"): bridged.wait_for_unit("default.target") bridged.succeed("nixos-container start bridged")