diff --git a/libvirt/tests/cfg/sriov/vIOMMU/iommu_device_lifecycle.cfg b/libvirt/tests/cfg/sriov/vIOMMU/iommu_device_lifecycle.cfg index 1950bda758..0567c24530 100644 --- a/libvirt/tests/cfg/sriov/vIOMMU/iommu_device_lifecycle.cfg +++ b/libvirt/tests/cfg/sriov/vIOMMU/iommu_device_lifecycle.cfg @@ -41,3 +41,6 @@ - reboot_many_times: loop_time = 5 - reset: + - shutdown: + start_after_shutdown = yes + shutdown_timeout = 60 diff --git a/libvirt/tests/src/sriov/vIOMMU/iommu_device_lifecycle.py b/libvirt/tests/src/sriov/vIOMMU/iommu_device_lifecycle.py index 4d77baf66b..d408b5f53e 100644 --- a/libvirt/tests/src/sriov/vIOMMU/iommu_device_lifecycle.py +++ b/libvirt/tests/src/sriov/vIOMMU/iommu_device_lifecycle.py @@ -87,6 +87,27 @@ def run(test, params, env): s, o = utils_net.ping(ping_dest, count=5, timeout=10, session=session) if s: test.fail("Failed to ping %s! status: %s, output: %s." % (ping_dest, s, o)) + + elif test_scenario == "shutdown": + test.log.info("TEST_STEP: Shutdown the VM.") + virsh.shutdown(vm.name, **VIRSH_ARGS) + shutdown_timeout = int(params.get("shutdown_timeout", "60")) + if not utils_misc.wait_for(lambda: vm.is_dead(), shutdown_timeout): + test.fail("VM failed to shutdown") + test.log.info("VM successfully shutdown") + + # Optional: Start VM again based on parameter + start_after_shutdown = "yes" == params.get("start_after_shutdown", "no") + if start_after_shutdown: + test.log.info("TEST_STEP: Starting VM after shutdown") + vm.start() + vm.cleanup_serial_console() + vm.create_serial_console() + session = vm.wait_for_serial_login( + timeout=int(params.get('login_timeout', 240))) + test.log.info("VM successfully started after shutdown") + session.close() + else: pid_ping, upsince = save_base.pre_save_setup(vm, serial=True) if test_scenario == "save_restore":