tests/functional: Add a OS level migration test for pseries

There's currently no OS level test for ppc64le. Add one such test by
reusing the boot level tests that are already present.

The test boots the source machine, waits for it to reach a mid-boot
message, migrates and checks that the destination has reached the
final boot message (VFS error due to no disk).

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/qemu-devel/20260109123519.28703-3-farosas@suse.de
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
This commit is contained in:
Fabiano Rosas
2026-01-09 09:35:19 -03:00
committed by Harsh Prateek Bora
parent 628bda1ab7
commit f4e34d0fd5
2 changed files with 47 additions and 0 deletions

View File

@@ -4,6 +4,7 @@
#
# ppc migration test
from qemu_test.ports import Ports
from migration import MigrationTest
@@ -21,6 +22,17 @@ class PpcMigrationTest(MigrationTest):
self.set_machine('mac99')
self.migration_with_exec()
def do_migrate_ppc64_linux(self, source_vm, dest_vm):
with Ports() as ports:
port = ports.find_free_port()
if port is None:
self.skipTest('Failed to find a free port')
uri = 'tcp:localhost:%u' % port
dest_vm.qmp('migrate-incoming', uri=uri)
source_vm.qmp('migrate', uri=uri)
self.assert_migration(source_vm, dest_vm)
if __name__ == '__main__':
MigrationTest.main()

View File

@@ -9,6 +9,7 @@
from qemu_test import QemuSystemTest, Asset
from qemu_test import wait_for_console_pattern
from test_migration import PpcMigrationTest
class PseriesMachine(QemuSystemTest):
@@ -87,5 +88,39 @@ class PseriesMachine(QemuSystemTest):
wait_for_console_pattern(self, console_pattern, self.panic_message)
wait_for_console_pattern(self, self.good_message, self.panic_message)
def test_ppc64_linux_migration(self):
self.set_machine('pseries')
kernel_path = self.ASSET_KERNEL.fetch()
kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE
dest_vm = self.get_vm(name="dest-qemu")
dest_vm.add_args('-incoming', 'defer')
dest_vm.add_args('-smp', '4')
dest_vm.add_args('-nodefaults')
dest_vm.add_args('-kernel', kernel_path,
'-append', kernel_command_line)
dest_vm.set_console()
dest_vm.launch()
source_vm = self.get_vm(name="source-qemu")
source_vm.add_args('-smp', '4')
source_vm.add_args('-nodefaults')
source_vm.add_args('-kernel', kernel_path,
'-append', kernel_command_line)
source_vm.set_console()
source_vm.launch()
# ensure the boot has reached Linux
console_pattern = 'smp: Brought up 1 node, 4 CPUs'
wait_for_console_pattern(self, console_pattern, self.panic_message,
vm=source_vm)
PpcMigrationTest().do_migrate_ppc64_linux(source_vm, dest_vm);
# ensure the boot proceeds after migration
wait_for_console_pattern(self, self.good_message, self.panic_message,
vm=dest_vm)
if __name__ == '__main__':
QemuSystemTest.main()