[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH 2/2] iotests: add 222 to test basic fleecing
From: |
John Snow |
Subject: |
Re: [Qemu-devel] [RFC PATCH 2/2] iotests: add 222 to test basic fleecing |
Date: |
Wed, 27 Jun 2018 01:51:59 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 06/26/2018 09:49 PM, Eric Blake wrote:
> On 06/26/2018 05:22 PM, John Snow wrote:
>> Signed-off-by: John Snow <address@hidden>
>> ---
>> tests/qemu-iotests/222 | 121
Probably would have helped to include 222.out, though.
>> +++++++++++++++++++++++++++++++++++++++++++++++
>> tests/qemu-iotests/group | 1 +
>> 2 files changed, 122 insertions(+)
>> create mode 100644 tests/qemu-iotests/222
>>
>> diff --git a/tests/qemu-iotests/222 b/tests/qemu-iotests/222
>> new file mode 100644
>> index 0000000000..133d10c351
>> --- /dev/null
>> +++ b/tests/qemu-iotests/222
>> @@ -0,0 +1,121 @@
>> +#!/usr/bin/env python
>> +#
>> +# This test covers the basic fleecing workflow.
>> +#
>> +# Copyright (C) 2018 Red Hat, Inc.
>> +# John helped, too.
>
> LOL.
>
>> +
>> +patterns = [("0x5d", "0", "64k"),
>> + ("0xd5", "1M", "64k"),
>> + ("0xdc", "32M", "64k"),
>> + ("0xcd", "67043328", "64k")] # 64M - 64K
>> +
>> +overwrite = [("0xab", "0", "64k"), # Full overwrite
>> + ("0xad", "1015808", "64k"), # Partial-left (1M-32K)
>> + ("0x1d", "33587200", "64k"), # Partial-right (32M+32K)
>> + ("0xea", "64M", "64k")] # Adjacent-right (64M)
>> +
>> +with iotests.FilePath('base.img') as base_img_path, \
>> + iotests.FilePath('fleece.img') as fleece_img_path, \
>> + iotests.FilePath('nbd.sock') as nbd_sock_path, \
>> + iotests.VM() as vm:
>
> Does python require \ even after ','?
>
Dunno. Cargo cult from 216.
> The test looks valid - you are definitely reading data over NBD from the
> point in time that you started the blockdev-backup job, even while the
> source image continues to be modified.
>
>> + 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:
>> + cmd = "read -P%s %s %s" % p
>> + log(cmd)
>> + assert qemu_io_silent('-r', '-f', 'raw', '-c', cmd, nbd_uri)
>> == 0
>
> Perhaps additional steps would be to then stop the NBD export, stop the
> block job, delete the tgtNode fleecing file, then stop qemu, and finally
> check that the overwritten patterns correctly show up in the source
> image (that is, also prove that we can tear down a job, and that the
> overwrites worked). And we may want to enhance this test (or use it as
> a starting point to copy into a new test) to play with persistent dirty
> bitmaps thrown into the mix as well. But what you have is already a
> great start to prevent regressions, so:
>
Good suggestions. I'm working toward throwing bitmaps in now, but
actually cleaning up the VM properly and stopping the NBD server and
testing some of the latter-half paths would be nice. This was just a bit
of an RFC to get the bits out there sooner rather than later.
> Reviewed-by: Eric Blake <address@hidden>
>
Too many changes I need to pepper in for v2, but thanks for the vote of
confidence :)