mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
Block device write-verify test.
This test imports a ram disk device as a physical device into a domU. The domU initialises the ram disk with data from /dev/urandom and calculates the md5 checksum of the data (using tee as it is written so as to avoid reading it back from the device which might potentially mask problems). The domU is stopped and the md5 checksum of the data on the device is calculated by dom0. The test succeeds if the checksums match, indicating that all the data written by domU was sucessfully committed to the device. This patch also enables tee in BusyBox on the ramdisk and increments the xm-test version number to 0.8.0. The patch also installs the block-integrity tests in the default test set so they get executed. Signed-off-by: Harry Butterworth <butterwo@uk.ibm.com> Signed-off-by: Ewan Mellor <ewan@xensource.com>
This commit is contained in:
1 parent
1a59e1d7a7
commit
7218286f52
5 files changed
+69
-4
No files matched your search
@@ -1,7 +1,7 @@
|
||||
# xm-test configure.ac input script
|
||||
|
||||
# Basic header information
|
||||
AC_INIT([xm-test], [0.7.1])
|
||||
AC_INIT([xm-test], [0.8.0])
|
||||
AM_INIT_AUTOMAKE([1.7 foreign])
|
||||
|
||||
# Check for dependencies
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
block-create
|
||||
block-destroy
|
||||
block-list
|
||||
block-integrity
|
||||
console
|
||||
create
|
||||
destroy
|
||||
|
||||
@@ -127,8 +127,8 @@ CONFIG_STTY=y
|
||||
CONFIG_SYNC=y
|
||||
CONFIG_TAIL=y
|
||||
CONFIG_FEATURE_FANCY_TAIL=n
|
||||
CONFIG_TEE=n
|
||||
CONFIG_FEATURE_TEE_USE_BLOCK_IO=n
|
||||
CONFIG_TEE=y
|
||||
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
|
||||
CONFIG_TEST=y
|
||||
|
||||
#
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# Copyright (C) International Business Machines Corp., 2006
|
||||
# Author: Harry Butterworth <butterwo@uk.ibm.com>
|
||||
|
||||
# This test imports a ram disk device as a physical device into a domU.
|
||||
# The domU initialises the ram disk with data from /dev/urandom and calculates
|
||||
# the md5 checksum of the data (using tee as it is written so as to avoid
|
||||
# reading it back from the device which might potentially mask problems).
|
||||
# The domU is stopped and the md5 checksum of the data on the device is
|
||||
# calculated by dom0. The test succeeds if the checksums match, indicating
|
||||
# that all the data written by domU was sucessfully committed to the device.
|
||||
|
||||
import re
|
||||
|
||||
from XmTestLib import *
|
||||
from XmTestLib.block_utils import *
|
||||
|
||||
if ENABLE_HVM_SUPPORT:
|
||||
SKIP("Block-attach not supported for HVM domains")
|
||||
|
||||
domain = XmTestDomain()
|
||||
|
||||
try:
|
||||
console = domain.start()
|
||||
except DomainError, e:
|
||||
FAIL(str(e))
|
||||
|
||||
console.setHistorySaveCmds(value=True)
|
||||
|
||||
block_attach(domain, "phy:ram1", "hda1")
|
||||
|
||||
console.setTimeout(120)
|
||||
|
||||
try:
|
||||
run = console.runCmd("dd if=/dev/urandom bs=512 count=`cat /sys/block/hda1/size` | tee /dev/hda1 | md5sum")
|
||||
except ConsoleError, e:
|
||||
FAIL(str(e))
|
||||
|
||||
domU_md5sum_match = re.search(r"^[\dA-Fa-f]{32}", run["output"])
|
||||
|
||||
domain.closeConsole()
|
||||
|
||||
domain.stop()
|
||||
|
||||
s, o = traceCommand("md5sum /dev/ram1")
|
||||
|
||||
dom0_md5sum_match = re.search(r"^[\dA-Fa-f]{32}", o)
|
||||
|
||||
if domU_md5sum_match == None:
|
||||
FAIL("Failed to get md5sum of data written in domU.")
|
||||
|
||||
if dom0_md5sum_match == None:
|
||||
FAIL("Failed to get md5sum of data read back in dom0.")
|
||||
|
||||
if verbose:
|
||||
print "md5sum domU:"
|
||||
print domU_md5sum_match.group()
|
||||
print "md5sum dom0:"
|
||||
print dom0_md5sum_match.group()
|
||||
|
||||
if domU_md5sum_match.group() != dom0_md5sum_match.group():
|
||||
FAIL("MISCOMPARE: data read in dom0 did not match data written by domU.")
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
TESTS = 01_block_device_read_verify.test
|
||||
TESTS = 01_block_device_read_verify.test \
|
||||
02_block_device_write_verify.test
|
||||
|
||||
XFAIL_TESTS =
|
||||
|
||||
|
||||