mirror of https://github.com/xemu-project/xemu.git
qemu-iotests: Test the reopening of overlay_bs in 'block-commit'
The 'block-commit' command needs the overlay image of 'top' to be opened in read-write mode in order to update the backing file string. If 'top' is not the active layer or its backing file then its overlay needs to be reopened during the block job. This is a test case for that scenario. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
3db2bd5508
commit
bcdce5a73c
|
@ -41,6 +41,7 @@ class ImageCommitTestCase(iotests.QMPTestCase):
|
|||
while not completed:
|
||||
for event in self.vm.get_qmp_events(wait=True):
|
||||
if event['event'] == 'BLOCK_JOB_COMPLETED':
|
||||
self.assert_qmp_absent(event, 'data/error')
|
||||
self.assert_qmp(event, 'data/type', 'commit')
|
||||
self.assert_qmp(event, 'data/device', 'drive0')
|
||||
self.assert_qmp(event, 'data/offset', event['data']['len'])
|
||||
|
@ -251,5 +252,34 @@ class TestSetSpeed(ImageCommitTestCase):
|
|||
class TestActiveZeroLengthImage(TestSingleDrive):
|
||||
image_len = 0
|
||||
|
||||
class TestReopenOverlay(ImageCommitTestCase):
|
||||
image_len = 1024 * 1024
|
||||
img0 = os.path.join(iotests.test_dir, '0.img')
|
||||
img1 = os.path.join(iotests.test_dir, '1.img')
|
||||
img2 = os.path.join(iotests.test_dir, '2.img')
|
||||
img3 = os.path.join(iotests.test_dir, '3.img')
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(self.img0, self.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img0, self.img1)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img1, self.img2)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img2, self.img3)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xab 0 128K', self.img1)
|
||||
self.vm = iotests.VM().add_drive(self.img3)
|
||||
self.vm.launch()
|
||||
|
||||
def tearDown(self):
|
||||
self.vm.shutdown()
|
||||
os.remove(self.img0)
|
||||
os.remove(self.img1)
|
||||
os.remove(self.img2)
|
||||
os.remove(self.img3)
|
||||
|
||||
# This tests what happens when the overlay image of the 'top' node
|
||||
# needs to be reopened in read-write mode in order to update the
|
||||
# backing image string.
|
||||
def test_reopen_overlay(self):
|
||||
self.run_commit_test(self.img1, self.img0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
iotests.main(supported_fmts=['qcow2', 'qed'])
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
........................
|
||||
.........................
|
||||
----------------------------------------------------------------------
|
||||
Ran 24 tests
|
||||
Ran 25 tests
|
||||
|
||||
OK
|
||||
|
|
Loading…
Reference in New Issue