[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v2 2/2] iotests: add 222 to test basic fleecing
From: |
Eric Blake |
Subject: |
Re: [Qemu-block] [PATCH v2 2/2] iotests: add 222 to test basic fleecing |
Date: |
Thu, 28 Jun 2018 13:17:00 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 06/28/2018 01:00 PM, John Snow wrote:
Signed-off-by: John Snow <address@hidden>
---
tests/qemu-iotests/222 | 149 +++++++++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/222.out | 60 ++++++++++++++++++
tests/qemu-iotests/group | 1 +
3 files changed, 210 insertions(+)
create mode 100644 tests/qemu-iotests/222
create mode 100644 tests/qemu-iotests/222.out
+iotests.verify_platform(['linux'])
+
+patterns = [("0x5d", "0", "64k"),
+ ("0xd5", "1M", "64k"),
+ ("0xdc", "32M", "64k"),
+ ("0xcd", "0x3ff0000", "64k")] # 64M - 64K
+
+overwrite = [("0xab", "0", "64k"), # Full overwrite
+ ("0xad", "0x00f8000", "64k"), # Partial-left (1M-32K)
+ ("0x1d", "0x2008000", "64k"), # Partial-right (32M+32K)
+ ("0xea", "0x3fe0000", "64k")] # Adjacent-left (64M - 128K)
+
+remainder = [("0xd5", "0x108000", "32K"), # Right-end of partial-left [1]
+ ("0xdc", "32M", "32k"), # Left-end of partial-right [2]
+ ("0xcd", "0x3ff0000", "64k")] # patterns[3]
What if you also add:
zeroes = [("0x00", "0x108000", "32K"), # Right-end of partial-left [1]
("0x00", "32M", "32k"), # Left-end of partial-right [2]
("0x00", "0x3ff0000", "64k")] # patterns[3]
then...
+ log('')
+ log('--- Sanity Check ---')
+ log('')
+
+ for p in patterns:
for p in (patterns + zeroes)
+ cmd = "read -P%s %s %s" % p
+ log(cmd)
+ assert qemu_io_silent('-r', '-f', 'raw', '-c', cmd, nbd_uri) == 0
+
+ log('')
+ log('--- Testing COW ---')
+ log('')
+
+ for p in overwrite:
+ cmd = "write -P%s %s %s" % p
+ log(cmd)
+ log(vm.hmp_qemu_io(srcNode, cmd))
+
+ log('')
+ log('--- Verifying Data ---')
+ log('')
+
+ for p in patterns:
for p in (patterns + zeroes)
+ cmd = "read -P%s %s %s" % p
+ log(cmd)
+ assert qemu_io_silent('-r', '-f', 'raw', '-c', cmd, nbd_uri) == 0
+
+ log('')
+ log('--- Cleanup ---')
+ log('')
+
+ #log(vm.hmp_qemu_io(srcNode, 'flush'))
+ log(vm.qmp('block-job-cancel', device=srcNode))
+ log(vm.qmp('nbd-server-stop'))
+ log(vm.qmp('blockdev-del', node_name=tgtNode))
+ vm.shutdown()
+
+ log('')
+ log('--- Confirming writes ---')
+ log('')
+
+ for p in (overwrite + remainder):
so that reads of both the fleeced point in time and of the final image
cover the same set of byte ranges.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org