[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 19/24] qemu-iotests/199: prepare for new test-cases addition
From: |
Eric Blake |
Subject: |
[PULL 19/24] qemu-iotests/199: prepare for new test-cases addition |
Date: |
Mon, 27 Jul 2020 15:55:38 -0500 |
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Move future common part to start_postcopy() method. Move checking
number of bitmaps to check_bitmap().
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Message-Id: <20200727194236.19551-19-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
---
tests/qemu-iotests/199 | 36 +++++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 13 deletions(-)
diff --git a/tests/qemu-iotests/199 b/tests/qemu-iotests/199
index d8532e49da00..355c0b288592 100755
--- a/tests/qemu-iotests/199
+++ b/tests/qemu-iotests/199
@@ -29,6 +29,8 @@ disk_b = os.path.join(iotests.test_dir, 'disk_b')
size = '256G'
fifo = os.path.join(iotests.test_dir, 'mig_fifo')
+granularity = 512
+nb_bitmaps = 15
GiB = 1024 * 1024 * 1024
@@ -61,6 +63,15 @@ def event_dist(e1, e2):
return event_seconds(e2) - event_seconds(e1)
+def check_bitmaps(vm, count):
+ result = vm.qmp('query-block')
+
+ if count == 0:
+ assert 'dirty-bitmaps' not in result['return'][0]
+ else:
+ assert len(result['return'][0]['dirty-bitmaps']) == count
+
+
class TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
def tearDown(self):
if debug:
@@ -101,10 +112,8 @@ class
TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
self.vm_a_events = []
self.vm_b_events = []
- def test_postcopy(self):
- granularity = 512
- nb_bitmaps = 15
-
+ def start_postcopy(self):
+ """ Run migration until RESUME event on target. Return this event. """
for i in range(nb_bitmaps):
result = self.vm_a.qmp('block-dirty-bitmap-add', node='drive0',
name='bitmap{}'.format(i),
@@ -119,10 +128,10 @@ class
TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
result = self.vm_a.qmp('x-debug-block-dirty-bitmap-sha256',
node='drive0', name='bitmap0')
- discards1_sha256 = result['return']['sha256']
+ self.discards1_sha256 = result['return']['sha256']
# Check, that updating the bitmap by discards works
- assert discards1_sha256 != empty_sha256
+ assert self.discards1_sha256 != empty_sha256
# We want to calculate resulting sha256. Do it in bitmap0, so, disable
# other bitmaps
@@ -135,7 +144,7 @@ class TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
result = self.vm_a.qmp('x-debug-block-dirty-bitmap-sha256',
node='drive0', name='bitmap0')
- all_discards_sha256 = result['return']['sha256']
+ self.all_discards_sha256 = result['return']['sha256']
# Now, enable some bitmaps, to be updated during migration
for i in range(2, nb_bitmaps, 2):
@@ -160,6 +169,10 @@ class
TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
event_resume = self.vm_b.event_wait('RESUME')
self.vm_b_events.append(event_resume)
+ return event_resume
+
+ def test_postcopy_success(self):
+ event_resume = self.start_postcopy()
# enabled bitmaps should be updated
apply_discards(self.vm_b, discards2)
@@ -180,18 +193,15 @@ class
TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
print('downtime:', downtime)
print('postcopy_time:', postcopy_time)
- # Assert that bitmap migration is finished (check that successor bitmap
- # is removed)
- result = self.vm_b.qmp('query-block')
- assert len(result['return'][0]['dirty-bitmaps']) == nb_bitmaps
+ check_bitmaps(self.vm_b, nb_bitmaps)
# Check content of migrated bitmaps. Still, don't waste time checking
# every bitmap
for i in range(0, nb_bitmaps, 5):
result = self.vm_b.qmp('x-debug-block-dirty-bitmap-sha256',
node='drive0', name='bitmap{}'.format(i))
- sha256 = discards1_sha256 if i % 2 else all_discards_sha256
- self.assert_qmp(result, 'return/sha256', sha256)
+ sha = self.discards1_sha256 if i % 2 else self.all_discards_sha256
+ self.assert_qmp(result, 'return/sha256', sha)
if __name__ == '__main__':
--
2.27.0
- [PULL 12/24] migration/block-dirty-bitmap: refactor state global variables, (continued)
- [PULL 12/24] migration/block-dirty-bitmap: refactor state global variables, Eric Blake, 2020/07/27
- [PULL 10/24] migration/block-dirty-bitmap: rename dirty_bitmap_mig_cleanup, Eric Blake, 2020/07/27
- [PULL 15/24] migration/block-dirty-bitmap: keep bitmap state for all bitmaps, Eric Blake, 2020/07/27
- [PULL 14/24] migration/block-dirty-bitmap: simplify dirty_bitmap_load_complete, Eric Blake, 2020/07/27
- [PULL 13/24] migration/block-dirty-bitmap: rename finish_lock to just lock, Eric Blake, 2020/07/27
- [PULL 16/24] migration/block-dirty-bitmap: relax error handling in incoming part, Eric Blake, 2020/07/27
- [PULL 17/24] migration/block-dirty-bitmap: cancel migration on shutdown, Eric Blake, 2020/07/27
- [PULL 18/24] migration/savevm: don't worry if bitmap migration postcopy failed, Eric Blake, 2020/07/27
- [PULL 20/24] qemu-iotests/199: check persistent bitmaps, Eric Blake, 2020/07/27
- [PULL 22/24] qemu-iotests/199: add source-killed case to bitmaps postcopy, Eric Blake, 2020/07/27
- [PULL 19/24] qemu-iotests/199: prepare for new test-cases addition,
Eric Blake <=
- [PULL 21/24] qemu-iotests/199: add early shutdown case to bitmaps postcopy, Eric Blake, 2020/07/27
- [PULL 23/24] iotests: Adjust which migration tests are quick, Eric Blake, 2020/07/27
- [PULL 24/24] migration: Fix typos in bitmap migration comments, Eric Blake, 2020/07/27
- Re: [PULL 00/24] bitmaps patches for -rc2, 2020-07-27, Peter Maydell, 2020/07/28