From 59fc5d844fe192494308d0f07507b712ec395129 Mon Sep 17 00:00:00 2001 From: John Snow Date: Fri, 17 Apr 2015 19:50:09 -0400 Subject: [PATCH] iotests: add incremental backup granularity tests Test what happens if you fiddle with the granularity. Reviewed-by: Max Reitz Signed-off-by: John Snow Reviewed-by: Stefan Hajnoczi Message-id: 1429314609-29776-22-git-send-email-jsnow@redhat.com Signed-off-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- tests/qemu-iotests/124 | 58 ++++++++++++++++++++++++++++++-------- tests/qemu-iotests/124.out | 4 +-- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/tests/qemu-iotests/124 b/tests/qemu-iotests/124 index 95f6de5379..3ee78cd1f1 100644 --- a/tests/qemu-iotests/124 +++ b/tests/qemu-iotests/124 @@ -158,11 +158,11 @@ class TestIncrementalBackup(iotests.QMPTestCase): self.assertTrue(res) - def add_bitmap(self, name, drive): + def add_bitmap(self, name, drive, **kwargs): bitmap = Bitmap(name, drive) self.bitmaps.append(bitmap) result = self.vm.qmp('block-dirty-bitmap-add', node=drive['id'], - name=bitmap.name) + name=bitmap.name, **kwargs) self.assert_qmp(result, 'return', {}) return bitmap @@ -212,16 +212,9 @@ class TestIncrementalBackup(iotests.QMPTestCase): self.vm.hmp_qemu_io(drive, 'flush') - def test_incremental_simple(self): - ''' - Test: Create and verify three incremental backups. - - Create a bitmap and a full backup before VM execution begins, - then create a series of three incremental backups "during execution," - i.e.; after IO requests begin modifying the drive. - ''' + def do_incremental_simple(self, **kwargs): self.create_anchor_backup() - self.add_bitmap('bitmap0', self.drives[0]) + self.add_bitmap('bitmap0', self.drives[0], **kwargs) # Sanity: Create a "hollow" incremental backup self.create_incremental() @@ -240,6 +233,37 @@ class TestIncrementalBackup(iotests.QMPTestCase): self.check_backups() + def test_incremental_simple(self): + ''' + Test: Create and verify three incremental backups. + + Create a bitmap and a full backup before VM execution begins, + then create a series of three incremental backups "during execution," + i.e.; after IO requests begin modifying the drive. + ''' + return self.do_incremental_simple() + + + def test_small_granularity(self): + ''' + Test: Create and verify backups made with a small granularity bitmap. + + Perform the same test as test_incremental_simple, but with a granularity + of only 32KiB instead of the present default of 64KiB. + ''' + return self.do_incremental_simple(granularity=32768) + + + def test_large_granularity(self): + ''' + Test: Create and verify backups made with a large granularity bitmap. + + Perform the same test as test_incremental_simple, but with a granularity + of 128KiB instead of the present default of 64KiB. + ''' + return self.do_incremental_simple(granularity=131072) + + def test_incremental_failure(self): '''Test: Verify backups made after a failure are correct. @@ -315,6 +339,18 @@ class TestIncrementalBackup(iotests.QMPTestCase): self.assert_qmp(result, 'error/class', 'GenericError') + def test_sync_dirty_bitmap_bad_granularity(self): + ''' + Test: Test what happens if we provide an improper granularity. + + The granularity must always be a power of 2. + ''' + self.assert_no_active_block_jobs() + self.assertRaises(AssertionError, self.add_bitmap, + 'bitmap0', self.drives[0], + granularity=64000) + + def tearDown(self): self.vm.shutdown() for bitmap in self.bitmaps: diff --git a/tests/qemu-iotests/124.out b/tests/qemu-iotests/124.out index 89968f35d7..2f7d3902f2 100644 --- a/tests/qemu-iotests/124.out +++ b/tests/qemu-iotests/124.out @@ -1,5 +1,5 @@ -.... +....... ---------------------------------------------------------------------- -Ran 4 tests +Ran 7 tests OK