at 23.11-pre 2.4 kB view raw
1import ./make-test-python.nix ({ pkgs, lib, ... }: { 2 name = "systemd-initrd-network"; 3 meta.maintainers = [ lib.maintainers.elvishjerricco ]; 4 5 nodes = let 6 mkFlushTest = flush: script: { ... }: { 7 boot.initrd.systemd.enable = true; 8 boot.initrd.network = { 9 enable = true; 10 flushBeforeStage2 = flush; 11 }; 12 systemd.services.check-flush = { 13 requiredBy = ["multi-user.target"]; 14 before = ["network-pre.target" "multi-user.target"]; 15 unitConfig.DefaultDependencies = false; 16 serviceConfig.Type = "oneshot"; 17 path = [ pkgs.iproute2 pkgs.iputils pkgs.gnugrep ]; 18 inherit script; 19 }; 20 }; 21 in { 22 basic = { ... }: { 23 boot.initrd.network.enable = true; 24 25 boot.initrd.systemd = { 26 enable = true; 27 # Enable network-online to fail the test in case of timeout 28 network.wait-online.timeout = 10; 29 network.wait-online.anyInterface = true; 30 targets.network-online.requiredBy = [ "initrd.target" ]; 31 services.systemd-networkd-wait-online.requiredBy = 32 [ "network-online.target" ]; 33 34 initrdBin = [ pkgs.iproute2 pkgs.iputils pkgs.gnugrep ]; 35 services.check = { 36 requiredBy = [ "initrd.target" ]; 37 before = [ "initrd.target" ]; 38 after = [ "network-online.target" ]; 39 serviceConfig.Type = "oneshot"; 40 path = [ pkgs.iproute2 pkgs.iputils pkgs.gnugrep ]; 41 script = '' 42 ip addr | grep 10.0.2.15 || exit 1 43 ping -c1 10.0.2.2 || exit 1 44 ''; 45 }; 46 }; 47 }; 48 49 doFlush = mkFlushTest true '' 50 if ip addr | grep 10.0.2.15; then 51 echo "Network configuration survived switch-root; flushBeforeStage2 failed" 52 exit 1 53 fi 54 ''; 55 56 dontFlush = mkFlushTest false '' 57 if ! (ip addr | grep 10.0.2.15); then 58 echo "Network configuration didn't survive switch-root" 59 exit 1 60 fi 61 ''; 62 }; 63 64 testScript = '' 65 start_all() 66 basic.wait_for_unit("multi-user.target") 67 doFlush.wait_for_unit("multi-user.target") 68 dontFlush.wait_for_unit("multi-user.target") 69 # Make sure the systemd-network user was set correctly in initrd 70 basic.succeed("[ $(stat -c '%U,%G' /run/systemd/netif/links) = systemd-network,systemd-network ]") 71 basic.succeed("ip addr show >&2") 72 basic.succeed("ip route show >&2") 73 ''; 74})