提交 33e66293 编写于 作者: Y yama

qemu_guest_agent_hotplug.py: add hotplug/unplug guest agent device case

Signed-off-by: Nyama <yama@redhat.com>
上级 fd74708a
- qemu_guest_agent_hotplug: install setup image_copy unattended_install.cdrom single_driver_install.with_vioserial
only Fedora, RHEL, Windows
only x86_64,i386,ppc64,ppc64le
no Fedora.8, Fedora.9, Fedora.10, Fedora.11, Fedora.12, Fedora.13, Fedora.14, Fedora.15
type = qemu_guest_agent_hotplug
gagent_serial_type = virtio
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_status_cmd = "service qemu-guest-agent status"
gagent_pkg_check_cmd = "rpm -q qemu-guest-agent"
gagent_check_type = sync
extra_params += "-device virtio-serial-pci,id=virtio-serial0,bus=pci.0"
backend_char_plug = "socket"
id_char_plug = "serial0"
dev_driver = "virtserialport"
dev_id = "serial0"
Windows:
gagent_src_type = url
cdroms += " virtio"
cdrom_virtio = isos/windows/virtio-win.iso
i386:
qemu_ga_pkg = qemu-ga-x86.msi
x86_64:
qemu_ga_pkg = qemu-ga-x64.msi
gagent_download_cmd = "wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-qemu-ga/${qemu_ga_pkg} -P /tmp/"
gagent_install_cmd = "start /wait %s /quiet"
gagent_uninstall_cmd = "start /wait msiexec /uninstall %s /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}"
gagent_guest_dir = "C:\qemu-ga"
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"
......@@ -31,6 +31,12 @@ class BaseVirtTest(object):
self.params = params
if env:
self.env = env
start_vm = self.params["start_vm"]
self.start_vm = start_vm
if self.start_vm == "yes":
vm = self.env.get_vm(params["main_vm"])
vm.verify_alive()
self.vm = vm
def setup(self, test, params, env):
if test:
......@@ -215,13 +221,8 @@ class QemuGuestAgentTest(BaseVirtTest):
@error_context.context_aware
def setup(self, test, params, env):
BaseVirtTest.setup(self, test, params, env)
start_vm = params["start_vm"]
if (not self.vm) and (start_vm == "yes"):
vm = self.env.get_vm(params["main_vm"])
vm.verify_alive()
self.vm = vm
if self.start_vm == "yes":
session = self._get_session(params, self.vm)
if self._check_ga_pkg(session, params.get("gagent_pkg_check_cmd")):
logging.info("qemu-ga is already installed.")
else:
......@@ -240,11 +241,7 @@ class QemuGuestAgentTest(BaseVirtTest):
def run_once(self, test, params, env):
BaseVirtTest.run_once(self, test, params, env)
start_vm = params["start_vm"]
if (not self.vm) and (start_vm == "yes"):
vm = self.env.get_vm(params["main_vm"])
vm.verify_alive()
self.vm = vm
if self.start_vm == "yes":
self.gagent_verify(self.params, self.vm)
def cleanup(self, test, params, env):
......@@ -697,6 +694,7 @@ class QemuGuestAgentBasicCheck(QemuGuestAgentTest):
error_context.context("boot guest with disk '%s'" % disk_name, logging.info)
env_process.preprocess_vm(test, params, env, vm_name)
self.initialize(test, params, env)
self.setup(test, params, env)
timeout = float(params.get("login_timeout", 240))
session = self.vm.wait_for_login(timeout=timeout)
......@@ -943,13 +941,8 @@ class QemuGuestAgentBasicCheckWin(QemuGuestAgentBasicCheck):
@error_context.context_aware
def setup(self, test, params, env):
BaseVirtTest.setup(self, test, params, env)
start_vm = params["start_vm"]
if (not self.vm) and (start_vm == "yes"):
vm = self.env.get_vm(params["main_vm"])
vm.verify_alive()
self.vm = vm
if self.start_vm == "yes":
session = self._get_session(params, self.vm)
if self._check_ga_pkg(session, params.get("gagent_pkg_check_cmd")):
logging.info("qemu-ga is already installed.")
else:
......@@ -967,7 +960,7 @@ class QemuGuestAgentBasicCheckWin(QemuGuestAgentBasicCheck):
session.close()
args = [params.get("gagent_serial_type"), params.get("gagent_name")]
self.gagent_create(params, vm, *args)
self.gagent_create(params, self.vm, *args)
def run(test, params, env):
......
import logging
from virttest import error_context
from virttest.qemu_devices import qdevices
from qemu.tests.qemu_guest_agent import run as guest_agent_run
@error_context.context_aware
def run(test, params, env):
"""
hotplug guest agent device
:param test: kvm test object
:param params: Dictionary with the test parameters
:param env: Dictionary with test environment.
"""
def check_status_unplug(out, dev):
if out is True:
logging.debug("Unplug %s successfully" % dev)
else:
test.fail("Error occurred while unpluging %s" % dev)
vm = env.get_vm(params["main_vm"])
vm.verify_alive()
char_backend = params["backend_char_plug"]
char_id = params["id_char_plug"]
gagent_name = params["gagent_name"]
char_path = vm.get_virtio_port_filename(gagent_name)
params["path_char_plug"] = char_path
dev_driver = params["dev_driver"]
dev_id = params["dev_id"]
error_context.context("hotplug guest agent device", logging.info)
params_char_plug = params.object_params("char_plug")
chardev = qdevices.CharDevice(params=params_char_plug)
chardev.hotplug(vm.monitor)
device = qdevices.QDevice(dev_driver)
device.set_param("chardev", char_id)
device.set_param("id", dev_id)
device.set_param("name", gagent_name)
device.hotplug(vm.monitor)
error_context.context("install and start guest agent", logging.info)
guest_agent_run(test, params, env)
error_context.context("hot unplug guest agent device", logging.info)
device.unplug(vm.monitor)
device_status = device.verify_unplug("", vm.monitor)
check_status_unplug(device_status, "virtserialport")
chardev.unplug(vm.monitor)
chardev_status = chardev.verify_unplug("", vm.monitor)
check_status_unplug(chardev_status, "socket")
vm.verify_alive()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册