Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
tests/qtest: Fix tests when no KVM or TCG are present
It is possible to have a build with both TCG and KVM disabled due to
Xen requiring the i386 and x86_64 binaries to be present in an aarch64
host.

If we build with --disable-tcg on the aarch64 host, we will end-up
with a QEMU binary (x86) that does not support TCG nor KVM.

Skip tests that crash or hang in the above scenario. Do not include
any test cases if TCG and KVM are missing.

Make sure that calls to qtest_has_accel are placed after g_test_init
in similar fashion to commit ae4b01b ("tests: Ensure TAP version is
printed before other messages") to avoid TAP parsing errors.

Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20230426180013.14814-9-farosas@suse.de
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
Fabiano Rosas authored and pm215 committed May 2, 2023
1 parent 20cf68e commit 0c1ae3f
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 6 deletions.
11 changes: 9 additions & 2 deletions tests/qtest/bios-tables-test.c
Expand Up @@ -2045,8 +2045,7 @@ static void test_acpi_virt_oem_fields(void)
int main(int argc, char *argv[])
{
const char *arch = qtest_get_arch();
const bool has_kvm = qtest_has_accel("kvm");
const bool has_tcg = qtest_has_accel("tcg");
bool has_kvm, has_tcg;
char *v_env = getenv("V");
int ret;

Expand All @@ -2056,6 +2055,14 @@ int main(int argc, char *argv[])

g_test_init(&argc, &argv, NULL);

has_kvm = qtest_has_accel("kvm");
has_tcg = qtest_has_accel("tcg");

if (!has_tcg && !has_kvm) {
g_test_skip("No KVM or TCG accelerator available");
return 0;
}

if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
ret = boot_sector_init(disk);
if (ret) {
Expand Down
5 changes: 5 additions & 0 deletions tests/qtest/boot-serial-test.c
Expand Up @@ -287,6 +287,11 @@ int main(int argc, char *argv[])

g_test_init(&argc, &argv, NULL);

if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
g_test_skip("No KVM or TCG accelerator available");
return 0;
}

for (i = 0; tests[i].arch != NULL; i++) {
if (g_str_equal(arch, tests[i].arch) &&
qtest_has_machine(tests[i].machine)) {
Expand Down
9 changes: 8 additions & 1 deletion tests/qtest/migration-test.c
Expand Up @@ -2477,7 +2477,7 @@ static bool kvm_dirty_ring_supported(void)

int main(int argc, char **argv)
{
bool has_kvm;
bool has_kvm, has_tcg;
bool has_uffd;
const char *arch;
g_autoptr(GError) err = NULL;
Expand All @@ -2486,6 +2486,13 @@ int main(int argc, char **argv)
g_test_init(&argc, &argv, NULL);

has_kvm = qtest_has_accel("kvm");
has_tcg = qtest_has_accel("tcg");

if (!has_tcg && !has_kvm) {
g_test_skip("No KVM or TCG accelerator available");
return 0;
}

has_uffd = ufd_version_check();
arch = qtest_get_arch();

Expand Down
8 changes: 7 additions & 1 deletion tests/qtest/pxe-test.c
Expand Up @@ -131,11 +131,17 @@ int main(int argc, char *argv[])
int ret;
const char *arch = qtest_get_arch();

g_test_init(&argc, &argv, NULL);

if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
g_test_skip("No KVM or TCG accelerator available");
return 0;
}

ret = boot_sector_init(disk);
if(ret)
return ret;

g_test_init(&argc, &argv, NULL);

if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
test_batch(x86_tests, false);
Expand Down
9 changes: 7 additions & 2 deletions tests/qtest/vmgenid-test.c
Expand Up @@ -165,13 +165,18 @@ int main(int argc, char **argv)
{
int ret;

g_test_init(&argc, &argv, NULL);

if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
g_test_skip("No KVM or TCG accelerator available");
return 0;
}

ret = boot_sector_init(disk);
if (ret) {
return ret;
}

g_test_init(&argc, &argv, NULL);

qtest_add_func("/vmgenid/vmgenid/set-guid",
vmgenid_set_guid_test);
qtest_add_func("/vmgenid/vmgenid/set-guid-auto",
Expand Down

0 comments on commit 0c1ae3f

Please sign in to comment.