Message ID | d9c8e9827e9b6001b2dd1b92e64aab858e6d2a86.1613150869.git.pkrempa@redhat.com |
---|---|
State | New |
Headers | show |
Series | migration: dirty-bitmap: Allow control of bitmap persistence | expand |
On 2/12/21 11:34 AM, Peter Krempa wrote: > 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> > --- > tests/qemu-iotests/300 | 91 ++++++++++++++++++++++++++++++++++++++ > tests/qemu-iotests/300.out | 4 +- > 2 files changed, 93 insertions(+), 2 deletions(-) > > + 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') > + self.assert_qmp(result, 'return', {}) > + > + result = self.vm_b.qmp('blockdev-add', > + node_name='node-a', driver='null-co') The use of null-co with no mention of the read-zeroes option here is a (minor) semantic conflict with the proposal by Philippe to flip the default of that option (minor, because all it impacts would be the execution speed of the test) https://lists.gnu.org/archive/html/qemu-devel/2021-02/msg04027.html Not your fault, so I don't mind touching up your additions in the same manner Philippe proposed (which is safe regardless of whose patch lands first). diff --git i/tests/qemu-iotests/300 w/tests/qemu-iotests/300 index 9d4ec6a38195..63036f6a6e13 100755 --- i/tests/qemu-iotests/300 +++ w/tests/qemu-iotests/300 @@ -615,11 +615,13 @@ class TestAliasTransformMigration(TestDirtyBitmapMigration): # 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') + 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') + node_name='node-a', driver='null-co', + read_zeroes=False) self.assert_qmp(result, 'return', {}) bmaps_to_add = (('node-a', 'bmap-b'),
diff --git a/tests/qemu-iotests/300 b/tests/qemu-iotests/300 index 43264d883d..9d4ec6a381 100755 --- a/tests/qemu-iotests/300 +++ b/tests/qemu-iotests/300 @@ -600,6 +600,97 @@ 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') + self.assert_qmp(result, 'return', {}) + + result = self.vm_b.qmp('blockdev-add', + node_name='node-a', driver='null-co') + 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 cafb8161f7..12e9ab7d57 100644 --- a/tests/qemu-iotests/300.out +++ b/tests/qemu-iotests/300.out @@ -1,5 +1,5 @@ -..................................... +....................................... ---------------------------------------------------------------------- -Ran 37 tests +Ran 39 tests OK
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> --- tests/qemu-iotests/300 | 91 ++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/300.out | 4 +- 2 files changed, 93 insertions(+), 2 deletions(-) v3: new in series