at 23.11-beta 1.8 kB view raw
1import ../make-test-python.nix ({ pkgs, lib, ... }: 2 3let 4 releases = import ../../release.nix { 5 configuration = { 6 # Building documentation makes the test unnecessarily take a longer time: 7 documentation.enable = lib.mkForce false; 8 9 # Our tests require `grep` & friends: 10 environment.systemPackages = with pkgs; [busybox]; 11 }; 12 }; 13 14 vm-image-metadata = releases.lxdVirtualMachineImageMeta.${pkgs.stdenv.hostPlatform.system}; 15 vm-image-disk = releases.lxdVirtualMachineImage.${pkgs.stdenv.hostPlatform.system}; 16 17 instance-name = "instance1"; 18in 19{ 20 name = "incus-virtual-machine"; 21 22 meta.maintainers = with lib.maintainers; [ adamcstephens ]; 23 24 nodes.machine = {...}: { 25 virtualisation = { 26 # Ensure test VM has enough resources for creating and managing guests 27 cores = 2; 28 memorySize = 1024; 29 diskSize = 4096; 30 31 incus.enable = true; 32 }; 33 }; 34 35 testScript = '' 36 def instance_is_up(_) -> bool: 37 status, _ = machine.execute("incus exec ${instance-name} --disable-stdin --force-interactive /run/current-system/sw/bin/true") 38 return status == 0 39 40 machine.wait_for_unit("incus.service") 41 42 machine.succeed("incus admin init --minimal") 43 44 with subtest("virtual-machine image can be imported"): 45 machine.succeed("incus image import ${vm-image-metadata}/*/*.tar.xz ${vm-image-disk}/nixos.qcow2 --alias nixos") 46 47 with subtest("virtual-machine can be launched and become available"): 48 machine.succeed("incus launch nixos ${instance-name} --vm --config limits.memory=512MB --config security.secureboot=false") 49 with machine.nested("Waiting for instance to start and be usable"): 50 retry(instance_is_up) 51 52 with subtest("lxd-agent is started"): 53 machine.succeed("incus exec ${instance-name} systemctl is-active lxd-agent") 54 ''; 55})