iotests: Full mirror to existing non-zero image
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 <mreitz@redhat.com> Message-id: 20190724171239.8764-12-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
c2acc95bef
commit
9463ee1f5f
@ -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
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
........................................................................................
|
||||
..........................................................................................
|
||||
----------------------------------------------------------------------
|
||||
Ran 88 tests
|
||||
Ran 90 tests
|
||||
|
||||
OK
|
||||
|
Loading…
Reference in New Issue
Block a user