diff --git a/qemu/tests/cfg/qemu_guest_agent.cfg b/qemu/tests/cfg/qemu_guest_agent.cfg index c53156f5c945f8a927a0bd8dba2a67476e1f1df2..c79566812a6729a0a1ef0c0686ad110478c5d905 100644 --- a/qemu/tests/cfg/qemu_guest_agent.cfg +++ b/qemu/tests/cfg/qemu_guest_agent.cfg @@ -109,6 +109,8 @@ no Windows gagent_check_type = fsfreeze gagent_fs_test_cmd = "rm -f /tmp/foo; echo foo > /tmp/foo" + - check_reboot_shutdown_fsfreeze: + gagent_check_type = reboot_shutdown - check_snapshot: # fsfreeze series commands can't run on windows guest. type = qemu_guest_agent_snapshot diff --git a/qemu/tests/qemu_guest_agent.py b/qemu/tests/qemu_guest_agent.py index edaf438db1946e7ad09457e6bca7647fd8ef8a3d..b4651cbae9442a618b82f64d777ac74d339f0606 100644 --- a/qemu/tests/qemu_guest_agent.py +++ b/qemu/tests/qemu_guest_agent.py @@ -810,6 +810,33 @@ class QemuGuestAgentBasicCheck(QemuGuestAgentTest): else: self.test.fail("FS is not frozen,still can write in guest.") + def gagent_check_reboot_shutdown(self, test, params, env): + """ + Send "shutdown,reboot" command to guest agent + after FS freezed + :param test: kvm test object + :param params: Dictionary with the test parameters + :param env: Dictionary with test environment. + """ + vm = env.get_vm(params["main_vm"]) + vm.verify_alive() + gagent = self.gagent + gagent.fsfreeze() + try: + for mode in (gagent.SHUTDOWN_MODE_POWERDOWN, gagent.SHUTDOWN_MODE_REBOOT): + try: + gagent.shutdown(mode) + except guest_agent.VAgentCmdError as detail: + if not re.search('guest-shutdown has been disabled', str(detail)): + test.fail("This is not the desired information: ('%s')" % str(detail)) + else: + test.fail("agent shutdown command shouldn't succeed for freeze FS") + finally: + try: + gagent.fsthaw(check_status=False) + except Exception: + pass + @error_context.context_aware def _action_before_fsthaw(self, *args): pass