[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/17] iotests: Full mirror to existing non-zero imag
From: |
Max Reitz |
Subject: |
[Qemu-devel] [PULL 12/17] iotests: Full mirror to existing non-zero image |
Date: |
Mon, 19 Aug 2019 18:17:18 +0200 |
The result of a sync=full mirror should always be the equal to the
input. Therefore, existing images should be treated as potentially
non-zero and thus should be explicitly initialized to be zero
beforehand.
Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>
---
tests/qemu-iotests/041 | 62 +++++++++++++++++++++++++++++++++++---
tests/qemu-iotests/041.out | 4 +--
2 files changed, 60 insertions(+), 6 deletions(-)
diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
index 26bf1701eb..8bc8f81db7 100755
--- a/tests/qemu-iotests/041
+++ b/tests/qemu-iotests/041
@@ -741,8 +741,15 @@ class TestUnbackedSource(iotests.QMPTestCase):
def setUp(self):
qemu_img('create', '-f', iotests.imgfmt, test_img,
str(TestUnbackedSource.image_len))
- self.vm = iotests.VM().add_drive(test_img)
+ self.vm = iotests.VM()
self.vm.launch()
+ result = self.vm.qmp('blockdev-add', node_name='drive0',
+ driver=iotests.imgfmt,
+ file={
+ 'driver': 'file',
+ 'filename': test_img,
+ })
+ self.assert_qmp(result, 'return', {})
def tearDown(self):
self.vm.shutdown()
@@ -751,7 +758,7 @@ class TestUnbackedSource(iotests.QMPTestCase):
def test_absolute_paths_full(self):
self.assert_no_active_block_jobs()
- result = self.vm.qmp('drive-mirror', device='drive0',
+ result = self.vm.qmp('drive-mirror', job_id='drive0', device='drive0',
sync='full', target=target_img,
mode='absolute-paths')
self.assert_qmp(result, 'return', {})
@@ -760,7 +767,7 @@ class TestUnbackedSource(iotests.QMPTestCase):
def test_absolute_paths_top(self):
self.assert_no_active_block_jobs()
- result = self.vm.qmp('drive-mirror', device='drive0',
+ result = self.vm.qmp('drive-mirror', job_id='drive0', device='drive0',
sync='top', target=target_img,
mode='absolute-paths')
self.assert_qmp(result, 'return', {})
@@ -769,13 +776,60 @@ class TestUnbackedSource(iotests.QMPTestCase):
def test_absolute_paths_none(self):
self.assert_no_active_block_jobs()
- result = self.vm.qmp('drive-mirror', device='drive0',
+ result = self.vm.qmp('drive-mirror', job_id='drive0', device='drive0',
sync='none', target=target_img,
mode='absolute-paths')
self.assert_qmp(result, 'return', {})
self.complete_and_wait()
self.assert_no_active_block_jobs()
+ def test_existing_full(self):
+ qemu_img('create', '-f', iotests.imgfmt, target_img,
+ str(self.image_len))
+ qemu_io('-c', 'write -P 42 0 64k', target_img)
+
+ self.assert_no_active_block_jobs()
+ result = self.vm.qmp('drive-mirror', job_id='drive0', device='drive0',
+ sync='full', target=target_img, mode='existing')
+ self.assert_qmp(result, 'return', {})
+ self.complete_and_wait()
+ self.assert_no_active_block_jobs()
+
+ result = self.vm.qmp('blockdev-del', node_name='drive0')
+ self.assert_qmp(result, 'return', {})
+
+ self.assertTrue(iotests.compare_images(test_img, target_img),
+ 'target image does not match source after mirroring')
+
+ def test_blockdev_full(self):
+ qemu_img('create', '-f', iotests.imgfmt, target_img,
+ str(self.image_len))
+ qemu_io('-c', 'write -P 42 0 64k', target_img)
+
+ result = self.vm.qmp('blockdev-add', node_name='target',
+ driver=iotests.imgfmt,
+ file={
+ 'driver': 'file',
+ 'filename': target_img,
+ })
+ self.assert_qmp(result, 'return', {})
+
+ self.assert_no_active_block_jobs()
+ result = self.vm.qmp('blockdev-mirror', job_id='drive0',
device='drive0',
+ sync='full', target='target')
+ self.assert_qmp(result, 'return', {})
+ self.complete_and_wait()
+ self.assert_no_active_block_jobs()
+
+ result = self.vm.qmp('blockdev-del', node_name='drive0')
+ self.assert_qmp(result, 'return', {})
+
+ result = self.vm.qmp('blockdev-del', node_name='target')
+ self.assert_qmp(result, 'return', {})
+
+ self.assertTrue(iotests.compare_images(test_img, target_img),
+ 'target image does not match source after mirroring')
+
class TestGranularity(iotests.QMPTestCase):
image_len = 10 * 1024 * 1024 # MB
diff --git a/tests/qemu-iotests/041.out b/tests/qemu-iotests/041.out
index e071d0b261..2c448b4239 100644
--- a/tests/qemu-iotests/041.out
+++ b/tests/qemu-iotests/041.out
@@ -1,5 +1,5 @@
-........................................................................................
+..........................................................................................
----------------------------------------------------------------------
-Ran 88 tests
+Ran 90 tests
OK
--
2.21.0
- [Qemu-devel] [PULL 06/17] block: Use bdrv_has_zero_init_truncate(), (continued)
- [Qemu-devel] [PULL 06/17] block: Use bdrv_has_zero_init_truncate(), Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 07/17] qcow2: Fix .bdrv_has_zero_init(), Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 08/17] vdi: Fix .bdrv_has_zero_init(), Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 09/17] vhdx: Fix .bdrv_has_zero_init(), Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 10/17] iotests: Convert to preallocated encrypted qcow2, Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 11/17] iotests: Test convert -n to pre-filled image, Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 14/17] vmdk: Make block_status recurse for flat extents, Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 15/17] vpc: Do not return RAW from block_status, Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 13/17] vdi: Make block_status recurse for fixed images, Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 17/17] doc: Preallocation does not require writing zeroes, Max Reitz, 2019/08/19
- [Qemu-devel] [PULL 12/17] iotests: Full mirror to existing non-zero image,
Max Reitz <=
- [Qemu-devel] [PULL 16/17] iotests: Fix 141 when run with qed, Max Reitz, 2019/08/19
- Re: [Qemu-devel] [PULL 00/17] Block patches, Peter Maydell, 2019/08/20