Skip to content

Instantly share code, notes, and snippets.

@bketelsen
Last active February 20, 2026 11:18
Show Gist options
  • Select an option

  • Save bketelsen/d9dcfde668322db204a276c22ac94218 to your computer and use it in GitHub Desktop.

Select an option

Save bketelsen/d9dcfde668322db204a276c22ac94218 to your computer and use it in GitHub Desktop.
bootc test suite
=== Step 7: Run tests ===
--- Running: 01-installation.sh ---
01-installation.sh 100% 1605 7.2MB/s 00:00
# Tier 1: Installation validation
# system state: running
ok - System has booted
ok - Root filesystem is read-only
ok - Composefs is active
ok - usr is read-only
ok - bootc status succeeds
ok - bootc has image reference
# Results: 6 passed, 0 failed, 6 total
--- 01-installation.sh: PASSED ---
--- Running: 02-services.sh ---
02-services.sh 100% 1311 3.1MB/s 00:00
# Tier 2: Service health
ok - systemd-resolved is active
ok - NetworkManager is active
ok - ssh is active
ok - nbc-update-download.timer is loaded
ok - frostyard-updex is installed
ok - no failed systemd units
# Results: 6 passed, 0 failed, 6 total
--- 02-services.sh: PASSED ---
--- Running: 03-sysexts.sh ---
03-sysexts.sh 100% 1446 3.2MB/s 00:00
# Tier 3: Sysext machinery validation
ok - systemd-sysext binary exists
ok - systemd-sysext list succeeds
ok - sysupdate transfer configs exist
# Informational: sysupdate transfer configs
debdev.transfer
devel.feature
dev.transfer
docker.feature
docker.transfer
incus.feature
incus.transfer
podman.feature
podman.transfer
# Informational: active extensions
# Results: 3 passed, 0 failed, 3 total
--- 03-sysexts.sh: PASSED ---
--- Running: 04-smoke.sh ---
04-smoke.sh 100% 1251 4.1MB/s 00:00
# Tier 4: Smoke tests
ok - Network connectivity
ok - DNS resolution
ok - Package metadata intact (>100 installed packages)
ok - System time is reasonable (year >= 2025)
ok - Hostname is set
ok - Locale is configured
# Results: 6 passed, 0 failed, 6 total
--- 04-smoke.sh: PASSED ---
========================================
TEST SUMMARY
========================================
01-installation.sh PASS
02-services.sh PASS
03-sysexts.sh PASS
04-smoke.sh PASS
========================================
All tiers passed.
=== Cleanup ===
VM stopped (PID: 645630)
Removed disk image: /tmp/tmp.QmMMj9VY1P/disk.raw
Removing loaded image: localhost/snosi-test:latest
Untagged: localhost/snosi-test:latest
Deleted: 55e79e2d97ad667e74a0b593bbca8dd4aaf63797ab9c90f4fc62f33438e487cb
Removed temp directory: /tmp/tmp.QmMMj9VY1P
snosi bootctesting $~8?4 1m35s > just test-install
sudo /home/linuxbrew/.linuxbrew/bin/just _test-install output/snow
./test/bootc-install-test.sh output/snow
Temp directory: /tmp/tmp.xT8kR6nNvp
=== Step 1: Load image ===
Loading OCI directory: output/snow
Getting image source signatures
Copying blob 2e36e68cca63 done |
Copying config 3393cc5c61 done |
Writing manifest to image destination
Re-layering image through podman export/import...
Getting image source signatures
Copying blob f1334104c9e1 done |
Copying config 7bff883bf6 done |
Writing manifest to image destination
sha256:7bff883bf6bcb8c40d261c9763b0336e3da9590067bbfdb53c2e13ac621e6436
Untagged: localhost/snosi-test-raw:latest
Deleted: 3393cc5c615260da18ef5c9cdc17694ca2b5844b93eef96d1252a95ccd1a1e01
Image loaded as: localhost/snosi-test:latest
=== Step 2: Generate SSH keypair ===
Generated SSH keypair: /tmp/tmp.xT8kR6nNvp/id_ed25519
=== Step 3: Create disk image ===
Created disk image: /tmp/tmp.xT8kR6nNvp/disk.raw (10G)
=== Step 4: Install image to disk ===
Installing image: docker://localhost/snosi-test:latest
Digest: sha256:b26a9c4330a47adc0301fd3cda391326029058cf0961726ef455064da8b51d0d
Block setup: direct
Size: 10737418240
Serial: <unknown>
Model: <unknown>
Checking that no-one is using this disk right now ... OK
Disk /dev/loop19: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new GPT disklabel (GUID: C0D9843A-AA59-46CC-AB4E-40CD533D729B).
/dev/loop19p1: Created a new partition 1 of type 'BIOS boot' and of size 1 MiB.
/dev/loop19p2: Created a new partition 2 of type 'EFI System' and of size 1 GiB.
/dev/loop19p3: Created a new partition 3 of type 'Linux root (x86-64)' and of size 9 GiB.
/dev/loop19p4: Done.
New situation:
Disklabel type: gpt
Disk identifier: C0D9843A-AA59-46CC-AB4E-40CD533D729B
Device Start End Sectors Size Type
/dev/loop19p1 2048 4095 2048 1M BIOS boot
/dev/loop19p2 4096 2101247 2097152 1G EFI System
/dev/loop19p3 2101248 20969471 18868224 9G Linux root (x86-64)
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Creating root filesystem (btrfs) on device /dev/loop19p3 (size=9.7 GB)
> mkfs.btrfs -U 9a899b28-05c7-4a0e-bdbb-3dbfc553a7bb -L root /dev/loop19p3
Creating ESP filesystem
> mkfs.fat /dev/loop19p2 -n EFI-SYSTEM
Bootloader: systemd
Installing bootloader via systemd-boot
Created "/tmp/.tmpQtb2ho/EFI".
Created "/tmp/.tmpQtb2ho/EFI/systemd".
Created "/tmp/.tmpQtb2ho/EFI/BOOT".
Created "/tmp/.tmpQtb2ho/loader".
Created "/tmp/.tmpQtb2ho/loader/keys".
Created "/tmp/.tmpQtb2ho/loader/entries".
Created "/tmp/.tmpQtb2ho/EFI/Linux".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi.signed" to "/tmp/.tmpQtb2ho/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi.signed" to "/tmp/.tmpQtb2ho/EFI/BOOT/BOOTX64.EFI".
Random seed file /tmp/.tmpQtb2ho/loader/random-seed successfully written (32 bytes).
Trimming root
.: 2.8 GiB (2981752832 bytes) trimmed
Finalizing filesystem root
Unmounting filesystems
Installation complete!
Installation complete
=== Step 4b: Inject SSH key ===
Injected SSH key into disk
=== Step 5: Boot VM ===
VM started (PID: 638220, SSH port: 2222)
Console log: /tmp/tmp.xT8kR6nNvp/disk-console.log
=== Step 6: Wait for SSH ===
Waiting up to 300s for SSH on port 2222...
SSH available after 14s
=== Step 7: Run tests ===
--- Running: 01-installation.sh ---
01-installation.sh 100% 1473 5.4MB/s 00:00
# Tier 1: Installation validation
# system state:
not ok - System has booted
ok - Root filesystem is read-only
ok - Composefs is active
ok - usr is read-only
ok - bootc status succeeds
ok - bootc has image reference
# Results: 5 passed, 1 failed, 6 total
--- 01-installation.sh: FAILED (1 failures) ---
--- Running: 02-services.sh ---
02-services.sh 100% 1311 7.2MB/s 00:00
# Tier 2: Service health
ok - systemd-resolved is active
ok - NetworkManager is active
ok - ssh is active
ok - nbc-update-download.timer is loaded
ok - frostyard-updex is installed
ok - no failed systemd units
# Results: 6 passed, 0 failed, 6 total
--- 02-services.sh: PASSED ---
--- Running: 03-sysexts.sh ---
03-sysexts.sh 100% 1446 5.8MB/s 00:00
# Tier 3: Sysext machinery validation
ok - systemd-sysext binary exists
ok - systemd-sysext list succeeds
ok - sysupdate transfer configs exist
# Informational: sysupdate transfer configs
debdev.transfer
devel.feature
dev.transfer
docker.feature
docker.transfer
incus.feature
incus.transfer
podman.feature
podman.transfer
# Informational: active extensions
# Results: 3 passed, 0 failed, 3 total
--- 03-sysexts.sh: PASSED ---
--- Running: 04-smoke.sh ---
04-smoke.sh 100% 1251 7.3MB/s 00:00
# Tier 4: Smoke tests
ok - Network connectivity
ok - DNS resolution
ok - Package metadata intact (>100 installed packages)
ok - System time is reasonable (year >= 2025)
ok - Hostname is set
ok - Locale is configured
# Results: 6 passed, 0 failed, 6 total
--- 04-smoke.sh: PASSED ---
========================================
TEST SUMMARY
========================================
01-installation.sh FAIL
02-services.sh PASS
03-sysexts.sh PASS
04-smoke.sh PASS
========================================
Some tiers failed.
=== Cleanup ===
VM stopped (PID: 638220)
Removed disk image: /tmp/tmp.xT8kR6nNvp/disk.raw
Removing loaded image: localhost/snosi-test:latest
Untagged: localhost/snosi-test:latest
Deleted: 7bff883bf6bcb8c40d261c9763b0336e3da9590067bbfdb53c2e13ac621e6436
Removed temp directory: /tmp/tmp.xT8kR6nNvp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment