From 37c5f88c5c2da7268db07be3cda5643295bcb515 Mon Sep 17 00:00:00 2001 From: Xiangchun Fu Date: Mon, 31 Jul 2017 14:37:28 +0800 Subject: [PATCH] qemu_guest_agent: add new guest agent case 1.frozen guest FS 2.send shutdown agent cmd to guest 3.send reboot agent cmd to guest 4.send fsthaw cmd to guest Signed-off-by: Xiangchun Fu --- qemu/tests/cfg/qemu_guest_agent.cfg | 2 ++ qemu/tests/qemu_guest_agent.py | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/qemu/tests/cfg/qemu_guest_agent.cfg b/qemu/tests/cfg/qemu_guest_agent.cfg index c53156f5..c7956681 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 edaf438d..b4651cba 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 -- GitLab