mirror of https://github.com/xemu-project/xemu.git
iotests: Add read-only test case to 030
This tests that the stream job exits cleanly (without abort) when the top node is read-only and cannot be reopened read/write. Signed-off-by: Max Reitz <mreitz@redhat.com> Message-id: 20190703172813.6868-12-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
13658cd70b
commit
0e4a0644bf
|
@ -36,7 +36,9 @@ class TestSingleDrive(iotests.QMPTestCase):
|
|||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
|
||||
qemu_io('-f', 'raw', '-c', 'write -P 0x1 0 512', backing_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 524288 512', mid_img)
|
||||
self.vm = iotests.VM().add_drive("blkdebug::" + test_img, "backing.node-name=mid")
|
||||
self.vm = iotests.VM().add_drive("blkdebug::" + test_img,
|
||||
"backing.node-name=mid," +
|
||||
"backing.backing.node-name=base")
|
||||
self.vm.launch()
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -151,6 +153,31 @@ class TestSingleDrive(iotests.QMPTestCase):
|
|||
result = self.vm.qmp('block-stream', device='mid')
|
||||
self.assert_qmp(result, 'error/desc', "Invalid job ID ''")
|
||||
|
||||
def test_read_only(self):
|
||||
# Create a new file that we can attach (we need a read-only top)
|
||||
with iotests.FilePath('ro-top.img') as ro_top_path:
|
||||
qemu_img('create', '-f', iotests.imgfmt, ro_top_path,
|
||||
str(self.image_len))
|
||||
|
||||
result = self.vm.qmp('blockdev-add',
|
||||
node_name='ro-top',
|
||||
driver=iotests.imgfmt,
|
||||
read_only=True,
|
||||
file={
|
||||
'driver': 'file',
|
||||
'filename': ro_top_path,
|
||||
'read-only': True
|
||||
},
|
||||
backing='mid')
|
||||
self.assert_qmp(result, 'return', {})
|
||||
|
||||
result = self.vm.qmp('block-stream', job_id='stream',
|
||||
device='ro-top', base_node='base')
|
||||
self.assert_qmp(result, 'error/desc', 'Block node is read-only')
|
||||
|
||||
result = self.vm.qmp('blockdev-del', node_name='ro-top')
|
||||
self.assert_qmp(result, 'return', {})
|
||||
|
||||
|
||||
class TestParallelOps(iotests.QMPTestCase):
|
||||
num_ops = 4 # Number of parallel block-stream operations
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
..........................
|
||||
...........................
|
||||
----------------------------------------------------------------------
|
||||
Ran 26 tests
|
||||
Ran 27 tests
|
||||
|
||||
OK
|
||||
|
|
Loading…
Reference in New Issue