3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #233035 from NixOS/kexec-test

This commit is contained in:
Ryan Lahfa 2023-06-17 14:51:57 +02:00 committed by GitHub
commit 7d9cd2a23e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 6 deletions

View file

@ -514,7 +514,11 @@ class Machine:
return "".join(output_buffer) return "".join(output_buffer)
def execute( def execute(
self, command: str, check_return: bool = True, timeout: Optional[int] = 900 self,
command: str,
check_return: bool = True,
check_output: bool = True,
timeout: Optional[int] = 900,
) -> Tuple[int, str]: ) -> Tuple[int, str]:
self.run_callbacks() self.run_callbacks()
self.connect() self.connect()
@ -535,6 +539,9 @@ class Machine:
assert self.shell assert self.shell
self.shell.send(out_command.encode()) self.shell.send(out_command.encode())
if not check_output:
return (-2, "")
# Get the output # Get the output
output = base64.b64decode(self._next_newline_closed_block_from_shell()) output = base64.b64decode(self._next_newline_closed_block_from_shell())

View file

@ -8,10 +8,6 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
node1 = { ... }: { node1 = { ... }: {
virtualisation.vlans = [ ]; virtualisation.vlans = [ ];
virtualisation.memorySize = 4 * 1024; virtualisation.memorySize = 4 * 1024;
virtualisation.useBootLoader = true;
virtualisation.useEFIBoot = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
}; };
node2 = { modulesPath, ... }: { node2 = { modulesPath, ... }: {
@ -19,6 +15,8 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
environment.systemPackages = [ pkgs.hello ]; environment.systemPackages = [ pkgs.hello ];
imports = [ imports = [
"${modulesPath}/installer/netboot/netboot-minimal.nix" "${modulesPath}/installer/netboot/netboot-minimal.nix"
"${modulesPath}/testing/test-instrumentation.nix"
"${modulesPath}/profiles/qemu-guest.nix"
]; ];
}; };
}; };
@ -39,7 +37,10 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
# Kexec node1 to the toplevel of node2 via the kexec-boot script # Kexec node1 to the toplevel of node2 via the kexec-boot script
node1.succeed('touch /run/foo') node1.succeed('touch /run/foo')
node1.fail('hello') node1.fail('hello')
node1.execute('${nodes.node2.config.system.build.kexecTree}/kexec-boot', check_return=False) node1.execute('${nodes.node2.system.build.kexecTree}/kexec-boot', check_output=False)
node1.connected = False
node1.connect()
node1.wait_for_unit("multi-user.target")
node1.succeed('! test -e /run/foo') node1.succeed('! test -e /run/foo')
node1.succeed('hello') node1.succeed('hello')
node1.succeed('[ "$(hostname)" = "node2" ]') node1.succeed('[ "$(hostname)" = "node2" ]')