2018-11-11 08:41:11 +00:00
|
|
|
{ system ? builtins.currentSystem,
|
|
|
|
config ? {},
|
|
|
|
pkgs ? import ../.. { inherit system config; }
|
|
|
|
}:
|
2018-02-09 18:40:39 +00:00
|
|
|
|
2018-04-29 14:28:33 +01:00
|
|
|
let
|
2019-12-01 02:16:32 +00:00
|
|
|
inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
|
2021-01-28 22:03:02 +00:00
|
|
|
testCombinations = pkgs.lib.cartesianProductOfSets {
|
|
|
|
predictable = [true false];
|
|
|
|
withNetworkd = [true false];
|
|
|
|
};
|
|
|
|
in pkgs.lib.listToAttrs (builtins.map ({ predictable, withNetworkd }: {
|
2018-04-29 14:28:33 +01:00
|
|
|
name = pkgs.lib.optionalString (!predictable) "un" + "predictable"
|
|
|
|
+ pkgs.lib.optionalString withNetworkd "Networkd";
|
|
|
|
value = makeTest {
|
|
|
|
name = "${if predictable then "" else "un"}predictableInterfaceNames${if withNetworkd then "-with-networkd" else ""}";
|
|
|
|
meta = {};
|
|
|
|
|
2022-03-20 23:15:30 +00:00
|
|
|
nodes.machine = { lib, ... }: {
|
2018-04-29 14:28:33 +01:00
|
|
|
networking.usePredictableInterfaceNames = lib.mkForce predictable;
|
|
|
|
networking.useNetworkd = withNetworkd;
|
|
|
|
networking.dhcpcd.enable = !withNetworkd;
|
2019-09-23 15:37:58 +01:00
|
|
|
networking.useDHCP = !withNetworkd;
|
2019-09-22 16:14:47 +01:00
|
|
|
|
|
|
|
# Check if predictable interface names are working in stage-1
|
|
|
|
boot.initrd.postDeviceCommands = ''
|
|
|
|
ip link
|
|
|
|
ip link show eth0 ${if predictable then "&&" else "||"} exit 1
|
|
|
|
'';
|
2018-04-29 14:28:33 +01:00
|
|
|
};
|
2018-02-09 18:40:39 +00:00
|
|
|
|
2018-04-29 14:28:33 +01:00
|
|
|
testScript = ''
|
2019-12-01 02:16:32 +00:00
|
|
|
print(machine.succeed("ip link"))
|
|
|
|
machine.${if predictable then "fail" else "succeed"}("ip link show eth0")
|
2018-04-29 14:28:33 +01:00
|
|
|
'';
|
|
|
|
};
|
2021-01-28 22:03:02 +00:00
|
|
|
}) testCombinations)
|