Commit 8a9cb864 authored by Max Reitz's avatar Max Reitz
Browse files

iotests: Test incremental backup after truncation



Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
Message-id: 20190805152840.32190-1-mreitz@redhat.com
Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
parent 4e4de222
Loading
Loading
Loading
Loading
+34 −4
Original line number Diff line number Diff line
@@ -212,24 +212,27 @@ class TestIncrementalBackupBase(iotests.QMPTestCase):
        return bitmap


    def prepare_backup(self, bitmap=None, parent=None):
    def prepare_backup(self, bitmap=None, parent=None, **kwargs):
        if bitmap is None:
            bitmap = self.bitmaps[-1]
        if parent is None:
            parent, _ = bitmap.last_target()

        target, _ = bitmap.new_target()
        self.img_create(target, bitmap.drive['fmt'], parent=parent)
        self.img_create(target, bitmap.drive['fmt'], parent=parent,
                        **kwargs)
        return target


    def create_incremental(self, bitmap=None, parent=None,
                           parentFormat=None, validate=True):
                           parentFormat=None, validate=True,
                           target=None):
        if bitmap is None:
            bitmap = self.bitmaps[-1]
        if parent is None:
            parent, _ = bitmap.last_target()

        if target is None:
            target = self.prepare_backup(bitmap, parent)
        res = self.do_qmp_backup(job_id=bitmap.drive['id'],
                                 device=bitmap.drive['id'],
@@ -572,6 +575,33 @@ class TestIncrementalBackup(TestIncrementalBackupBase):
                          'bitmap0', self.drives[0],
                          granularity=64000)

    def test_growing_before_backup(self):
        '''
        Test: Add a bitmap, truncate the image, write past the old
              end, do a backup.

        Incremental backup should not ignore dirty bits past the old
        image end.
        '''
        self.assert_no_active_block_jobs()

        self.create_anchor_backup()

        self.add_bitmap('bitmap0', self.drives[0])

        res = self.vm.qmp('block_resize', device=self.drives[0]['id'],
                          size=(65 * 1048576))
        self.assert_qmp(res, 'return', {})

        # Dirty the image past the old end
        self.vm.hmp_qemu_io(self.drives[0]['id'], 'write 64M 64k')

        target = self.prepare_backup(size='65M')
        self.create_incremental(target=target)

        self.vm.shutdown()
        self.check_backups()


class TestIncrementalBackupBlkdebug(TestIncrementalBackupBase):
    '''Incremental backup tests that utilize a BlkDebug filter on drive0.'''
+2 −2
Original line number Diff line number Diff line
............
.............
----------------------------------------------------------------------
Ran 12 tests
Ran 13 tests

OK