Re: [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 19:48:10 +0100
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <CAHt6W4eCdqp2NDzjHyQ9vdezJkjVyxTwJH7HuReVxVSihox0Rw@mail.gmail.com> |
On Tue, 4 Aug 2026 at 18:57, Marek Marczykowski-G=C3=B3recki <[email protected]> wrote: > > On Tue, Aug 04, 2026 at 06:42:18PM +0100, Frediano Ziglio wrote: > > 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/consol= e.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/scri= pts/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 c= orrupted > > +# 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=3D=3D"domU" { print $2 }')" save.dat /roo= t/domU.cfg > > +xl restore /root/domU.cfg save.dat > > +xl list | grep -q domU > > +rm -f save.dat > > +xl save "$(xl list | awk '$1=3D=3D"domU" { print $2 }')" save.dat /roo= t/domU.cfg > > +xl restore /root/domU.cfg save.dat > > +xl list | grep -q domU > > +rm -f save.dat > > +xl console "$(xl list | awk '$1=3D=3D"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=3D"qemu-system-x86_64 \ > > -device virtio-net-pci,netdev=3Dn0 \ > > -netdev user,id=3Dn0,tftp=3Dbinaries,bootfile=3D/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. > > Why doing this interactively over serial, instead of adding to > etc/local.d/xen.start and then printing test result at the end? > I'm using expect to interact with the console. expect is not available inside the alpine root filesystem. Some failure I had during migration is that the VM crashed. In the script I interact with the console to check that the VM is still able to run commands. > > +gs=3D$'\x1d' > > +export EXPECT_TEXTS=3D"BusyBox > > +$gs $gs > > +login: > > +root > > +login on > > +/root/save_restore_test > > +Restarting tasks > > +dmesg | grep suspending | tr o 0" > > + > > export TEST_LOG=3D"smoke.serial" > > export BOOT_MSG=3D"Latest ChangeSet: " > > -export LOG_MSG=3D"Domain-0" > > -export PASSED=3D"BusyBox" > > +export PASSED=3D"suspending xenst0re" > > > > ./automation/scripts/console.exp |& sed 's/\r\+$//' > > -- > > 2.43.0 > > > > -- > Best Regards, > Marek Marczykowski-G=C3=B3recki > Invisible Things Lab