From d2911784c30a6c94d3a581bc99c94d3ce0deba0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Mon, 1 Jan 2024 01:53:29 +0100 Subject: [PATCH] add nixos test fro build-on-remote --- tests/flake-module.nix | 2 ++ tests/from-nixos-build-on-remote.nix | 43 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 tests/from-nixos-build-on-remote.nix diff --git a/tests/flake-module.nix b/tests/flake-module.nix index 1173e4f..bab0620 100644 --- a/tests/flake-module.nix +++ b/tests/flake-module.nix @@ -18,5 +18,7 @@ from-nixos-stable = import ./from-nixos.nix testInputsStable; from-nixos-with-sudo = import ./from-nixos-with-sudo.nix testInputsUnstable; from-nixos-with-sudo-stable = import ./from-nixos-with-sudo.nix testInputsStable; + + from-nixos-build-on-remote = import ./from-nixos-build-on-remote.nix testInputsUnstable; }); } diff --git a/tests/from-nixos-build-on-remote.nix b/tests/from-nixos-build-on-remote.nix new file mode 100644 index 0000000..f8556b1 --- /dev/null +++ b/tests/from-nixos-build-on-remote.nix @@ -0,0 +1,43 @@ +(import ./lib/test-base.nix) { + name = "from-nixos-build-on-remote"; + nodes = { + installer = ./modules/installer.nix; + installed = { + services.openssh.enable = true; + virtualisation.memorySize = 1512; + + users.users.root.openssh.authorizedKeys.keyFiles = [ ./modules/ssh-keys/ssh.pub ]; + }; + }; + testScript = '' + def create_test_machine(oldmachine=None, args={}): # taken from + machine = create_machine({ + "qemuFlags": + '-cpu max -m 1024 -virtfs local,path=/nix/store,security_model=none,mount_tag=nix-store,' + f' -drive file={oldmachine.state_dir}/installed.qcow2,id=drive1,if=none,index=1,werror=report' + f' -device virtio-blk-pci,drive=drive1', + } | args) + driver.machines.append(machine) + return machine + start_all() + + installer.succeed(""" + nixos-anywhere \ + -i /root/.ssh/install_key \ + --debug \ + --build-on-remote \ + --kexec /etc/nixos-anywhere/kexec-installer \ + --store-paths /etc/nixos-anywhere/disko /etc/nixos-anywhere/system-to-install \ + root@installed >&2 + """) + try: + installed.shutdown() + except BrokenPipeError: + # qemu has already exited + pass + new_machine = create_test_machine(oldmachine=installed, args={ "name": "after_install" }) + new_machine.start() + hostname = new_machine.succeed("hostname").strip() + assert "nixos-anywhere" == hostname, f"'nixos-anywhere' != '{hostname}'" + ''; +}