Signed-off-by: John Snow <js...@redhat.com> --- tests/qemu-iotests/112 | 45 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/112.out | 4 ++-- 2 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/tests/qemu-iotests/112 b/tests/qemu-iotests/112 index 31431ad..7d1a6ec 100644 --- a/tests/qemu-iotests/112 +++ b/tests/qemu-iotests/112 @@ -176,6 +176,51 @@ class TestIncrementalBackup(iotests.QMPTestCase): return True + # Create a bitmap and full backup *after* VM execution begins. + # Use transactions to accomplish a bitmap re-sync, then create + # an incremental backup. + def test_incremental_transaction(self): + bitmap0 = self.add_bitmap('bitmap0', 'drive0') + self.vm.hmp('c') + self.hmp_io_writes('drive0', (('0xab', 0, 512), + ('0xfe', '16M', '256k'), + ('0x64', '32736k', '64k'))) + bitmap1 = self.add_bitmap('bitmap1', 'drive0') + + result = self.vm.qmp('transaction', actions=[ + { + 'type': 'block-dirty-bitmap-clear', + 'data': { 'node': 'drive0', + 'name': 'bitmap0' }, + }, + { + 'type': 'block-dirty-bitmap-clear', + 'data': { 'node': 'drive0', + 'name': 'bitmap1' }, + }, + { + 'type': 'drive-backup', + 'data': { 'device': 'drive0', + 'sync': 'full', + 'format': iotests.imgfmt, + 'target': self.full_bak }, + } + ]) + self.assert_qmp(result, 'return', {}) + self.wait_until_completed() + self.files.append(self.full_bak) + self.check_full_backup() + + self.hmp_io_writes('drive0', (('0x9a', 0, 512), + ('0x55', '8M', '352k'), + ('0x78', '15872k', '1M'))) + # Both bitmaps should be in sync and create fully valid + # incremental backups + res1 = self.create_incremental(bitmap0) + res2 = self.create_incremental(bitmap1) + self.assertTrue(res1 and res2) + + def test_sync_dirty_bitmap_missing(self): self.assert_no_active_block_jobs() self.files.append(self.foo_img) diff --git a/tests/qemu-iotests/112.out b/tests/qemu-iotests/112.out index 8d7e996..89968f3 100644 --- a/tests/qemu-iotests/112.out +++ b/tests/qemu-iotests/112.out @@ -1,5 +1,5 @@ -... +.... ---------------------------------------------------------------------- -Ran 3 tests +Ran 4 tests OK -- 1.9.3