tests/qtest: drive_del-test: Skip tests that require missing devices

Signed-off-by: Fabiano Rosas <farosas@suse.de>
Message-Id: <20230208194700.11035-9-farosas@suse.de>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Fabiano Rosas 2023-02-08 16:46:56 -03:00 committed by Thomas Huth
parent 45ec78befb
commit 184c16d1ac

View File

@ -16,6 +16,8 @@
#include "qapi/qmp/qdict.h"
#include "qapi/qmp/qlist.h"
static const char *qvirtio_get_dev_type(void);
static bool look_for_drive0(QTestState *qts, const char *command, const char *key)
{
QDict *response;
@ -40,6 +42,19 @@ static bool look_for_drive0(QTestState *qts, const char *command, const char *ke
return found;
}
/*
* This covers the possible absence of a device due to QEMU build
* options.
*/
static bool has_device_builtin(const char *dev)
{
gchar *device = g_strdup_printf("%s-%s", dev, qvirtio_get_dev_type());
bool rc = qtest_has_device(device);
g_free(device);
return rc;
}
static bool has_drive(QTestState *qts)
{
return look_for_drive0(qts, "query-block", "device");
@ -208,6 +223,11 @@ static void test_drive_del_device_del(void)
{
QTestState *qts;
if (!has_device_builtin("virtio-scsi")) {
g_test_skip("Device virtio-scsi is not available");
return;
}
/* Start with a drive used by a device that unplugs instantaneously */
qts = qtest_initf("-drive if=none,id=drive0,file=null-co://,"
"file.read-zeroes=on,format=raw"
@ -232,6 +252,11 @@ static void test_cli_device_del(void)
const char *arch = qtest_get_arch();
const char *machine_addition = "";
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
machine_addition = "-machine pc";
}
@ -256,6 +281,11 @@ static void test_cli_device_del_q35(void)
{
QTestState *qts;
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
/*
* -drive/-device and device_del. Start with a drive used by a
* device that unplugs after reset.
@ -277,6 +307,11 @@ static void test_empty_device_del(void)
{
QTestState *qts;
if (!has_device_builtin("virtio-scsi")) {
g_test_skip("Device virtio-scsi is not available");
return;
}
/* device_del with no drive plugged. */
qts = qtest_initf("-device virtio-scsi-%s -device scsi-cd,id=dev0",
qvirtio_get_dev_type());
@ -291,6 +326,11 @@ static void test_device_add_and_del(void)
const char *arch = qtest_get_arch();
const char *machine_addition = "";
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
machine_addition = "-machine pc";
}
@ -330,6 +370,11 @@ static void test_device_add_and_del_q35(void)
{
QTestState *qts;
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
/*
* -drive/device_add and device_del. Start with a drive used by a
* device that unplugs after reset.
@ -352,6 +397,11 @@ static void test_drive_add_device_add_and_del(void)
const char *arch = qtest_get_arch();
const char *machine_addition = "";
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
machine_addition = "-machine pc";
}
@ -374,6 +424,11 @@ static void test_drive_add_device_add_and_del_q35(void)
{
QTestState *qts;
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
qts = qtest_init("-machine q35 -device pcie-root-port,id=p1 "
"-device pcie-pci-bridge,bus=p1,id=b1");
@ -395,6 +450,11 @@ static void test_blockdev_add_device_add_and_del(void)
const char *arch = qtest_get_arch();
const char *machine_addition = "";
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
machine_addition = "-machine pc";
}
@ -417,6 +477,11 @@ static void test_blockdev_add_device_add_and_del_q35(void)
{
QTestState *qts;
if (!has_device_builtin("virtio-blk")) {
g_test_skip("Device virtio-blk is not available");
return;
}
qts = qtest_init("-machine q35 -device pcie-root-port,id=p1 "
"-device pcie-pci-bridge,bus=p1,id=b1");