iotests: add test-case to 165 to test reopening qcow2 bitmaps to RW
Reopening bitmaps to RW was broken prior to previous commit. Check that it works now. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-id: 20190927122355.7344-4-vsementsov@virtuozzo.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
fcd6a4f42d
commit
5752f89a78
@ -43,10 +43,10 @@ class TestPersistentDirtyBitmap(iotests.QMPTestCase):
|
|||||||
os.remove(disk)
|
os.remove(disk)
|
||||||
|
|
||||||
def mkVm(self):
|
def mkVm(self):
|
||||||
return iotests.VM().add_drive(disk)
|
return iotests.VM().add_drive(disk, opts='node-name=node0')
|
||||||
|
|
||||||
def mkVmRo(self):
|
def mkVmRo(self):
|
||||||
return iotests.VM().add_drive(disk, opts='readonly=on')
|
return iotests.VM().add_drive(disk, opts='readonly=on,node-name=node0')
|
||||||
|
|
||||||
def getSha256(self):
|
def getSha256(self):
|
||||||
result = self.vm.qmp('x-debug-block-dirty-bitmap-sha256',
|
result = self.vm.qmp('x-debug-block-dirty-bitmap-sha256',
|
||||||
@ -102,6 +102,59 @@ class TestPersistentDirtyBitmap(iotests.QMPTestCase):
|
|||||||
|
|
||||||
self.vm.shutdown()
|
self.vm.shutdown()
|
||||||
|
|
||||||
|
def test_reopen_rw(self):
|
||||||
|
self.vm = self.mkVm()
|
||||||
|
self.vm.launch()
|
||||||
|
self.qmpAddBitmap()
|
||||||
|
|
||||||
|
# Calculate hashes
|
||||||
|
|
||||||
|
self.writeRegions(regions1)
|
||||||
|
sha256_1 = self.getSha256()
|
||||||
|
|
||||||
|
self.writeRegions(regions2)
|
||||||
|
sha256_2 = self.getSha256()
|
||||||
|
assert sha256_1 != sha256_2 # Otherwise, it's not very interesting.
|
||||||
|
|
||||||
|
result = self.vm.qmp('block-dirty-bitmap-clear', node='drive0',
|
||||||
|
name='bitmap0')
|
||||||
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
|
# Start with regions1
|
||||||
|
|
||||||
|
self.writeRegions(regions1)
|
||||||
|
assert sha256_1 == self.getSha256()
|
||||||
|
|
||||||
|
self.vm.shutdown()
|
||||||
|
|
||||||
|
self.vm = self.mkVmRo()
|
||||||
|
self.vm.launch()
|
||||||
|
|
||||||
|
assert sha256_1 == self.getSha256()
|
||||||
|
|
||||||
|
# Check that we are in RO mode and can't modify bitmap.
|
||||||
|
self.writeRegions(regions2)
|
||||||
|
assert sha256_1 == self.getSha256()
|
||||||
|
|
||||||
|
# Reopen to RW
|
||||||
|
result = self.vm.qmp('x-blockdev-reopen', **{
|
||||||
|
'node-name': 'node0',
|
||||||
|
'driver': iotests.imgfmt,
|
||||||
|
'file': {
|
||||||
|
'driver': 'file',
|
||||||
|
'filename': disk
|
||||||
|
},
|
||||||
|
'read-only': False
|
||||||
|
})
|
||||||
|
self.assert_qmp(result, 'return', {})
|
||||||
|
|
||||||
|
# Check that bitmap is reopened to RW and we can write to it.
|
||||||
|
self.writeRegions(regions2)
|
||||||
|
assert sha256_2 == self.getSha256()
|
||||||
|
|
||||||
|
self.vm.shutdown()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
iotests.main(supported_fmts=['qcow2'],
|
iotests.main(supported_fmts=['qcow2'],
|
||||||
supported_protocols=['file'])
|
supported_protocols=['file'])
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.
|
..
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
Ran 1 tests
|
Ran 2 tests
|
||||||
|
|
||||||
OK
|
OK
|
||||||
|
Loading…
Reference in New Issue
Block a user