[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 4/4] tests/qemu-iotests: add case for block-stream compres
From: |
Max Reitz |
Subject: |
Re: [PATCH v5 4/4] tests/qemu-iotests: add case for block-stream compress |
Date: |
Tue, 22 Oct 2019 11:28:29 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
On 20.10.19 22:37, Andrey Shinkevich wrote:
> Add a case to the iotest #030 that tests the 'compress' option for a
> block-stream job.
>
> Signed-off-by: Andrey Shinkevich <address@hidden>
> ---
> tests/qemu-iotests/030 | 34 +++++++++++++++++++++++++++++++++-
> tests/qemu-iotests/030.out | 4 ++--
> 2 files changed, 35 insertions(+), 3 deletions(-)
>
> diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
> index f3766f2..f33fd21 100755
> --- a/tests/qemu-iotests/030
> +++ b/tests/qemu-iotests/030
> @@ -21,7 +21,8 @@
> import time
> import os
> import iotests
> -from iotests import qemu_img, qemu_io
> +from iotests import qemu_img, qemu_io, qemu_img_pipe
> +import json
>
> backing_img = os.path.join(iotests.test_dir, 'backing.img')
> mid_img = os.path.join(iotests.test_dir, 'mid.img')
> @@ -956,6 +957,37 @@ class TestSetSpeed(iotests.QMPTestCase):
>
> self.cancel_and_wait(resume=True)
>
> +class TestCompressed(iotests.QMPTestCase):
> + allocated_clusters = 8
> +
> + def setUp(self):
> + qemu_img('create', '-f', iotests.imgfmt, backing_img, '1M')
> + qemu_img('create', '-f', iotests.imgfmt, '-o',
> + 'backing_file={}'.format(backing_img), test_img)
> + cluster_size = 0x10000
> + data_size = self.allocated_clusters * cluster_size
> + qemu_io('-c', 'write -P 0x1 0 {}'.format(data_size), backing_img)
> + self.vm = iotests.VM().add_drive(test_img, "compress=on")
I don’t think it makes sense to add a drive with compress=on to a VM.
If the VM writes to any cluster more than once, the request will fail.
> + self.vm.launch()
> +
> + def tearDown(self):
> + self.vm.shutdown()
> + os.remove(test_img)
> + os.remove(backing_img)
> +
> + def test_stream_compress(self):
> + self.assert_no_active_block_jobs()
> +
> + result = self.vm.qmp('block-stream', device='drive0')
> + self.assert_qmp(result, 'return', {})
In this example, it’s actually even a bit worse: The VM might be aware
that it may only write to each cluster exactly once. But if it writes
to any of the first eight clusters after the stream job as done so
(invisibly to the VM guest), it will get an error.
You could see that by adding a qemu-io write here and see that it fails.
(In practice you won’t because the error goes to stdout and that is
lost in Python tests).
Max
> + match = {'data': {'type': 'stream', 'device': 'drive0'}}
> + self.vm.event_wait(name='BLOCK_JOB_COMPLETED', match=match)
> + self.vm.shutdown()
> +
> + top = json.loads(qemu_img_pipe('check', '--output=json', test_img))
> + self.assertEqual(top['compressed-clusters'], self.allocated_clusters)
> +
> if __name__ == '__main__':
> iotests.main(supported_fmts=['qcow2', 'qed'],
> supported_protocols=['file'])
> diff --git a/tests/qemu-iotests/030.out b/tests/qemu-iotests/030.out
> index 6d9bee1..af8dac1 100644
> --- a/tests/qemu-iotests/030.out
> +++ b/tests/qemu-iotests/030.out
> @@ -1,5 +1,5 @@
> -...........................
> +............................
> ----------------------------------------------------------------------
> -Ran 27 tests
> +Ran 28 tests
>
> OK
>
signature.asc
Description: OpenPGP digital signature
- [PATCH v5 0/4] qcow2: advanced compression options, Andrey Shinkevich, 2019/10/20
- [PATCH v5 4/4] tests/qemu-iotests: add case for block-stream compress, Andrey Shinkevich, 2019/10/20
- Re: [PATCH v5 4/4] tests/qemu-iotests: add case for block-stream compress,
Max Reitz <=
- [PATCH v5 3/4] tests/qemu-iotests: add case to write compressed data of multiple clusters, Andrey Shinkevich, 2019/10/20
- [PATCH v5 2/4] qcow2: Allow writing compressed data of multiple clusters, Andrey Shinkevich, 2019/10/20
- [PATCH v5 1/4] block: support compressed write at generic layer, Andrey Shinkevich, 2019/10/20
- Re: [PATCH v5 1/4] block: support compressed write at generic layer, Max Reitz, 2019/10/22
- Re: [PATCH v5 1/4] block: support compressed write at generic layer, Andrey Shinkevich, 2019/10/22
- Re: [PATCH v5 1/4] block: support compressed write at generic layer, Vladimir Sementsov-Ogievskiy, 2019/10/22
- Re: [PATCH v5 1/4] block: support compressed write at generic layer, Max Reitz, 2019/10/22
- Re: [PATCH v5 1/4] block: support compressed write at generic layer, Vladimir Sementsov-Ogievskiy, 2019/10/22
- Re: [PATCH v5 1/4] block: support compressed write at generic layer, Max Reitz, 2019/10/22
- Re: [PATCH v5 1/4] block: support compressed write at generic layer, Andrey Shinkevich, 2019/10/22