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