migrate-bitmaps-test: Fix pylint warnings
There are a couple of things pylint takes issue with: - The "time" import is unused - The import order (iotests should come last) - get_bitmap_hash() doesn't use @self and so should be a function - Semicolons at the end of some lines - Parentheses after "if" - Some lines are too long (80 characters instead of 79) - inject_test_case()'s @name parameter shadows a top-level @name variable - "lambda self: mc(self)" were equivalent to just "mc", but in inject_test_case(), it is not equivalent, so add a comment and disable the warning locally - Always put two empty lines after a function - f'exec: cat > /dev/null' does not need to be an f-string Fix them. Signed-off-by: Hanna Reitz <hreitz@redhat.com> Message-Id: <20210902094017.32902-4-hreitz@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
This commit is contained in:
parent
e2ad17a62d
commit
d8c2e47dbe
@ -20,11 +20,10 @@
|
||||
#
|
||||
|
||||
import os
|
||||
import iotests
|
||||
import time
|
||||
import itertools
|
||||
import operator
|
||||
import re
|
||||
import iotests
|
||||
from iotests import qemu_img, qemu_img_create, Timeout
|
||||
|
||||
|
||||
@ -37,6 +36,12 @@ mig_cmd = 'exec: cat > ' + mig_file
|
||||
incoming_cmd = 'exec: cat ' + mig_file
|
||||
|
||||
|
||||
def get_bitmap_hash(vm):
|
||||
result = vm.qmp('x-debug-block-dirty-bitmap-sha256',
|
||||
node='drive0', name='bitmap0')
|
||||
return result['return']['sha256']
|
||||
|
||||
|
||||
class TestDirtyBitmapMigration(iotests.QMPTestCase):
|
||||
def tearDown(self):
|
||||
self.vm_a.shutdown()
|
||||
@ -62,21 +67,16 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
|
||||
params['persistent'] = True
|
||||
|
||||
result = vm.qmp('block-dirty-bitmap-add', **params)
|
||||
self.assert_qmp(result, 'return', {});
|
||||
|
||||
def get_bitmap_hash(self, vm):
|
||||
result = vm.qmp('x-debug-block-dirty-bitmap-sha256',
|
||||
node='drive0', name='bitmap0')
|
||||
return result['return']['sha256']
|
||||
self.assert_qmp(result, 'return', {})
|
||||
|
||||
def check_bitmap(self, vm, sha256):
|
||||
result = vm.qmp('x-debug-block-dirty-bitmap-sha256',
|
||||
node='drive0', name='bitmap0')
|
||||
if sha256:
|
||||
self.assert_qmp(result, 'return/sha256', sha256);
|
||||
self.assert_qmp(result, 'return/sha256', sha256)
|
||||
else:
|
||||
self.assert_qmp(result, 'error/desc',
|
||||
"Dirty bitmap 'bitmap0' not found");
|
||||
"Dirty bitmap 'bitmap0' not found")
|
||||
|
||||
def do_test_migration_resume_source(self, persistent, migrate_bitmaps):
|
||||
granularity = 512
|
||||
@ -97,7 +97,7 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
|
||||
self.add_bitmap(self.vm_a, granularity, persistent)
|
||||
for r in regions:
|
||||
self.vm_a.hmp_qemu_io('drive0', 'write %d %d' % r)
|
||||
sha256 = self.get_bitmap_hash(self.vm_a)
|
||||
sha256 = get_bitmap_hash(self.vm_a)
|
||||
|
||||
result = self.vm_a.qmp('migrate', uri=mig_cmd)
|
||||
while True:
|
||||
@ -106,7 +106,7 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
|
||||
break
|
||||
while True:
|
||||
result = self.vm_a.qmp('query-status')
|
||||
if (result['return']['status'] == 'postmigrate'):
|
||||
if result['return']['status'] == 'postmigrate':
|
||||
break
|
||||
|
||||
# test that bitmap is still here
|
||||
@ -164,7 +164,7 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
|
||||
self.add_bitmap(self.vm_a, granularity, persistent)
|
||||
for r in regions:
|
||||
self.vm_a.hmp_qemu_io('drive0', 'write %d %d' % r)
|
||||
sha256 = self.get_bitmap_hash(self.vm_a)
|
||||
sha256 = get_bitmap_hash(self.vm_a)
|
||||
|
||||
if pre_shutdown:
|
||||
self.vm_a.shutdown()
|
||||
@ -214,16 +214,22 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
|
||||
self.check_bitmap(self.vm_b, sha256 if persistent else False)
|
||||
|
||||
|
||||
def inject_test_case(klass, name, method, *args, **kwargs):
|
||||
def inject_test_case(klass, suffix, method, *args, **kwargs):
|
||||
mc = operator.methodcaller(method, *args, **kwargs)
|
||||
setattr(klass, 'test_' + method + name, lambda self: mc(self))
|
||||
# We want to add a function attribute to `klass`, so that it is
|
||||
# correctly converted to a method on instantiation. The
|
||||
# methodcaller object `mc` is a callable, not a function, so we
|
||||
# need the lambda to turn it into a function.
|
||||
# pylint: disable=unnecessary-lambda
|
||||
setattr(klass, 'test_' + method + suffix, lambda self: mc(self))
|
||||
|
||||
|
||||
for cmb in list(itertools.product((True, False), repeat=5)):
|
||||
name = ('_' if cmb[0] else '_not_') + 'persistent_'
|
||||
name += ('_' if cmb[1] else '_not_') + 'migbitmap_'
|
||||
name += '_online' if cmb[2] else '_offline'
|
||||
name += '_shared' if cmb[3] else '_nonshared'
|
||||
if (cmb[4]):
|
||||
if cmb[4]:
|
||||
name += '__pre_shutdown'
|
||||
|
||||
inject_test_case(TestDirtyBitmapMigration, name, 'do_test_migration',
|
||||
@ -270,7 +276,8 @@ class TestDirtyBitmapBackingMigration(iotests.QMPTestCase):
|
||||
self.assert_qmp(result, 'return', {})
|
||||
|
||||
# Check that the bitmaps are there
|
||||
for node in self.vm.qmp('query-named-block-nodes', flat=True)['return']:
|
||||
nodes = self.vm.qmp('query-named-block-nodes', flat=True)['return']
|
||||
for node in nodes:
|
||||
if 'node0' in node['node-name']:
|
||||
self.assert_qmp(node, 'dirty-bitmaps[0]/name', 'bmap0')
|
||||
|
||||
@ -287,7 +294,7 @@ class TestDirtyBitmapBackingMigration(iotests.QMPTestCase):
|
||||
"""
|
||||
Continue the source after migration.
|
||||
"""
|
||||
result = self.vm.qmp('migrate', uri=f'exec: cat > /dev/null')
|
||||
result = self.vm.qmp('migrate', uri='exec: cat > /dev/null')
|
||||
self.assert_qmp(result, 'return', {})
|
||||
|
||||
with Timeout(10, 'Migration timeout'):
|
||||
|
Loading…
Reference in New Issue
Block a user