[PATCH 2/2] CI: Check save/restore of PV domain as part of qemu-alpine-x86_64
Frediano Ziglio <[email protected]> Tue, 4 Aug 2026 18:42:18 +0100
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <[email protected]> |
Make sure that save/restore continue to work. The check save and restore twice to check for corrupted status. Also a command is launched in the guest to make sure that the machine is not crashed but working. Signed-off-by: Frediano Ziglio <[email protected]> --- automation/scripts/console.exp | 8 +++++ automation/scripts/qemu-alpine-x86_64.sh | 40 ++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/automation/scripts/console.exp b/automation/scripts/console.exp index e27886bbef..ff58ed29b8 100755 --- a/automation/scripts/console.exp +++ b/automation/scripts/console.exp @@ -58,6 +58,14 @@ if {[info exists env(WAKEUP_CMD)]} { system "$env(WAKEUP_CMD)" } +if {[info exists env(EXPECT_TEXTS)]} { + set lines [split "$env(EXPECT_TEXTS)" "\n"] + foreach {exp snd} $lines { + expect -re "$exp" + send "$snd\n" + } +} + if {[info exists env(LOG_MSG)]} { expect { -notransfer -re "$env(PASSED)" { diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh index 60f5cc49fc..409a601c34 100755 --- a/automation/scripts/qemu-alpine-x86_64.sh +++ b/automation/scripts/qemu-alpine-x86_64.sh @@ -48,6 +48,28 @@ xl -vvv create -c /root/domU.cfg " > etc/local.d/xen.start chmod +x etc/local.d/xen.start + +# Script to test save and restore. +# It saves and restores domU domain twice to check if the domain was corrupted +# during the first sequence. +# At the end open the console to check if the domain is working. +cat > root/save_restore_test << "EOF" +#!/bin/sh +set -ex +xl list | grep -q domU +rm -f save.dat +xl save "$(xl list | awk '$1=="domU" { print $2 }')" save.dat /root/domU.cfg +xl restore /root/domU.cfg save.dat +xl list | grep -q domU +rm -f save.dat +xl save "$(xl list | awk '$1=="domU" { print $2 }')" save.dat /root/domU.cfg +xl restore /root/domU.cfg save.dat +xl list | grep -q domU +rm -f save.dat +xl console "$(xl list | awk '$1=="domU" { print $2 }')" +EOF +chmod +x root/save_restore_test + find . | cpio -R 0:0 -H newc -o | gzip >> ../dom0-rootfs.cpio.gz cd ../.. @@ -70,9 +92,23 @@ export TEST_CMD="qemu-system-x86_64 \ -device virtio-net-pci,netdev=n0 \ -netdev user,id=n0,tftp=binaries,bootfile=/pxelinux.0" +# Sequence of expect/send strings: +# 1. wait domain start and close console; +# 2. wait login prompt and login as root +# 3. wait login and launch save/restore test; +# 4. wait restore from domain console and send a command. +gs=$'\x1d' +export EXPECT_TEXTS="BusyBox +$gs $gs +login: +root +login on +/root/save_restore_test +Restarting tasks +dmesg | grep suspending | tr o 0" + export TEST_LOG="smoke.serial" export BOOT_MSG="Latest ChangeSet: " -export LOG_MSG="Domain-0" -export PASSED="BusyBox" +export PASSED="suspending xenst0re" ./automation/scripts/console.exp |& sed 's/\r\+$//' -- 2.43.0