[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of
From: |
Eric Blake |
Subject: |
[PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap |
Date: |
Fri, 12 Feb 2021 17:21:32 -0600 |
From: Peter Krempa <pkrempa@redhat.com>
Verify that the modification of the bitmap persistence over migration
which is controlled via BitmapMigrationBitmapAliasTransform works
properly.
Based on TestCrossAliasMigration
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Message-Id:
<d9c8e9827e9b6001b2dd1b92e64aab858e6d2a86.1613150869.git.pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
[eblake: Adjust test for explicit read_zeroes=False]
Signed-off-by: Eric Blake <eblake@redhat.com>
---
tests/qemu-iotests/300 | 93 ++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/300.out | 4 +-
2 files changed, 95 insertions(+), 2 deletions(-)
diff --git a/tests/qemu-iotests/300 b/tests/qemu-iotests/300
index 43264d883d79..63036f6a6e13 100755
--- a/tests/qemu-iotests/300
+++ b/tests/qemu-iotests/300
@@ -600,6 +600,99 @@ class TestCrossAliasMigration(TestDirtyBitmapMigration):
self.verify_dest_has_all_bitmaps()
self.verify_dest_error(None)
+class TestAliasTransformMigration(TestDirtyBitmapMigration):
+ """
+ Tests the 'transform' option which modifies bitmap persistence on
migration.
+ """
+
+ src_node_name = 'node-a'
+ dst_node_name = 'node-b'
+ src_bmap_name = 'bmap-a'
+ dst_bmap_name = 'bmap-b'
+
+ def setUp(self) -> None:
+ TestDirtyBitmapMigration.setUp(self)
+
+ # Now create another block device and let both have two bitmaps each
+ result = self.vm_a.qmp('blockdev-add',
+ node_name='node-b', driver='null-co',
+ read_zeroes=False)
+ self.assert_qmp(result, 'return', {})
+
+ result = self.vm_b.qmp('blockdev-add',
+ node_name='node-a', driver='null-co',
+ read_zeroes=False)
+ self.assert_qmp(result, 'return', {})
+
+ bmaps_to_add = (('node-a', 'bmap-b'),
+ ('node-b', 'bmap-a'),
+ ('node-b', 'bmap-b'))
+
+ for (node, bmap) in bmaps_to_add:
+ result = self.vm_a.qmp('block-dirty-bitmap-add',
+ node=node, name=bmap)
+ self.assert_qmp(result, 'return', {})
+
+ @staticmethod
+ def transform_mapping() -> BlockBitmapMapping:
+ return [
+ {
+ 'node-name': 'node-a',
+ 'alias': 'node-a',
+ 'bitmaps': [
+ {
+ 'name': 'bmap-a',
+ 'alias': 'bmap-a',
+ 'transform':
+ {
+ 'persistent': True
+ }
+ },
+ {
+ 'name': 'bmap-b',
+ 'alias': 'bmap-b'
+ }
+ ]
+ },
+ {
+ 'node-name': 'node-b',
+ 'alias': 'node-b',
+ 'bitmaps': [
+ {
+ 'name': 'bmap-a',
+ 'alias': 'bmap-a'
+ },
+ {
+ 'name': 'bmap-b',
+ 'alias': 'bmap-b'
+ }
+ ]
+ }
+ ]
+
+ def verify_dest_bitmap_state(self) -> None:
+ bitmaps = self.vm_b.query_bitmaps()
+
+ for node in bitmaps:
+ bitmaps[node] = sorted(((bmap['name'], bmap['persistent']) for
bmap in bitmaps[node]))
+
+ self.assertEqual(bitmaps,
+ {'node-a': [('bmap-a', True), ('bmap-b', False)],
+ 'node-b': [('bmap-a', False), ('bmap-b', False)]})
+
+ def test_transform_on_src(self) -> None:
+ self.set_mapping(self.vm_a, self.transform_mapping())
+
+ self.migrate()
+ self.verify_dest_bitmap_state()
+ self.verify_dest_error(None)
+
+ def test_transform_on_dst(self) -> None:
+ self.set_mapping(self.vm_b, self.transform_mapping())
+
+ self.migrate()
+ self.verify_dest_bitmap_state()
+ self.verify_dest_error(None)
if __name__ == '__main__':
iotests.main(supported_protocols=['file'])
diff --git a/tests/qemu-iotests/300.out b/tests/qemu-iotests/300.out
index cafb8161f7b1..12e9ab7d571b 100644
--- a/tests/qemu-iotests/300.out
+++ b/tests/qemu-iotests/300.out
@@ -1,5 +1,5 @@
-.....................................
+.......................................
----------------------------------------------------------------------
-Ran 37 tests
+Ran 39 tests
OK
--
2.30.1
- [PULL 0/5] bitmaps patches through 2021-02-12, Eric Blake, 2021/02/12
- [PULL 1/5] migration: dirty-bitmap: Use struct for alias map inner members, Eric Blake, 2021/02/12
- [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap,
Eric Blake <=
- Re: [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap, Kevin Wolf, 2021/02/15
- Re: [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap, Eric Blake, 2021/02/15
- Re: [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap, Kevin Wolf, 2021/02/15
- Re: [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap, Eric Blake, 2021/02/15
- Re: [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap, John Snow, 2021/02/15
- Re: [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap, Eric Blake, 2021/02/15
- Re: [PULL 3/5] qemu-iotests: 300: Add test case for modifying persistence of bitmap, John Snow, 2021/02/15
[PULL 4/5] block: return status from bdrv_append and friends, Eric Blake, 2021/02/12
[PULL 5/5] block: use return status of bdrv_append(), Eric Blake, 2021/02/12
[PULL 2/5] migration: dirty-bitmap: Allow control of bitmap persistence, Eric Blake, 2021/02/12