summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2022-02-26 22:38:28 +0100
committerlassulus <lassulus@lassul.us>2022-04-13 13:26:02 +0200
commitf0178e45eb6f218acef4e8ae46aaea052a2171c7 (patch)
treeea10f91f1d3722733e08188e477847c88dee0815 /nixos
parent366c8be2add24ecfb14ddc8452189358c9cb1439 (diff)
downloadnixpkgs-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.nix50
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()
+  '';
 })