From 70bb2d5ab1bf6787bc613e33f5398be2eca1f5fd Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 27 Jan 2026 17:22:55 -0600 Subject: feat(testing): rewrite test infrastructure from libvirt to direct QEMU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the never-fully-operational libvirt-based VM test infrastructure with direct QEMU management and archangel ISO for fully automated, unattended base VM creation. Key changes: - vm-utils.sh: complete rewrite — QEMU process mgmt via PID file, monitor socket for graceful shutdown, qemu-img snapshots, SSH port forwarding (localhost:2222) - create-base-vm.sh: boots archangel ISO, SSHs in, runs unattended install via config file, verifies, creates clean-install snapshot - run-test.sh: snapshot revert, git bundle transfer, detached archsetup execution with setsid, polling, validation, and report generation - debug-vm.sh: CoW overlay disk, GTK display, auto-cleanup on close - setup-testing-env.sh: reduced deps to qemu-full/sshpass/edk2-ovmf/socat - cleanup-tests.sh: PID-based process management, orphan detection - validation.sh: port-based SSH (backward compatible), fuzzel/foot for Hyprland, corrected package list paths - network-diagnostics.sh: getent/curl instead of nslookup/ping (SLIRP) New files: - archsetup-test.conf: archangel config for base VM (btrfs, no encrypt) - archsetup-vm.conf: archsetup config for unattended test execution - assets/archangel.conf.example: reference archangel config Deleted: - finalize-base-vm.sh: merged into create-base-vm.sh - archinstall-config.json: replaced by archangel .conf format Tested: full end-to-end run — 51 validations passed, 0 failures. Co-Authored-By: Claude Opus 4.5 --- scripts/testing/archinstall-config.json | 117 -------------------------------- 1 file changed, 117 deletions(-) delete mode 100644 scripts/testing/archinstall-config.json (limited to 'scripts/testing/archinstall-config.json') diff --git a/scripts/testing/archinstall-config.json b/scripts/testing/archinstall-config.json deleted file mode 100644 index a55e2a1..0000000 --- a/scripts/testing/archinstall-config.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "!users": { - "0": { - "!password": "archsetup", - "username": "root", - "sudo": false - } - }, - "archinstall-language": "English", - "audio_config": null, - "bootloader": "systemd-bootctl", - "config_version": "2.8.0", - "debug": false, - "disk_config": { - "config_type": "default_layout", - "device_modifications": [ - { - "device": "/dev/vda", - "partitions": [ - { - "btrfs": [], - "flags": [ - "Boot" - ], - "fs_type": "fat32", - "length": { - "sector_size": null, - "total_size": null, - "unit": "MiB", - "value": 512 - }, - "mount_options": [], - "mountpoint": "/boot", - "obj_id": "boot_partition", - "start": { - "sector_size": null, - "total_size": null, - "unit": "MiB", - "value": 1 - }, - "status": "create", - "type": "primary" - }, - { - "btrfs": [], - "flags": [], - "fs_type": "ext4", - "length": { - "sector_size": null, - "total_size": null, - "unit": "MiB", - "value": 100 - }, - "mount_options": [], - "mountpoint": "/", - "obj_id": "root_partition", - "start": { - "sector_size": null, - "total_size": null, - "unit": "MiB", - "value": 513 - }, - "status": "create", - "type": "primary" - } - ], - "wipe": true - } - ] - }, - "disk_encryption": null, - "hostname": "archsetup-test", - "kernels": [ - "linux" - ], - "locale_config": { - "kb_layout": "us", - "sys_enc": "UTF-8", - "sys_lang": "en_US" - }, - "mirror_config": { - "custom_mirrors": [], - "mirror_regions": { - "United States": [ - "https://mirror.rackspace.com/archlinux/$repo/os/$arch", - "https://mirror.leaseweb.com/archlinux/$repo/os/$arch" - ] - } - }, - "network_config": { - "type": "nm" - }, - "no_pkg_lookups": false, - "ntp": true, - "offline": false, - "packages": [ - "openssh", - "dhcpcd", - "git", - "vim" - ], - "parallel downloads": 5, - "profile_config": { - "gfx_driver": "All open-source", - "greeter": null, - "profile": { - "custom_settings": {}, - "details": [], - "main": "Minimal" - } - }, - "script": "guided", - "silent": false, - "swap": false, - "timezone": "America/Chicago", - "version": "2.8.0" -} -- cgit v1.2.3