diff options
author | harry@localhost.localdomain <harry@localhost.localdomain> | 2006-05-19 16:30:21 +0100 |
---|---|---|
committer | harry@localhost.localdomain <harry@localhost.localdomain> | 2006-05-19 16:30:21 +0100 |
commit | 71fd91f9bacb0d3a625e12f959c0fa1e922fdd99 (patch) | |
tree | 9f58877e6f2308da8f10e0a0fb7494d02fe88827 /tools/xm-test/tests/block-integrity | |
parent | 9c8277a2d8bdfcd8022ba16b99dcbd1e3849beff (diff) | |
download | xen-71fd91f9bacb0d3a625e12f959c0fa1e922fdd99.tar.gz xen-71fd91f9bacb0d3a625e12f959c0fa1e922fdd99.tar.bz2 xen-71fd91f9bacb0d3a625e12f959c0fa1e922fdd99.zip |
Add a read-verify block device test to xm-test.
Diffstat (limited to 'tools/xm-test/tests/block-integrity')
-rw-r--r-- | tools/xm-test/tests/block-integrity/01_block_device_read_verify.py | 62 | ||||
-rw-r--r-- | tools/xm-test/tests/block-integrity/Makefile.am | 21 |
2 files changed, 83 insertions, 0 deletions
diff --git a/tools/xm-test/tests/block-integrity/01_block_device_read_verify.py b/tools/xm-test/tests/block-integrity/01_block_device_read_verify.py new file mode 100644 index 0000000000..add4c32b02 --- /dev/null +++ b/tools/xm-test/tests/block-integrity/01_block_device_read_verify.py @@ -0,0 +1,62 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2006 +# Author: Harry Butterworth <butterwo@uk.ibm.com> + +# This test initialises a ram disk in dom0 with data from /dev/urandom and +# then imports the ram disk device as a physical device into a domU. The md5 +# checksum of the data in the ramdisk is calculated in dom0 and also +# calculated by the domU reading the data through the blk frontend and +# backend drivers. The test succeeds if the checksums match indicating that +# the domU successfully read all the correct data from 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) + +traceCommand("cat /dev/urandom > /dev/ram1") + +s, o = traceCommand("md5sum /dev/ram1") + +dom0_md5sum_match = re.search(r"^[\dA-Fa-f]{32}", o) + +block_attach(domain, "phy:ram1", "hda1") + +try: + run = console.runCmd("md5sum /dev/hda1") +except ConsoleError, e: + FAIL(str(e)) + +domU_md5sum_match = re.search(r"^[\dA-Fa-f]{32}", run["output"]) + +domain.closeConsole() + +domain.stop() + +if dom0_md5sum_match == None: + FAIL("Failed to get md5sum of test ram disk in dom0.") + +if domU_md5sum_match == None: + FAIL("Failed to get md5sum of test ram disk in domU.") + +if verbose: + print "md5sum dom0:" + print dom0_md5sum_match.group() + print "md5sum domU:" + print domU_md5sum_match.group() + +if dom0_md5sum_match.group() != domU_md5sum_match.group(): + FAIL("MISCOMPARE: data read in domU did not match data provided by domO.") diff --git a/tools/xm-test/tests/block-integrity/Makefile.am b/tools/xm-test/tests/block-integrity/Makefile.am new file mode 100644 index 0000000000..c1d4b9cc7c --- /dev/null +++ b/tools/xm-test/tests/block-integrity/Makefile.am @@ -0,0 +1,21 @@ + +SUBDIRS = + +TESTS = 01_block_device_read_verify.test + +XFAIL_TESTS = + +EXTRA_DIST = $(TESTS) $(XFAIL_TESTS) + +TESTS_ENVIRONMENT=@TENV@ + +%.test: %.py + cp $< $@ + chmod +x $@ + +clean-local: am_config_clean-local + +am_config_clean-local: + rm -f *test + rm -f *log + rm -f *~ |