diff options
author | Florian Klink <flokli@flokli.de> | 2022-02-26 22:38:28 +0100 |
---|---|---|
committer | lassulus <lassulus@lassul.us> | 2022-04-13 13:26:02 +0200 |
commit | f0178e45eb6f218acef4e8ae46aaea052a2171c7 (patch) | |
tree | ea10f91f1d3722733e08188e477847c88dee0815 /nixos | |
parent | 366c8be2add24ecfb14ddc8452189358c9cb1439 (diff) | |
download | nixpkgs-f0178e45eb6f218acef4e8ae46aaea052a2171c7.tar nixpkgs-f0178e45eb6f218acef4e8ae46aaea052a2171c7.tar.gz nixpkgs-f0178e45eb6f218acef4e8ae46aaea052a2171c7.tar.bz2 nixpkgs-f0178e45eb6f218acef4e8ae46aaea052a2171c7.tar.lz nixpkgs-f0178e45eb6f218acef4e8ae46aaea052a2171c7.tar.xz nixpkgs-f0178e45eb6f218acef4e8ae46aaea052a2171c7.tar.zst nixpkgs-f0178e45eb6f218acef4e8ae46aaea052a2171c7.zip |
nixosTests.kexec: extend with kexecBoot attribute
Add a node2, which imports the kexec-boot.nix profile. Ensure node2 successfully boots up, then invoke the kexec-boot script from it on node1.
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/tests/kexec.nix | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/nixos/tests/kexec.nix b/nixos/tests/kexec.nix index 55b71e0999f..7be04c74056 100644 --- a/nixos/tests/kexec.nix +++ b/nixos/tests/kexec.nix @@ -1,22 +1,44 @@ # Test whether fast reboots via kexec work. -import ./make-test-python.nix ({ pkgs, lib, ...} : { +import ./make-test-python.nix ({ pkgs, lib, ... }: { name = "kexec"; meta = with lib.maintainers; { maintainers = [ eelco ]; }; - nodes.machine = { ... }: - { virtualisation.vlans = [ ]; }; - - testScript = - '' - machine.wait_for_unit("multi-user.target") - machine.succeed('kexec --load /run/current-system/kernel --initrd /run/current-system/initrd --command-line "$(</proc/cmdline)"') - machine.execute("systemctl kexec >&2 &", check_return=False) - machine.connected = False - machine.connect() - machine.wait_for_unit("multi-user.target") - machine.shutdown() - ''; + nodes = { + node1 = { ... }: { + virtualisation.vlans = [ ]; + virtualisation.memorySize = 2 * 1024; + }; + + node2 = { modulesPath, ... }: { + virtualisation.vlans = [ ]; + imports = [ + "${modulesPath}/installer/kexec/kexec-boot.nix" + ]; + }; + }; + + testScript = { nodes, ... }: '' + node1.wait_for_unit("multi-user.target") + node1.succeed('kexec --load /run/current-system/kernel --initrd /run/current-system/initrd --command-line "$(</proc/cmdline)"') + node1.execute("systemctl kexec >&2 &", check_return=False) + node1.connected = False + node1.connect() + node1.wait_for_unit("multi-user.target") + + + # Check the machine with kexec-boot.nix profile boots up + node2.wait_for_unit("multi-user.target") + node2.shutdown() + + # Kexec node1 to the toplevel of node2 via the kexec-boot script + node1.execute('${nodes.node2.config.system.build.kexecBoot}/kexec-boot', check_return=False) + node1.connected = False + node1.connect() + node1.wait_for_unit("multi-user.target") + + node1.shutdown() + ''; }) |