[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 06/21] qemu-iotests/199: increase postcopy period
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v4 06/21] qemu-iotests/199: increase postcopy period |
Date: |
Mon, 27 Jul 2020 22:42:21 +0300 |
The test wants to force a bitmap postcopy. Still, the resulting
postcopy period is very small. Let's increase it by adding more
bitmaps to migrate. Also, test disabled bitmaps migration.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Tested-by: Eric Blake <eblake@redhat.com>
---
tests/qemu-iotests/199 | 58 ++++++++++++++++++++++++++++--------------
1 file changed, 39 insertions(+), 19 deletions(-)
diff --git a/tests/qemu-iotests/199 b/tests/qemu-iotests/199
index da4dae01fb..d8532e49da 100755
--- a/tests/qemu-iotests/199
+++ b/tests/qemu-iotests/199
@@ -103,29 +103,45 @@ class
TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
def test_postcopy(self):
granularity = 512
+ nb_bitmaps = 15
- result = self.vm_a.qmp('block-dirty-bitmap-add', node='drive0',
- name='bitmap', granularity=granularity)
- self.assert_qmp(result, 'return', {})
+ for i in range(nb_bitmaps):
+ result = self.vm_a.qmp('block-dirty-bitmap-add', node='drive0',
+ name='bitmap{}'.format(i),
+ granularity=granularity)
+ self.assert_qmp(result, 'return', {})
result = self.vm_a.qmp('x-debug-block-dirty-bitmap-sha256',
- node='drive0', name='bitmap')
+ node='drive0', name='bitmap0')
empty_sha256 = result['return']['sha256']
- apply_discards(self.vm_a, discards1 + discards2)
+ apply_discards(self.vm_a, discards1)
result = self.vm_a.qmp('x-debug-block-dirty-bitmap-sha256',
- node='drive0', name='bitmap')
- sha256 = result['return']['sha256']
+ node='drive0', name='bitmap0')
+ discards1_sha256 = result['return']['sha256']
# Check, that updating the bitmap by discards works
- assert sha256 != empty_sha256
+ assert discards1_sha256 != empty_sha256
- result = self.vm_a.qmp('block-dirty-bitmap-clear', node='drive0',
- name='bitmap')
- self.assert_qmp(result, 'return', {})
+ # We want to calculate resulting sha256. Do it in bitmap0, so, disable
+ # other bitmaps
+ for i in range(1, nb_bitmaps):
+ result = self.vm_a.qmp('block-dirty-bitmap-disable', node='drive0',
+ name='bitmap{}'.format(i))
+ self.assert_qmp(result, 'return', {})
- apply_discards(self.vm_a, discards1)
+ apply_discards(self.vm_a, discards2)
+
+ result = self.vm_a.qmp('x-debug-block-dirty-bitmap-sha256',
+ node='drive0', name='bitmap0')
+ all_discards_sha256 = result['return']['sha256']
+
+ # Now, enable some bitmaps, to be updated during migration
+ for i in range(2, nb_bitmaps, 2):
+ result = self.vm_a.qmp('block-dirty-bitmap-enable', node='drive0',
+ name='bitmap{}'.format(i))
+ self.assert_qmp(result, 'return', {})
caps = [{'capability': 'dirty-bitmaps', 'state': True},
{'capability': 'events', 'state': True}]
@@ -145,6 +161,7 @@ class TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
event_resume = self.vm_b.event_wait('RESUME')
self.vm_b_events.append(event_resume)
+ # enabled bitmaps should be updated
apply_discards(self.vm_b, discards2)
match = {'data': {'status': 'completed'}}
@@ -158,7 +175,7 @@ class TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
downtime = event_dist(event_stop, event_resume)
postcopy_time = event_dist(event_resume, event_complete)
- # TODO: assert downtime * 10 < postcopy_time
+ assert downtime * 10 < postcopy_time
if debug:
print('downtime:', downtime)
print('postcopy_time:', postcopy_time)
@@ -166,12 +183,15 @@ class
TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
# 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']) == 1
-
- # Check content of migrated (and updated by new writes) bitmap
- result = self.vm_b.qmp('x-debug-block-dirty-bitmap-sha256',
- node='drive0', name='bitmap')
- self.assert_qmp(result, 'return/sha256', sha256)
+ assert len(result['return'][0]['dirty-bitmaps']) == 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)
if __name__ == '__main__':
--
2.21.0
- [PATCH v4 for-5.1 00/21] Fix error handling during bitmap postcopy, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 01/21] qemu-iotests/199: fix style, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 03/21] qemu-iotests/199: better catch postcopy time, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 02/21] qemu-iotests/199: drop extra constraints, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 04/21] qemu-iotests/199: improve performance: set bitmap by discard, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 05/21] qemu-iotests/199: change discard patterns, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 06/21] qemu-iotests/199: increase postcopy period,
Vladimir Sementsov-Ogievskiy <=
- [PATCH v4 08/21] migration/block-dirty-bitmap: rename state structure types, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 07/21] migration/block-dirty-bitmap: fix dirty_bitmap_mig_before_vm_start, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 09/21] migration/block-dirty-bitmap: rename dirty_bitmap_mig_cleanup, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 12/21] migration/block-dirty-bitmap: rename finish_lock to just lock, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 11/21] migration/block-dirty-bitmap: refactor state global variables, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 13/21] migration/block-dirty-bitmap: simplify dirty_bitmap_load_complete, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 15/21] migration/block-dirty-bitmap: relax error handling in incoming part, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 10/21] migration/block-dirty-bitmap: move mutex init to dirty_bitmap_mig_init, Vladimir Sementsov-Ogievskiy, 2020/07/27
- [PATCH v4 14/21] migration/block-dirty-bitmap: keep bitmap state for all bitmaps, Vladimir Sementsov-Ogievskiy, 2020/07/27