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:
Hanna Reitz 2021-09-02 11:40:15 +02:00
parent e2ad17a62d
commit d8c2e47dbe
1 changed files with 25 additions and 18 deletions

View File

@ -20,11 +20,10 @@
# #
import os import os
import iotests
import time
import itertools import itertools
import operator import operator
import re import re
import iotests
from iotests import qemu_img, qemu_img_create, Timeout 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 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): class TestDirtyBitmapMigration(iotests.QMPTestCase):
def tearDown(self): def tearDown(self):
self.vm_a.shutdown() self.vm_a.shutdown()
@ -62,21 +67,16 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
params['persistent'] = True params['persistent'] = True
result = vm.qmp('block-dirty-bitmap-add', **params) result = vm.qmp('block-dirty-bitmap-add', **params)
self.assert_qmp(result, 'return', {}); 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']
def check_bitmap(self, vm, sha256): def check_bitmap(self, vm, sha256):
result = vm.qmp('x-debug-block-dirty-bitmap-sha256', result = vm.qmp('x-debug-block-dirty-bitmap-sha256',
node='drive0', name='bitmap0') node='drive0', name='bitmap0')
if sha256: if sha256:
self.assert_qmp(result, 'return/sha256', sha256); self.assert_qmp(result, 'return/sha256', sha256)
else: else:
self.assert_qmp(result, 'error/desc', 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): def do_test_migration_resume_source(self, persistent, migrate_bitmaps):
granularity = 512 granularity = 512
@ -97,7 +97,7 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
self.add_bitmap(self.vm_a, granularity, persistent) self.add_bitmap(self.vm_a, granularity, persistent)
for r in regions: for r in regions:
self.vm_a.hmp_qemu_io('drive0', 'write %d %d' % r) 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) result = self.vm_a.qmp('migrate', uri=mig_cmd)
while True: while True:
@ -106,7 +106,7 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
break break
while True: while True:
result = self.vm_a.qmp('query-status') result = self.vm_a.qmp('query-status')
if (result['return']['status'] == 'postmigrate'): if result['return']['status'] == 'postmigrate':
break break
# test that bitmap is still here # test that bitmap is still here
@ -164,7 +164,7 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
self.add_bitmap(self.vm_a, granularity, persistent) self.add_bitmap(self.vm_a, granularity, persistent)
for r in regions: for r in regions:
self.vm_a.hmp_qemu_io('drive0', 'write %d %d' % r) 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: if pre_shutdown:
self.vm_a.shutdown() self.vm_a.shutdown()
@ -214,16 +214,22 @@ class TestDirtyBitmapMigration(iotests.QMPTestCase):
self.check_bitmap(self.vm_b, sha256 if persistent else False) 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) 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)): for cmb in list(itertools.product((True, False), repeat=5)):
name = ('_' if cmb[0] else '_not_') + 'persistent_' name = ('_' if cmb[0] else '_not_') + 'persistent_'
name += ('_' if cmb[1] else '_not_') + 'migbitmap_' name += ('_' if cmb[1] else '_not_') + 'migbitmap_'
name += '_online' if cmb[2] else '_offline' name += '_online' if cmb[2] else '_offline'
name += '_shared' if cmb[3] else '_nonshared' name += '_shared' if cmb[3] else '_nonshared'
if (cmb[4]): if cmb[4]:
name += '__pre_shutdown' name += '__pre_shutdown'
inject_test_case(TestDirtyBitmapMigration, name, 'do_test_migration', inject_test_case(TestDirtyBitmapMigration, name, 'do_test_migration',
@ -270,7 +276,8 @@ class TestDirtyBitmapBackingMigration(iotests.QMPTestCase):
self.assert_qmp(result, 'return', {}) self.assert_qmp(result, 'return', {})
# Check that the bitmaps are there # 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']: if 'node0' in node['node-name']:
self.assert_qmp(node, 'dirty-bitmaps[0]/name', 'bmap0') self.assert_qmp(node, 'dirty-bitmaps[0]/name', 'bmap0')
@ -287,7 +294,7 @@ class TestDirtyBitmapBackingMigration(iotests.QMPTestCase):
""" """
Continue the source after migration. 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', {}) self.assert_qmp(result, 'return', {})
with Timeout(10, 'Migration timeout'): with Timeout(10, 'Migration timeout'):