As I was reviewing bhyve commits, I've noticed qemuxml2argvtest failing for some test cases. This is not bug in qemu driver code rather than being unable to load qemuxml2argvmock on non-Linux platforms. For instance: 318) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : internal error: NUMA node 0 is unavailable FAILED Rather than disabling qemuxml2argvtest on BSD (we do compile qemu driver there) disable only those test cases which require mocking. To achieve that goal new DO_TEST_LINUX() macro is introduced which invokes the test case on Linux only and consume arguments on other systems. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- tests/qemuxml2argvtest.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index fe58a24..623237b 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -575,6 +575,21 @@ mymain(void) FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_ERROR, \ __VA_ARGS__) +# ifdef __linux__ + /* This is a macro that invokes test only on Linux. It's + * meant to be called in those cases where qemuxml2argvmock + * cooperation is expected (e.g. we need a fixed time, + * predictable NUMA topology and so on). On non-Linux + * platforms the macro just consume its argument. */ +# define DO_TEST_LINUX(name, ...) \ + DO_TEST_FULL(name, NULL, -1, 0, __VA_ARGS__) +# else /* __linux__ */ +# define DO_TEST_LINUX(name, ...) \ + do { \ + const char *tmp ATTRIBUTE_UNUSED = name; \ + } while (0) +# endif /* __linux__ */ + # define NONE QEMU_CAPS_LAST /* Unset or set all envvars here that are copied in qemudBuildCommandLine @@ -684,14 +699,16 @@ mymain(void) DO_TEST("kvm-features-off", NONE); DO_TEST("hugepages", QEMU_CAPS_MEM_PATH); - DO_TEST("hugepages-pages", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_RAM, - QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST_LINUX("hugepages-pages", QEMU_CAPS_MEM_PATH, + QEMU_CAPS_OBJECT_MEMORY_RAM, + QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-pages2", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-pages3", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST("hugepages-shared", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_RAM, - QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST_LINUX("hugepages-shared", QEMU_CAPS_MEM_PATH, + QEMU_CAPS_OBJECT_MEMORY_RAM, + QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST_PARSE_ERROR("hugepages-memaccess-invalid", NONE); DO_TEST_FAILURE("hugepages-pages4", QEMU_CAPS_MEM_PATH, QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); @@ -1246,10 +1263,12 @@ mymain(void) DO_TEST("numatune-memory", NONE); DO_TEST_PARSE_ERROR("numatune-memory-invalid-nodeset", NONE); - DO_TEST("numatune-memnode", QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_RAM); + DO_TEST_LINUX("numatune-memnode", QEMU_CAPS_NUMA, + QEMU_CAPS_OBJECT_MEMORY_RAM); DO_TEST_FAILURE("numatune-memnode", NONE); - DO_TEST("numatune-memnode-no-memory", QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_RAM); + DO_TEST_LINUX("numatune-memnode-no-memory", QEMU_CAPS_NUMA, + QEMU_CAPS_OBJECT_MEMORY_RAM); DO_TEST_FAILURE("numatune-memnode-no-memory", NONE); DO_TEST("numatune-auto-nodeset-invalid", NONE); -- 2.0.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list