mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
qemu-iotests/199: increase postcopy period
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> Message-Id: <20200727194236.19551-7-vsementsov@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
31e3827913
commit
e80a4150a5
@ -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
|
||||
assert len(result['return'][0]['dirty-bitmaps']) == nb_bitmaps
|
||||
|
||||
# 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)
|
||||
# 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__':
|
||||
|
Loading…
Reference in New Issue
Block a user