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:
parent
45ec78befb
commit
184c16d1ac
@ -16,6 +16,8 @@
|
|||||||
#include "qapi/qmp/qdict.h"
|
#include "qapi/qmp/qdict.h"
|
||||||
#include "qapi/qmp/qlist.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)
|
static bool look_for_drive0(QTestState *qts, const char *command, const char *key)
|
||||||
{
|
{
|
||||||
QDict *response;
|
QDict *response;
|
||||||
@ -40,6 +42,19 @@ static bool look_for_drive0(QTestState *qts, const char *command, const char *ke
|
|||||||
return found;
|
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)
|
static bool has_drive(QTestState *qts)
|
||||||
{
|
{
|
||||||
return look_for_drive0(qts, "query-block", "device");
|
return look_for_drive0(qts, "query-block", "device");
|
||||||
@ -208,6 +223,11 @@ static void test_drive_del_device_del(void)
|
|||||||
{
|
{
|
||||||
QTestState *qts;
|
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 */
|
/* Start with a drive used by a device that unplugs instantaneously */
|
||||||
qts = qtest_initf("-drive if=none,id=drive0,file=null-co://,"
|
qts = qtest_initf("-drive if=none,id=drive0,file=null-co://,"
|
||||||
"file.read-zeroes=on,format=raw"
|
"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 *arch = qtest_get_arch();
|
||||||
const char *machine_addition = "";
|
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) {
|
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
||||||
machine_addition = "-machine pc";
|
machine_addition = "-machine pc";
|
||||||
}
|
}
|
||||||
@ -256,6 +281,11 @@ static void test_cli_device_del_q35(void)
|
|||||||
{
|
{
|
||||||
QTestState *qts;
|
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
|
* -drive/-device and device_del. Start with a drive used by a
|
||||||
* device that unplugs after reset.
|
* device that unplugs after reset.
|
||||||
@ -277,6 +307,11 @@ static void test_empty_device_del(void)
|
|||||||
{
|
{
|
||||||
QTestState *qts;
|
QTestState *qts;
|
||||||
|
|
||||||
|
if (!has_device_builtin("virtio-scsi")) {
|
||||||
|
g_test_skip("Device virtio-scsi is not available");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* device_del with no drive plugged. */
|
/* device_del with no drive plugged. */
|
||||||
qts = qtest_initf("-device virtio-scsi-%s -device scsi-cd,id=dev0",
|
qts = qtest_initf("-device virtio-scsi-%s -device scsi-cd,id=dev0",
|
||||||
qvirtio_get_dev_type());
|
qvirtio_get_dev_type());
|
||||||
@ -291,6 +326,11 @@ static void test_device_add_and_del(void)
|
|||||||
const char *arch = qtest_get_arch();
|
const char *arch = qtest_get_arch();
|
||||||
const char *machine_addition = "";
|
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) {
|
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
||||||
machine_addition = "-machine pc";
|
machine_addition = "-machine pc";
|
||||||
}
|
}
|
||||||
@ -330,6 +370,11 @@ static void test_device_add_and_del_q35(void)
|
|||||||
{
|
{
|
||||||
QTestState *qts;
|
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
|
* -drive/device_add and device_del. Start with a drive used by a
|
||||||
* device that unplugs after reset.
|
* 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 *arch = qtest_get_arch();
|
||||||
const char *machine_addition = "";
|
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) {
|
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
||||||
machine_addition = "-machine pc";
|
machine_addition = "-machine pc";
|
||||||
}
|
}
|
||||||
@ -374,6 +424,11 @@ static void test_drive_add_device_add_and_del_q35(void)
|
|||||||
{
|
{
|
||||||
QTestState *qts;
|
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 "
|
qts = qtest_init("-machine q35 -device pcie-root-port,id=p1 "
|
||||||
"-device pcie-pci-bridge,bus=p1,id=b1");
|
"-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 *arch = qtest_get_arch();
|
||||||
const char *machine_addition = "";
|
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) {
|
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
||||||
machine_addition = "-machine pc";
|
machine_addition = "-machine pc";
|
||||||
}
|
}
|
||||||
@ -417,6 +477,11 @@ static void test_blockdev_add_device_add_and_del_q35(void)
|
|||||||
{
|
{
|
||||||
QTestState *qts;
|
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 "
|
qts = qtest_init("-machine q35 -device pcie-root-port,id=p1 "
|
||||||
"-device pcie-pci-bridge,bus=p1,id=b1");
|
"-device pcie-pci-bridge,bus=p1,id=b1");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user