diff options
author | Julian Stecklina <julian.stecklina@cyberus-technology.de> | 2024-02-14 18:40:46 +0100 |
---|---|---|
committer | Julian Stecklina <julian.stecklina@cyberus-technology.de> | 2024-02-28 17:43:43 +0100 |
commit | 3661b3ee536fdfbe031ada573de61d920da3268e (patch) | |
tree | d53e5e0d5b70dc53c5f002d925011d6c5f395cb1 /nixos/tests/virtualbox.nix | |
parent | 77c7ac6c357c43342642efc62119fc58ad11031e (diff) |
nixosTests.virtualbox: add happy path KVM test
The KVM support is still new and experimental. There is no point in doing extensive testing. Just check whether it works in general.
Diffstat (limited to 'nixos/tests/virtualbox.nix')
-rw-r--r-- | nixos/tests/virtualbox.nix | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/nixos/tests/virtualbox.nix b/nixos/tests/virtualbox.nix index 878d60c33f475..3c2a391233dbd 100644 --- a/nixos/tests/virtualbox.nix +++ b/nixos/tests/virtualbox.nix @@ -3,6 +3,7 @@ pkgs ? import ../.. { inherit system config; }, debug ? false, enableUnfree ? false, + enableKvm ? false, use64bitGuest ? true }: @@ -349,7 +350,13 @@ let vmConfigs = mapAttrsToList mkVMConf vms; in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs; virtualisation.memorySize = 2048; - virtualisation.qemu.options = ["-cpu" "kvm64,svm=on,vmx=on"]; + + virtualisation.qemu.options = let + # IvyBridge is reasonably ancient to be compatible with recent + # Intel/AMD hosts and sufficient for the KVM flavor. + guestCpu = if config.virtualisation.virtualbox.host.enableKvm then "IvyBridge" else "kvm64"; + in ["-cpu" "${guestCpu},svm=on,vmx=on"]; + test-support.displayManager.auto.user = "alice"; users.users.alice.extraGroups = let inherit (config.virtualisation.virtualbox.host) enableHardening; @@ -412,6 +419,23 @@ let ''; }; + kvmTests = mapAttrs (mkVBoxTest { + enableKvm = true; + + # Once the KVM version supports these, we can enable them. + addNetworkInterface = false; + enableHardening = false; + } vboxVMs) { + kvm-headless = '' + create_vm_headless() + machine.succeed(ru("VBoxHeadless --startvm headless >&2 & disown %1")) + wait_for_startup_headless() + wait_for_vm_boot_headless() + shutdown_vm_headless() + destroy_vm_headless() + ''; + }; + in mapAttrs (mkVBoxTest {} vboxVMs) { simple-gui = '' # Home to select Tools, down to move to the VM, enter to start it. @@ -522,4 +546,6 @@ in mapAttrs (mkVBoxTest {} vboxVMs) { destroy_vm_test1() destroy_vm_test2() ''; -} // (optionalAttrs enableUnfree unfreeTests) +} +// (optionalAttrs enableKvm kvmTests) +// (optionalAttrs enableUnfree unfreeTests) |