qemu-iotests: 300: Add test case for modifying persistence of bitmap
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>
This commit is contained in:
parent
6e9f21a2aa
commit
ca4bfec41d
@ -600,6 +600,99 @@ class TestCrossAliasMigration(TestDirtyBitmapMigration):
|
|||||||
self.verify_dest_has_all_bitmaps()
|
self.verify_dest_has_all_bitmaps()
|
||||||
self.verify_dest_error(None)
|
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__':
|
if __name__ == '__main__':
|
||||||
iotests.main(supported_protocols=['file'])
|
iotests.main(supported_protocols=['file'])
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.....................................
|
.......................................
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Ran 37 tests
|
Ran 39 tests
|
||||||
|
|
||||||
OK
|
OK
|
||||||
|
Loading…
Reference in New Issue
Block a user