Skip to content

Commit

Permalink
iotests: Add more "skip_if_unsupported" statements to the python tests
Browse files Browse the repository at this point in the history
The python code already contains a possibility to skip tests if the
corresponding driver is not available in the qemu binary - use it
in more spots to avoid that the tests are failing if the driver has
been disabled.

While we're at it, we can now also remove some of the old checks that
were using iotests.supports_quorum() - and which were apparently not
working as expected since the tests aborted instead of being skipped
when "quorum" was missing in the QEMU binary.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
huth authored and kevmw committed Jan 27, 2020
1 parent 8da7969 commit 9442beb
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 39 deletions.
4 changes: 1 addition & 3 deletions tests/qemu-iotests/030
Expand Up @@ -530,6 +530,7 @@ class TestQuorum(iotests.QMPTestCase):
children = []
backing = []

@iotests.skip_if_unsupported(['quorum'])
def setUp(self):
opts = ['driver=quorum', 'vote-threshold=2']

Expand Down Expand Up @@ -560,9 +561,6 @@ class TestQuorum(iotests.QMPTestCase):
os.remove(img)

def test_stream_quorum(self):
if not iotests.supports_quorum():
return

self.assertNotEqual(qemu_io('-f', iotests.imgfmt, '-rU', '-c', 'map', self.children[0]),
qemu_io('-f', iotests.imgfmt, '-rU', '-c', 'map', self.backing[0]),
'image file map matches backing file before streaming')
Expand Down
2 changes: 2 additions & 0 deletions tests/qemu-iotests/040
Expand Up @@ -106,6 +106,7 @@ class TestSingleDrive(ImageCommitTestCase):
self.assertEqual(-1, qemu_io('-f', 'raw', '-c', 'read -P 0xab 0 524288', backing_img).find("verification failed"))
self.assertEqual(-1, qemu_io('-f', 'raw', '-c', 'read -P 0xef 524288 524288', backing_img).find("verification failed"))

@iotests.skip_if_unsupported(['throttle'])
def test_commit_with_filter_and_quit(self):
result = self.vm.qmp('object-add', qom_type='throttle-group', id='tg')
self.assert_qmp(result, 'return', {})
Expand All @@ -125,6 +126,7 @@ class TestSingleDrive(ImageCommitTestCase):
self.has_quit = True

# Same as above, but this time we add the filter after starting the job
@iotests.skip_if_unsupported(['throttle'])
def test_commit_plus_filter_and_quit(self):
result = self.vm.qmp('object-add', qom_type='throttle-group', id='tg')
self.assert_qmp(result, 'return', {})
Expand Down
39 changes: 3 additions & 36 deletions tests/qemu-iotests/041
Expand Up @@ -871,6 +871,7 @@ class TestRepairQuorum(iotests.QMPTestCase):
image_len = 1 * 1024 * 1024 # MB
IMAGES = [ quorum_img1, quorum_img2, quorum_img3 ]

@iotests.skip_if_unsupported(['quorum'])
def setUp(self):
self.vm = iotests.VM()

Expand All @@ -891,9 +892,8 @@ class TestRepairQuorum(iotests.QMPTestCase):
#assemble the quorum block device from the individual files
args = { "driver": "quorum", "node-name": "quorum0",
"vote-threshold": 2, "children": [ "img0", "img1", "img2" ] }
if iotests.supports_quorum():
result = self.vm.qmp("blockdev-add", **args)
self.assert_qmp(result, 'return', {})
result = self.vm.qmp("blockdev-add", **args)
self.assert_qmp(result, 'return', {})


def tearDown(self):
Expand All @@ -906,9 +906,6 @@ class TestRepairQuorum(iotests.QMPTestCase):
pass

def test_complete(self):
if not iotests.supports_quorum():
return

self.assert_no_active_block_jobs()

result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
Expand All @@ -925,9 +922,6 @@ class TestRepairQuorum(iotests.QMPTestCase):
'target image does not match source after mirroring')

def test_cancel(self):
if not iotests.supports_quorum():
return

self.assert_no_active_block_jobs()

result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
Expand All @@ -942,9 +936,6 @@ class TestRepairQuorum(iotests.QMPTestCase):
self.vm.shutdown()

def test_cancel_after_ready(self):
if not iotests.supports_quorum():
return

self.assert_no_active_block_jobs()

result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
Expand All @@ -961,9 +952,6 @@ class TestRepairQuorum(iotests.QMPTestCase):
'target image does not match source after mirroring')

def test_pause(self):
if not iotests.supports_quorum():
return

self.assert_no_active_block_jobs()

result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
Expand All @@ -989,9 +977,6 @@ class TestRepairQuorum(iotests.QMPTestCase):
'target image does not match source after mirroring')

def test_medium_not_found(self):
if not iotests.supports_quorum():
return

if iotests.qemu_default_machine != 'pc':
return

Expand All @@ -1003,19 +988,13 @@ class TestRepairQuorum(iotests.QMPTestCase):
self.assert_qmp(result, 'error/class', 'GenericError')

def test_image_not_found(self):
if not iotests.supports_quorum():
return

result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
sync='full', node_name='repair0', replaces='img1',
mode='existing', target=quorum_repair_img,
format=iotests.imgfmt)
self.assert_qmp(result, 'error/class', 'GenericError')

def test_device_not_found(self):
if not iotests.supports_quorum():
return

result = self.vm.qmp('drive-mirror', job_id='job0',
device='nonexistent', sync='full',
node_name='repair0',
Expand All @@ -1024,37 +1003,25 @@ class TestRepairQuorum(iotests.QMPTestCase):
self.assert_qmp(result, 'error/class', 'GenericError')

def test_wrong_sync_mode(self):
if not iotests.supports_quorum():
return

result = self.vm.qmp('drive-mirror', device='quorum0', job_id='job0',
node_name='repair0',
replaces='img1',
target=quorum_repair_img, format=iotests.imgfmt)
self.assert_qmp(result, 'error/class', 'GenericError')

def test_no_node_name(self):
if not iotests.supports_quorum():
return

result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
sync='full', replaces='img1',
target=quorum_repair_img, format=iotests.imgfmt)
self.assert_qmp(result, 'error/class', 'GenericError')

def test_nonexistent_replaces(self):
if not iotests.supports_quorum():
return

result = self.vm.qmp('drive-mirror', job_id='job0', device='quorum0',
sync='full', node_name='repair0', replaces='img77',
target=quorum_repair_img, format=iotests.imgfmt)
self.assert_qmp(result, 'error/class', 'GenericError')

def test_after_a_quorum_snapshot(self):
if not iotests.supports_quorum():
return

result = self.vm.qmp('blockdev-snapshot-sync', node_name='img1',
snapshot_file=quorum_snapshot_file,
snapshot_node_name="snap1");
Expand Down
2 changes: 2 additions & 0 deletions tests/qemu-iotests/245
Expand Up @@ -478,6 +478,7 @@ class TestBlockdevReopen(iotests.QMPTestCase):
# This test verifies that we can't change the children of a block
# device during a reopen operation in a way that would create
# cycles in the node graph
@iotests.skip_if_unsupported(['blkverify'])
def test_graph_cycles(self):
opts = []

Expand Down Expand Up @@ -534,6 +535,7 @@ class TestBlockdevReopen(iotests.QMPTestCase):
self.assert_qmp(result, 'return', {})

# Misc reopen tests with different block drivers
@iotests.skip_if_unsupported(['quorum', 'throttle'])
def test_misc_drivers(self):
####################
###### quorum ######
Expand Down

0 comments on commit 9442beb

Please sign in to comment.