提交 40b0f3a3 编写于 作者: Q Qingtang Zhou 提交者: Lucas Meneghel Rodrigues

qemu.tests.usb_storage: Do io test with format_disk script

Signed-off-by: NQingtang Zhou <qzhou@redhat.com>
上级 20b89882
......@@ -142,6 +142,23 @@
check_serial_option = yes
check_removable_option = yes
check_io_size_option = yes
# The following parameters will be overridden in guest-os config files.
create_partition_cmd = ""
format_cmd = "yes |mkfs $(readlink -f `ls /dev/disk/by-path/* | grep usb`)"
list_disk_cmd = ""
set_online_cmd = ""
mount_cmd = "mount $(readlink -f `ls /dev/disk/by-path/* | grep usb`) /media"
umount_cmd = "umount $(readlink -f `ls /dev/disk/by-path/* | grep usb`)"
testfile_name = "/media/usb_storage-test.txt"
writefile_cmd = "out=%s;"
writefile_cmd += " python -c "print '$out'*10**4" > /tmp/usb_storage.in;"
writefile_cmd += " for size in 4K 16K 64K 256K; do"
writefile_cmd += " dd if=/tmp/usb_storage.in of=/media/out.$size bs=$size || exit 1;"
writefile_cmd += " md5sum /media/out.$size > /media/out.$size.md5;"
writefile_cmd += ' echo "md5sum -c /media/out.$size.md5 >/dev/null 2>&1" >> /media/md5chk.sh;'
writefile_cmd += " done;"
writefile_cmd += " echo $out > %s"
readfile_cmd = "sh /media/md5chk.sh && cat %s"
RHEL.3, RHEL.4, RHEL.5:
check_io_size_option = no
- usb_host:
......
import logging, re, uuid
from autotest.client.shared import error
from virttest import utils_test
@error.context_aware
......@@ -68,72 +69,8 @@ def run_usb_storage(test, params, env):
("\n".join(fail_log)))
@error.context_aware
def _do_io_test_guest(session):
blksizes = [ "4K", "16K", "64K", "256K" ]
output = session.cmd("fdisk -l")
if params["fdisk_string"] not in output:
for line in output.splitlines():
logging.debug(line)
raise error.TestFail("Could not detect the usb device on"
"fdisk output")
error.context("Formatting USB disk")
tmp_cmd = "readlink -f `ls /dev/disk/by-path/* | grep usb`"
devname = session.cmd(tmp_cmd).strip()
session.cmd("yes | mkfs %s" % devname,
timeout=int(params["format_timeout"]))
error.context("Mounting USB disk")
session.cmd("mount %s /mnt" % devname)
error.context("Creating comparison file")
c_file = '/tmp/usbfile'
session.cmd("dd if=/dev/urandom of=%s bs=1M count=1" % c_file)
error.context("Copying %s to USB disk" % c_file)
for s in blksizes:
u_file = "/mnt/usbfile-%s" % s
session.cmd("dd if=%s of=%s bs=%s" %
(c_file, u_file, s))
error.context("Unmounting USB disk before file comparison")
session.cmd("umount %s" % devname)
error.context("Mounting USB disk for file comparison")
session.cmd("mount %s /mnt" % devname)
error.context("Determining md5sum for file on root fs and in USB disk")
md5_root = session.cmd("md5sum %s" % c_file).strip()
md5_root = md5_root.split()[0]
for s in blksizes:
u_file = "/mnt/usbfile-%s" % s
md5_usb = session.cmd("md5sum %s" % u_file).strip()
md5_usb = md5_usb.split()[0]
if md5_root != md5_usb:
raise error.TestError("MD5 mismatch between file on root fs "
"and on USB disk [%s]" % u_file)
error.context("Unmounting USB disk after file comparison")
session.cmd("umount %s" % devname)
error.context("Checking if there are I/O error messages in dmesg")
output = session.get_command_output("dmesg -c")
io_error_msg = []
for line in output.splitlines():
if "Buffer I/O error" in line:
io_error_msg.append(line)
if re.search("reset \w+ speed USB device", line):
io_error_msg.append(line)
if io_error_msg:
e_msg = "IO error found on guest's dmesg when formatting USB device"
logging.error(e_msg)
for line in io_error_msg:
logging.error(line)
raise error.TestFail(e_msg)
utils_test.run_virt_sub_test(test, params, env, "format_disk")
@error.context_aware
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册