iotests/055: refactor compressed backup to vmdk

Instead of looping in each test, let's better refactor vmdk target case
as a subclass.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20200430124713.3067-6-vsementsov@virtuozzo.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2020-04-30 15:47:10 +03:00 committed by Kevin Wolf
parent 4b4083d53f
commit 8e8372944e
2 changed files with 39 additions and 35 deletions

View File

@ -450,10 +450,9 @@ class TestSingleTransaction(iotests.QMPTestCase):
self.assert_no_active_block_jobs() self.assert_no_active_block_jobs()
class TestDriveCompression(iotests.QMPTestCase): class TestCompressedToQcow2(iotests.QMPTestCase):
image_len = 64 * 1024 * 1024 # MB image_len = 64 * 1024 * 1024 # MB
fmt_supports_compression = [{'type': 'qcow2', 'args': ()}, target_fmt = {'type': 'qcow2', 'args': ()}
{'type': 'vmdk', 'args': ('-o', 'subformat=streamOptimized')}]
def tearDown(self): def tearDown(self):
self.vm.shutdown() self.vm.shutdown()
@ -463,19 +462,20 @@ class TestDriveCompression(iotests.QMPTestCase):
except OSError: except OSError:
pass pass
def do_prepare_drives(self, fmt, args, attach_target): def do_prepare_drives(self, attach_target):
self.vm = iotests.VM().add_drive('blkdebug::' + test_img) self.vm = iotests.VM().add_drive('blkdebug::' + test_img)
qemu_img('create', '-f', fmt, blockdev_target_img, qemu_img('create', '-f', self.target_fmt['type'], blockdev_target_img,
str(TestDriveCompression.image_len), *args) str(self.image_len), *self.target_fmt['args'])
if attach_target: if attach_target:
self.vm.add_drive(blockdev_target_img, self.vm.add_drive(blockdev_target_img,
img_format=fmt, interface="none") img_format=self.target_fmt['type'],
interface="none")
self.vm.launch() self.vm.launch()
def do_test_compress_complete(self, cmd, format, attach_target, **args): def do_test_compress_complete(self, cmd, attach_target, **args):
self.do_prepare_drives(format['type'], format['args'], attach_target) self.do_prepare_drives(attach_target)
self.assert_no_active_block_jobs() self.assert_no_active_block_jobs()
@ -486,21 +486,21 @@ class TestDriveCompression(iotests.QMPTestCase):
self.vm.shutdown() self.vm.shutdown()
self.assertTrue(iotests.compare_images(test_img, blockdev_target_img, self.assertTrue(iotests.compare_images(test_img, blockdev_target_img,
iotests.imgfmt, format['type']), iotests.imgfmt,
self.target_fmt['type']),
'target image does not match source after backup') 'target image does not match source after backup')
def test_complete_compress_drive_backup(self): def test_complete_compress_drive_backup(self):
for format in TestDriveCompression.fmt_supports_compression: self.do_test_compress_complete('drive-backup', False,
self.do_test_compress_complete('drive-backup', format, False, target=blockdev_target_img,
target=blockdev_target_img, mode='existing') mode='existing')
def test_complete_compress_blockdev_backup(self): def test_complete_compress_blockdev_backup(self):
for format in TestDriveCompression.fmt_supports_compression: self.do_test_compress_complete('blockdev-backup',
self.do_test_compress_complete('blockdev-backup', format, True, True, target='drive1')
target='drive1')
def do_test_compress_cancel(self, cmd, format, attach_target, **args): def do_test_compress_cancel(self, cmd, attach_target, **args):
self.do_prepare_drives(format['type'], format['args'], attach_target) self.do_prepare_drives(attach_target)
self.assert_no_active_block_jobs() self.assert_no_active_block_jobs()
@ -514,17 +514,16 @@ class TestDriveCompression(iotests.QMPTestCase):
self.vm.shutdown() self.vm.shutdown()
def test_compress_cancel_drive_backup(self): def test_compress_cancel_drive_backup(self):
for format in TestDriveCompression.fmt_supports_compression: self.do_test_compress_cancel('drive-backup', False,
self.do_test_compress_cancel('drive-backup', format, False, target=blockdev_target_img,
target=blockdev_target_img, mode='existing') mode='existing')
def test_compress_cancel_blockdev_backup(self): def test_compress_cancel_blockdev_backup(self):
for format in TestDriveCompression.fmt_supports_compression: self.do_test_compress_cancel('blockdev-backup', True,
self.do_test_compress_cancel('blockdev-backup', format, True, target='drive1')
target='drive1')
def do_test_compress_pause(self, cmd, format, attach_target, **args): def do_test_compress_pause(self, cmd, attach_target, **args):
self.do_prepare_drives(format['type'], format['args'], attach_target) self.do_prepare_drives(attach_target)
self.assert_no_active_block_jobs() self.assert_no_active_block_jobs()
@ -550,18 +549,23 @@ class TestDriveCompression(iotests.QMPTestCase):
self.vm.shutdown() self.vm.shutdown()
self.assertTrue(iotests.compare_images(test_img, blockdev_target_img, self.assertTrue(iotests.compare_images(test_img, blockdev_target_img,
iotests.imgfmt, format['type']), iotests.imgfmt,
self.target_fmt['type']),
'target image does not match source after backup') 'target image does not match source after backup')
def test_compress_pause_drive_backup(self): def test_compress_pause_drive_backup(self):
for format in TestDriveCompression.fmt_supports_compression: self.do_test_compress_pause('drive-backup', False,
self.do_test_compress_pause('drive-backup', format, False, target=blockdev_target_img,
target=blockdev_target_img, mode='existing') mode='existing')
def test_compress_pause_blockdev_backup(self): def test_compress_pause_blockdev_backup(self):
for format in TestDriveCompression.fmt_supports_compression: self.do_test_compress_pause('blockdev-backup', True,
self.do_test_compress_pause('blockdev-backup', format, True, target='drive1')
target='drive1')
class TestCompressedToVmdk(TestCompressedToQcow2):
target_fmt = {'type': 'vmdk', 'args': ('-o', 'subformat=streamOptimized')}
if __name__ == '__main__': if __name__ == '__main__':
iotests.main(supported_fmts=['raw', 'qcow2'], iotests.main(supported_fmts=['raw', 'qcow2'],

View File

@ -1,5 +1,5 @@
.............................. ....................................
---------------------------------------------------------------------- ----------------------------------------------------------------------
Ran 30 tests Ran 36 tests
OK OK