提交 ba34ca1a 编写于 作者: X Xiaoling Gao

qemu_guest_agent: new case about stop/restart qemu-ga service in guest.

1.add gagent-stop function.
2.add case to stop/restart qemu-ga service repeat 100 times.
3.since gagent_start() function has changed, modify qemu-ga suspend file.
Signed-off-by: NXiaoling Gao <xiagao@redhat.com>
上级 58f960c2
......@@ -5,6 +5,7 @@
gagent_name = "org.qemu.guest_agent.0"
gagent_install_cmd = "yum install -y qemu-guest-agent"
gagent_start_cmd = "service qemu-guest-agent start"
gagent_stop_cmd = "service qemu-guest-agent stop"
gagent_status_cmd = "service qemu-guest-agent status"
gagent_pkg_check_cmd = "rpm -q qemu-guest-agent"
Windows:
......@@ -18,6 +19,7 @@
gagent_install_cmd = "start /wait C:\qemu-ga\${qemu_ga_pkg} /quiet"
gagent_uninstall_cmd = "start /wait msiexec /uninstall C:\qemu-ga\${qemu_ga_pkg} /quiet"
gagent_start_cmd = "net start qemu-ga"
gagent_stop_cmd = "net stop qemu-ga"
gagent_status_cmd = sc query qemu-ga |findstr "RUNNING"
gagent_pkg_check_cmd = wmic product get name |findstr "QEMU guest agent"
gagent_host_path = "/tmp/${qemu_ga_pkg}"
......@@ -25,6 +27,7 @@
gagent_remove_service_cmd = "net stop qemu-ga & del /f C:\qemu-ga\${qemu_ga_pkg} & echo done"
RHEL.6:
gagent_start_cmd = "service qemu-ga start"
gagent_stop_cmd = "service qemu-ga stop"
gagent_status_cmd = "service qemu-ga status"
variants:
- gagent_install:
......@@ -33,6 +36,9 @@
only Windows
gagent_check_type = install_uninstall
repeat_times = 50
- gagent_stop_start:
gagent_check_type = stop_start
repeat_times = 100
- check_sync:
gagent_check_type = sync
- check_powerdown:
......
......@@ -157,28 +157,35 @@ class QemuGuestAgentTest(BaseVirtTest):
"in VM '%s', detail: '%s'" % (vm.name, o))
@error_context.context_aware
def gagent_start(self, session, vm, *args):
def gagent_start(self, session, vm):
"""
Start qemu-guest-agent in guest,if start a running service,for rhel
guest return code is zero,for windows guest,return code is not zero.
Start qemu-guest-agent in guest.
:param session: use for sending cmd
:param env: Dictionary with test environment.
:param args: Start cmd.
:param vm: Virtual machine object.
"""
if args and isinstance(args, tuple):
gagent_start_cmd = args[0]
else:
raise error.TestError("Missing config 'gagent_start_cmd'")
if not gagent_start_cmd:
return
error_context.context("Try to start 'qemu-guest-agent'.", logging.info)
s, o = session.cmd_status_output(gagent_start_cmd)
error_context.context("Try to start qemu-ga service.", logging.info)
s, o = session.cmd_status_output(self.params["gagent_start_cmd"])
# if start a running service, for rhel guest return code is zero,
# for windows guest,return code is not zero
if s and "already been started" not in o:
raise error.TestFail("Could not start qemu-guest-agent in VM"
" '%s', detail: '%s'" % (vm.name, o))
self.test.fail("Could not start qemu-ga service in VM '%s',"
"detail: '%s'" % (vm.name, o))
@error_context.context_aware
def gagent_stop(self, session, vm):
"""
Stop qemu-guest-agent in guest.
:param session: use for sending cmd
:param vm: Virtual machine object.
:param args: Stop cmd.
"""
error_context.context("Try to stop qemu-ga service.", logging.info)
s, o = session.cmd_status_output(self.params["gagent_stop_cmd"])
# if stop a stopped service,for rhel guest return code is zero,
# for windows guest,return code is not zero.
if s and "is not started" not in o:
self.test.fail("Could not stop qemu-ga service in VM '%s', "
"detail: '%s'" % (vm.name, o))
@error_context.context_aware
def gagent_create(self, params, vm, *args):
......@@ -236,7 +243,7 @@ class QemuGuestAgentTest(BaseVirtTest):
logging.info("qemu-ga service is already running.")
else:
logging.info("qemu-ga service is not running.")
self.gagent_start(session, self.vm, *[params.get("gagent_start_cmd")])
self.gagent_start(session, self.vm)
session.close()
args = [params.get("gagent_serial_type"), params.get("gagent_name")]
......@@ -283,7 +290,7 @@ class QemuGuestAgentBasicCheck(QemuGuestAgentTest):
session = self._get_session(params, self.vm)
for i in xrange(repeats):
error_context.context("Install/uninstall qemu-ga pkg for the %sth time" % (i + 1),
error_context.context("Repeat: %s/%s" % (i + 1, repeats),
logging.info)
if self._check_ga_pkg(session, params.get("gagent_pkg_check_cmd")):
self.gagent_uninstall(session, self.vm, *[params.get("gagent_uninstall_cmd")])
......@@ -293,6 +300,32 @@ class QemuGuestAgentBasicCheck(QemuGuestAgentTest):
self.gagent_uninstall(session, self.vm, *[params.get("gagent_uninstall_cmd")])
session.close()
@error_context.context_aware
def gagent_check_stop_start(self, test, params, env):
"""
Repeat stop/restart qemu-ga service in guest.
:param test: kvm test object
:param params: Dictionary with the test parameters
:param env: Dictionary with test environment.
"""
repeats = int(params.get("repeat_times", 1))
logging.info("Repeat stop/restart qemu-ga service for %s times" % repeats)
if not self.vm:
self.vm = self.env.get_vm(params["main_vm"])
self.vm.verify_alive()
session = self._get_session(params, self.vm)
for i in xrange(repeats):
error_context.context("Repeat: %s/%s" % (i + 1, repeats),
logging.info)
self.gagent_stop(session, self.vm)
time.sleep(1)
self.gagent_start(session, self.vm)
time.sleep(1)
self.gagent_verify(params, self.vm)
session.close()
@error_context.context_aware
def gagent_check_sync(self, test, params, env):
"""
......@@ -915,7 +948,7 @@ class QemuGuestAgentBasicCheckWin(QemuGuestAgentBasicCheck):
logging.info("qemu-ga service is already running.")
else:
logging.info("qemu-ga service is not running.")
self.gagent_start(session, self.vm, *[params.get("gagent_start_cmd")])
self.gagent_start(session, self.vm)
session.close()
args = [params.get("gagent_serial_type"), params.get("gagent_name")]
......
......@@ -49,7 +49,9 @@ class QemuGASuspendTest(QemuGuestAgentTest):
# Reset guest agent object to None after guest reboot.
self.gagent = None
error.context("Check if guest agent work again.", logging.info)
self.gagent_start(params, self.vm, *[params.get("gagent_start_cmd")])
session = self._get_session(params, self.vm)
self.gagent_start(session, self.vm)
session.close()
args = [params.get("gagent_serial_type"), params.get("gagent_name")]
self.gagent_create(params, self.vm, *args)
self.gagent.verify_responsive()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册