提交 5ebba01e 编写于 作者: R root 提交者: Suqin Huang

Update driver_load and add more scenerios

Signed-off-by: NSuqin Huang <shuang@redhat.com>
上级 4810ac6a
......@@ -2,35 +2,70 @@
type = driver_load
kill_vm_on_error = yes
login_timeout = 240
driver_load_cmd = modprobe DRIVER_ID
driver_unload_cmd = modprobe -r DRIVER_ID
repeats = 1
variants:
- nic_device:
- with_nic:
no e1000
nics += " nic2"
nic_model_nic2 = e1000
driver_id_cmd = lsmod |grep virtio_net
nic_model_nic2 = rtl8139
nic_model_nic1 = virtio
driver_id_pattern = virtio_net
driver_id_cmd = lsmod | grep virtio_net
test_after_load = file_transfer
filesize = 100
transfer_timeout = 1000
Windows:
# The DevCon utility is a command-line utility that acts as an
# alternative to Device Manager. Please set up your windows guest
# following: http://support.microsoft.com/kb/311272/en-us
driver_id_cmd = C:\devcon.exe find * | find "VirtIO Ethernet Adapter"
driver_id_pattern = "(.*?):"
driver_load_cmd = C:\devcon.exe enable DRIVER_ID
driver_unload_cmd = C:\devcon.exe disable DRIVER_ID
- balloon_device:
driver_unload_cmd = modprobe -r virtio_net
driver_load_cmd = modprobe virtio_net
- with_balloon:
balloon = balloon0
balloon_dev_devid = balloon0
balloon_dev_add_bus = yes
driver_id_cmd = lsmod |grep virtio_balloon
driver_id_cmd = lsmod | grep virtio_balloon
driver_id_pattern = virtio_balloon
Windows:
driver_id_cmd = C:\devcon.exe find * | find "VirtIO Balloon Driver"
driver_id_pattern = "(.*?):"
driver_load_cmd = C:\devcon.exe enable DRIVER_ID
driver_unload_cmd = C:\devcon.exe disable DRIVER_ID
driver_unload_cmd = modprobe -r virtio_balloon
driver_load_cmd = modprobe virtio_balloon
- with_viorng:
virtio_rngs += " rng0"
backend_rng0 = rng-random
backend_type = passthrough
filename_passthrough = /dev/random
driver_id_cmd = lsmod | grep virtio_rng
driver_id_pattern = virtio_rng
driver_unload_cmd = modprobe -r virtio_rng
driver_load_cmd = modprobe virtio_rng
- with_block:
drive_format_image1 = ide
images += " stg"
image_name_stg = "images/storage"
image_size_stg = 4G
drive_format_stg = virtio
force_create_image_stg = yes
driver_id_cmd = lsmod | grep virtio_blk
driver_id_pattern = virtio_blk
driver_unload_cmd = modprobe -r virtio_rng
driver_load_cmd = modprobe virtio_rng
- with_vioscsi:
cd_format_fixed = ide
drive_format_image1 = ide
images += " stg"
image_name_stg = "images/storage"
image_size_stg = 4G
drive_format_stg = scsi-hd
force_create_image_stg = yes
driver_id_cmd = lsmod | grep virtio_scsi
driver_id_pattern = virtio_scsi
driver_unload_cmd = modprble -r virtio_scsi
driver_load_cmd = modprobe virtio_scsi
- with_vioserial:
driver_name = vioser
virtio_ports = "vs"
virtio_port_type = serialport
driver_id_cmd = lsmod | grep virtio_console
driver_id_pattern = virtio_console
driver_unload_cmd = modprobe -r virtio_console
driver_load_cmd = modprobe virtio_console
import logging
import re
import time
from autotest.client.shared import error
from virttest import utils_test
from virttest import utils_misc
@error.context_aware
......@@ -22,6 +21,41 @@ def run(test, params, env):
:param env: Dictionary with test environment.
"""
def load_driver(session, cmd, driver_id):
if params["os_type"] == "windows":
cmd = cmd.replace("DRIVER_ID", driver_id)
status, output = session.cmd_status_output(cmd)
if status != 0:
raise error.TestFail("failed to load driver, %s" % output)
if params["os_type"] == "windows":
if "device(s) are enabled" not in output:
raise error.TestFail("failed to load driver, %s" % output)
def unload_driver(session, cmd, driver_id):
if params["os_type"] == "windows":
cmd = cmd.replace("DRIVER_ID", driver_id)
status, output = session.cmd_status_output(cmd)
if status != 0:
raise error.TestFail("failed to unload driver, %s" % output)
if params["os_type"] == "windows":
if "device(s) disabled" not in output:
raise error.TestFail("failed to unload driver, %s" % output)
def check_driver(session, cmd, pattern):
output = session.cmd_output(cmd)
driver_id = re.findall(pattern, output)
if not driver_id:
raise error.TestFail("Didn't find driver info from guest %s"
% output)
driver_id = driver_id[0]
if params["os_type"] == "windows":
driver_id = '^&'.join(driver_id.split('&'))
return driver_id
error.context("Try to log into guest.", logging.info)
vm = env.get_vm(params["main_vm"])
vm.verify_alive()
......@@ -36,27 +70,28 @@ def run(test, params, env):
driver_load_cmd = params["driver_load_cmd"]
driver_unload_cmd = params["driver_unload_cmd"]
error.context("Get the driver module infor from guest.", logging.info)
output = session.cmd_output(driver_id_cmd)
driver_id = re.findall(driver_id_pattern, output)
if not driver_id:
raise error.TestError("Can not find driver module info from guest:"
"%s" % output)
driver_id = driver_id[0]
if params["os_type"] == "windows":
driver_id = '^&'.join(driver_id.split('&'))
driver_load_cmd = driver_load_cmd.replace("DRIVER_ID", driver_id)
driver_unload_cmd = driver_unload_cmd.replace("DRIVER_ID", driver_id)
devcon = params.get("devcon")
if devcon:
error.context("Copy devcon.exe from winutils.iso to C:\\")
copy_devcon_cmd = params.get("devcon") % \
utils_misc.get_winutils_vol(session)
session.cmd(copy_devcon_cmd)
for repeat in range(0, int(params.get("repeats", "1"))):
for repeat in range(0, int(params.get("repeats", 1))):
error.context("Unload and load the driver. Round %s" % repeat,
logging.info)
session.cmd(driver_unload_cmd)
error.context("Get driver info from guest", logging.info)
driver_id = check_driver(session, driver_id_cmd, driver_id_pattern)
error.context("Unload the driver", logging.info)
unload_driver(session, driver_unload_cmd, driver_id)
time.sleep(5)
session.cmd(driver_load_cmd)
error.context("Load the driver", logging.info)
load_driver(session, driver_load_cmd, driver_id)
time.sleep(5)
if params.get("test_after_load"):
test_after_load = params.get("test_after_load")
utils_test.run_virt_sub_test(test, params, env,
sub_type=test_after_load)
if params.get("test_after_load"):
test_after_load = params.get("test_after_load")
utils_test.run_virt_sub_test(test, params, env,
sub_type=test_after_load)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册