mirror of
https://github.com/libvirt/libvirt.git
synced 2026-09-03 20:53:04 -05:00
Remove backslash alignment attempts
Right-aligning backslashes when defining macros or using complex
commands in Makefiles looks cute, but as soon as any changes is
required to the code you end up with either distractingly broken
alignment or unnecessarily big diffs where most of the changes
are just pushing all backslashes a few characters to one side.
Generated using
$ git grep -El '[[:blank:]][[:blank:]]\\$' | \
grep -E '*\.([chx]|am|mk)$$' | \
while read f; do \
sed -Ei 's/[[:blank:]]*[[:blank:]]\\$/ \\/g' "$f"; \
done
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
+39
-39
@@ -82,7 +82,7 @@ LDADDS = \
|
||||
MOCKLIBS_LIBS = \
|
||||
$(GNULIB_LIBS)
|
||||
|
||||
EXTRA_DIST = \
|
||||
EXTRA_DIST = \
|
||||
.valgrind.supp \
|
||||
bhyvexml2argvdata \
|
||||
bhyveargv2xmldata \
|
||||
@@ -140,7 +140,7 @@ EXTRA_DIST = \
|
||||
storagevolxml2xmlin \
|
||||
storagevolxml2xmlout \
|
||||
sysinfodata \
|
||||
test-lib.sh \
|
||||
test-lib.sh \
|
||||
vboxsnapshotxmldata \
|
||||
vircaps2xmldata \
|
||||
vircgroupdata \
|
||||
@@ -393,28 +393,28 @@ test_programs += virusbtest \
|
||||
endif WITH_LINUX
|
||||
|
||||
test_scripts =
|
||||
libvirtd_test_scripts = \
|
||||
libvirtd-fail \
|
||||
libvirtd-pool \
|
||||
virsh-cpuset \
|
||||
virsh-define-dev-segfault \
|
||||
virsh-int-overflow \
|
||||
virsh-optparse \
|
||||
virsh-read-bufsiz \
|
||||
virsh-read-non-seekable \
|
||||
virsh-schedinfo \
|
||||
virsh-self-test \
|
||||
virt-admin-self-test \
|
||||
virsh-start \
|
||||
virsh-undefine \
|
||||
virsh-uriprecedence \
|
||||
virsh-vcpupin \
|
||||
libvirtd_test_scripts = \
|
||||
libvirtd-fail \
|
||||
libvirtd-pool \
|
||||
virsh-cpuset \
|
||||
virsh-define-dev-segfault \
|
||||
virsh-int-overflow \
|
||||
virsh-optparse \
|
||||
virsh-read-bufsiz \
|
||||
virsh-read-non-seekable \
|
||||
virsh-schedinfo \
|
||||
virsh-self-test \
|
||||
virt-admin-self-test \
|
||||
virsh-start \
|
||||
virsh-undefine \
|
||||
virsh-uriprecedence \
|
||||
virsh-vcpupin \
|
||||
$(NULL)
|
||||
|
||||
if WITH_LIBVIRTD
|
||||
test_scripts += $(libvirtd_test_scripts)
|
||||
|
||||
test_programs += \
|
||||
test_programs += \
|
||||
eventtest \
|
||||
virdrivermoduletest
|
||||
else ! WITH_LIBVIRTD
|
||||
@@ -465,17 +465,17 @@ TESTS = $(test_programs) \
|
||||
lv_abs_top_builddir=$(shell cd '$(top_builddir)' && pwd)
|
||||
|
||||
VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
|
||||
TESTS_ENVIRONMENT = \
|
||||
abs_top_builddir=$(lv_abs_top_builddir) \
|
||||
abs_top_srcdir=`cd '$(top_srcdir)'; pwd` \
|
||||
abs_builddir=$(abs_builddir) \
|
||||
abs_srcdir=$(abs_srcdir) \
|
||||
CONFIG_HEADER="$(lv_abs_top_builddir)/config.h" \
|
||||
SHELL="$(SHELL)" \
|
||||
TESTS_ENVIRONMENT = \
|
||||
abs_top_builddir=$(lv_abs_top_builddir) \
|
||||
abs_top_srcdir=`cd '$(top_srcdir)'; pwd` \
|
||||
abs_builddir=$(abs_builddir) \
|
||||
abs_srcdir=$(abs_srcdir) \
|
||||
CONFIG_HEADER="$(lv_abs_top_builddir)/config.h" \
|
||||
SHELL="$(SHELL)" \
|
||||
LIBVIRT_DRIVER_DIR="$(lv_abs_top_builddir)/src/.libs" \
|
||||
LIBVIRT_AUTOSTART=0 \
|
||||
LC_ALL=C \
|
||||
VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
|
||||
LIBVIRT_AUTOSTART=0 \
|
||||
LC_ALL=C \
|
||||
VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
|
||||
$(VG)
|
||||
|
||||
|
||||
@@ -1180,20 +1180,20 @@ if WITH_NSS
|
||||
nsstest_SOURCES = \
|
||||
nsstest.c testutils.h testutils.c
|
||||
nsstest_CFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
$(AM_CFLAGS) \
|
||||
-I$(top_srcdir)/tools/nss
|
||||
nsstest_LDADD = \
|
||||
$(LDADDS) \
|
||||
$(LDADDS) \
|
||||
../tools/nss/libnss_libvirt_impl.la
|
||||
|
||||
nssguesttest_SOURCES = \
|
||||
nsstest.c testutils.h testutils.c
|
||||
nssguesttest_CFLAGS = \
|
||||
-DLIBVIRT_NSS_GUEST \
|
||||
$(AM_CFLAGS) \
|
||||
-DLIBVIRT_NSS_GUEST \
|
||||
$(AM_CFLAGS) \
|
||||
-I$(top_srcdir)/tools/nss
|
||||
nssguesttest_LDADD = \
|
||||
$(LDADDS) \
|
||||
$(LDADDS) \
|
||||
../tools/nss/libnss_libvirt_guest_impl.la
|
||||
|
||||
nssmock_la_SOURCES = \
|
||||
@@ -1205,16 +1205,16 @@ nssmock_la_LIBADD = $(MOCKLIBS_LIBS)
|
||||
## Intentionaly not linking with anything else.
|
||||
## See the test source for more detailed explanation.
|
||||
nsslinktest_SOURCES = nsslinktest.c
|
||||
nsslinktest_CFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
nsslinktest_CFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
-I$(top_srcdir)/tools/nss
|
||||
nsslinktest_LDADD = ../tools/nss/libnss_libvirt_impl.la
|
||||
nsslinktest_LDFLAGS = $(NULL)
|
||||
|
||||
nssguestlinktest_SOURCES = nsslinktest.c
|
||||
nssguestlinktest_CFLAGS = \
|
||||
-DLIBVIRT_NSS_GUEST \
|
||||
$(AM_CFLAGS) \
|
||||
nssguestlinktest_CFLAGS = \
|
||||
-DLIBVIRT_NSS_GUEST \
|
||||
$(AM_CFLAGS) \
|
||||
-I$(top_srcdir)/tools/nss
|
||||
nssguestlinktest_LDADD = ../tools/nss/libnss_libvirt_guest_impl.la
|
||||
nssguestlinktest_LDFLAGS = $(NULL)
|
||||
|
||||
+12
-12
@@ -134,29 +134,29 @@ mymain(void)
|
||||
NULL, NULL, NULL)) == NULL)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, (flags) \
|
||||
}; \
|
||||
if (virTestRun("BHYVE ARGV-2-XML " name, \
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, (flags) \
|
||||
}; \
|
||||
if (virTestRun("BHYVE ARGV-2-XML " name, \
|
||||
testCompareXMLToArgvHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST(name) \
|
||||
# define DO_TEST(name) \
|
||||
DO_TEST_FULL(name, 0)
|
||||
|
||||
# define DO_TEST_FAIL(name) \
|
||||
# define DO_TEST_FAIL(name) \
|
||||
DO_TEST_FULL(name, 5)
|
||||
|
||||
# define DO_TEST_WARN(name) \
|
||||
# define DO_TEST_WARN(name) \
|
||||
DO_TEST_FULL(name, 4)
|
||||
|
||||
# define DO_TEST_FAIL_SILENT(name) \
|
||||
# define DO_TEST_FAIL_SILENT(name) \
|
||||
DO_TEST_FULL(name, 1)
|
||||
|
||||
# define DO_TEST_PARSE_ERROR(name) \
|
||||
# define DO_TEST_PARSE_ERROR(name) \
|
||||
DO_TEST_FULL(name, 2)
|
||||
|
||||
driver.grubcaps = BHYVE_GRUB_CAP_CONSDEV;
|
||||
|
||||
+10
-10
@@ -150,23 +150,23 @@ mymain(void)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, (flags) \
|
||||
}; \
|
||||
if (virTestRun("BHYVE XML-2-ARGV " name, \
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, (flags) \
|
||||
}; \
|
||||
if (virTestRun("BHYVE XML-2-ARGV " name, \
|
||||
testCompareXMLToArgvHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST(name) \
|
||||
# define DO_TEST(name) \
|
||||
DO_TEST_FULL(name, 0)
|
||||
|
||||
# define DO_TEST_FAILURE(name) \
|
||||
# define DO_TEST_FAILURE(name) \
|
||||
DO_TEST_FULL(name, FLAG_EXPECT_FAILURE)
|
||||
|
||||
# define DO_TEST_PARSE_ERROR(name) \
|
||||
# define DO_TEST_PARSE_ERROR(name) \
|
||||
DO_TEST_FULL(name, FLAG_EXPECT_PARSE_ERROR)
|
||||
|
||||
driver.grubcaps = BHYVE_GRUB_CAP_CONSDEV;
|
||||
|
||||
@@ -66,12 +66,12 @@ mymain(void)
|
||||
if ((driver.xmlopt = virBhyveDriverCreateXMLConf(&driver)) == NULL)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
const struct testInfo info = {name, (flags)}; \
|
||||
if (virTestRun("BHYVE XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
const struct testInfo info = {name, (flags)}; \
|
||||
if (virTestRun("BHYVE XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST_DIFFERENT(name) \
|
||||
|
||||
+3
-3
@@ -1260,9 +1260,9 @@ mymain(void)
|
||||
|
||||
environ = (char **)newenv;
|
||||
|
||||
# define DO_TEST(NAME) \
|
||||
if (virTestRun("Command Exec " #NAME " test", \
|
||||
NAME, NULL) < 0) \
|
||||
# define DO_TEST(NAME) \
|
||||
if (virTestRun("Command Exec " #NAME " test", \
|
||||
NAME, NULL) < 0) \
|
||||
ret = -1
|
||||
|
||||
DO_TEST(test0);
|
||||
|
||||
+84
-84
@@ -927,110 +927,110 @@ mymain(void)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define DO_TEST(arch, api, name, host, cpu, \
|
||||
models, flags, result) \
|
||||
do { \
|
||||
struct data data = { \
|
||||
arch, host, cpu, models, \
|
||||
models == NULL ? NULL : #models, \
|
||||
flags, result \
|
||||
}; \
|
||||
char *testLabel; \
|
||||
char *tmp; \
|
||||
\
|
||||
tmp = virTestLogContentAndReset(); \
|
||||
VIR_FREE(tmp); \
|
||||
\
|
||||
if (virAsprintf(&testLabel, "%s(%s): %s", \
|
||||
#api, virArchToString(arch), name) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
if (virTestRun(testLabel, api, &data) < 0) { \
|
||||
if (virTestGetDebug()) { \
|
||||
char *log; \
|
||||
if ((log = virTestLogContentAndReset()) && \
|
||||
strlen(log) > 0) \
|
||||
VIR_TEST_DEBUG("\n%s\n", log); \
|
||||
VIR_FREE(log); \
|
||||
} \
|
||||
ret = -1; \
|
||||
} \
|
||||
\
|
||||
VIR_FREE(testLabel); \
|
||||
#define DO_TEST(arch, api, name, host, cpu, \
|
||||
models, flags, result) \
|
||||
do { \
|
||||
struct data data = { \
|
||||
arch, host, cpu, models, \
|
||||
models == NULL ? NULL : #models, \
|
||||
flags, result \
|
||||
}; \
|
||||
char *testLabel; \
|
||||
char *tmp; \
|
||||
\
|
||||
tmp = virTestLogContentAndReset(); \
|
||||
VIR_FREE(tmp); \
|
||||
\
|
||||
if (virAsprintf(&testLabel, "%s(%s): %s", \
|
||||
#api, virArchToString(arch), name) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
if (virTestRun(testLabel, api, &data) < 0) { \
|
||||
if (virTestGetDebug()) { \
|
||||
char *log; \
|
||||
if ((log = virTestLogContentAndReset()) && \
|
||||
strlen(log) > 0) \
|
||||
VIR_TEST_DEBUG("\n%s\n", log); \
|
||||
VIR_FREE(log); \
|
||||
} \
|
||||
ret = -1; \
|
||||
} \
|
||||
\
|
||||
VIR_FREE(testLabel); \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_COMPARE(arch, host, cpu, result) \
|
||||
DO_TEST(arch, cpuTestCompare, \
|
||||
host "/" cpu " (" #result ")", \
|
||||
#define DO_TEST_COMPARE(arch, host, cpu, result) \
|
||||
DO_TEST(arch, cpuTestCompare, \
|
||||
host "/" cpu " (" #result ")", \
|
||||
host, cpu, NULL, 0, result)
|
||||
|
||||
#define DO_TEST_UPDATE_ONLY(arch, host, cpu) \
|
||||
DO_TEST(arch, cpuTestUpdate, \
|
||||
cpu " on " host, \
|
||||
#define DO_TEST_UPDATE_ONLY(arch, host, cpu) \
|
||||
DO_TEST(arch, cpuTestUpdate, \
|
||||
cpu " on " host, \
|
||||
host, cpu, NULL, 0, 0)
|
||||
|
||||
#define DO_TEST_UPDATE(arch, host, cpu, result) \
|
||||
do { \
|
||||
DO_TEST_UPDATE_ONLY(arch, host, cpu); \
|
||||
DO_TEST_COMPARE(arch, host, host "+" cpu, result); \
|
||||
#define DO_TEST_UPDATE(arch, host, cpu, result) \
|
||||
do { \
|
||||
DO_TEST_UPDATE_ONLY(arch, host, cpu); \
|
||||
DO_TEST_COMPARE(arch, host, host "+" cpu, result); \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_BASELINE(arch, name, flags, result) \
|
||||
do { \
|
||||
const char *suffix = ""; \
|
||||
char *label; \
|
||||
if ((flags) & VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES) \
|
||||
suffix = " (expanded)"; \
|
||||
if ((flags) & VIR_CONNECT_BASELINE_CPU_MIGRATABLE) \
|
||||
suffix = " (migratable)"; \
|
||||
if (virAsprintf(&label, "%s%s", name, suffix) < 0) { \
|
||||
ret = -1; \
|
||||
} else { \
|
||||
DO_TEST(arch, cpuTestBaseline, label, NULL, \
|
||||
"baseline-" name, NULL, flags, result); \
|
||||
} \
|
||||
VIR_FREE(label); \
|
||||
#define DO_TEST_BASELINE(arch, name, flags, result) \
|
||||
do { \
|
||||
const char *suffix = ""; \
|
||||
char *label; \
|
||||
if ((flags) & VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES) \
|
||||
suffix = " (expanded)"; \
|
||||
if ((flags) & VIR_CONNECT_BASELINE_CPU_MIGRATABLE) \
|
||||
suffix = " (migratable)"; \
|
||||
if (virAsprintf(&label, "%s%s", name, suffix) < 0) { \
|
||||
ret = -1; \
|
||||
} else { \
|
||||
DO_TEST(arch, cpuTestBaseline, label, NULL, \
|
||||
"baseline-" name, NULL, flags, result); \
|
||||
} \
|
||||
VIR_FREE(label); \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_HASFEATURE(arch, host, feature, result) \
|
||||
DO_TEST(arch, cpuTestHasFeature, \
|
||||
host "/" feature " (" #result ")", \
|
||||
#define DO_TEST_HASFEATURE(arch, host, feature, result) \
|
||||
DO_TEST(arch, cpuTestHasFeature, \
|
||||
host "/" feature " (" #result ")", \
|
||||
host, feature, NULL, 0, result)
|
||||
|
||||
#define DO_TEST_GUESTCPU(arch, host, cpu, models, result) \
|
||||
DO_TEST(arch, cpuTestGuestCPU, \
|
||||
host "/" cpu " (" #models ")", \
|
||||
#define DO_TEST_GUESTCPU(arch, host, cpu, models, result) \
|
||||
DO_TEST(arch, cpuTestGuestCPU, \
|
||||
host "/" cpu " (" #models ")", \
|
||||
host, cpu, models, 0, result)
|
||||
|
||||
#if WITH_QEMU && WITH_YAJL
|
||||
# define DO_TEST_JSON(arch, host, json) \
|
||||
do { \
|
||||
if (json == JSON_MODELS) { \
|
||||
DO_TEST(arch, cpuTestGuestCPUID, host, host, \
|
||||
NULL, NULL, 0, 0); \
|
||||
} \
|
||||
if (json != JSON_NONE) { \
|
||||
DO_TEST(arch, cpuTestJSONCPUID, host, host, \
|
||||
NULL, NULL, json, 0); \
|
||||
} \
|
||||
# define DO_TEST_JSON(arch, host, json) \
|
||||
do { \
|
||||
if (json == JSON_MODELS) { \
|
||||
DO_TEST(arch, cpuTestGuestCPUID, host, host, \
|
||||
NULL, NULL, 0, 0); \
|
||||
} \
|
||||
if (json != JSON_NONE) { \
|
||||
DO_TEST(arch, cpuTestJSONCPUID, host, host, \
|
||||
NULL, NULL, json, 0); \
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
# define DO_TEST_JSON(arch, host, json)
|
||||
#endif
|
||||
|
||||
#define DO_TEST_CPUID(arch, host, json) \
|
||||
do { \
|
||||
DO_TEST(arch, cpuTestHostCPUID, host, host, \
|
||||
NULL, NULL, 0, 0); \
|
||||
DO_TEST(arch, cpuTestGuestCPUID, host, host, \
|
||||
NULL, NULL, json, 0); \
|
||||
DO_TEST_JSON(arch, host, json); \
|
||||
if (json != JSON_NONE) { \
|
||||
DO_TEST(arch, cpuTestUpdateLive, host, host, \
|
||||
NULL, NULL, json, 0); \
|
||||
} \
|
||||
#define DO_TEST_CPUID(arch, host, json) \
|
||||
do { \
|
||||
DO_TEST(arch, cpuTestHostCPUID, host, host, \
|
||||
NULL, NULL, 0, 0); \
|
||||
DO_TEST(arch, cpuTestGuestCPUID, host, host, \
|
||||
NULL, NULL, json, 0); \
|
||||
DO_TEST_JSON(arch, host, json); \
|
||||
if (json != JSON_NONE) { \
|
||||
DO_TEST(arch, cpuTestUpdateLive, host, host, \
|
||||
NULL, NULL, json, 0); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* host to host comparison */
|
||||
|
||||
+64
-64
@@ -358,57 +358,57 @@ mymain(void)
|
||||
return EXIT_FAILURE;
|
||||
#endif
|
||||
|
||||
#define DO_TEST(Name, Emulator, Machine, Arch, Type, CapsType) \
|
||||
do { \
|
||||
struct testData data = { \
|
||||
.name = Name, \
|
||||
.emulator = Emulator, \
|
||||
.machine = Machine, \
|
||||
.arch = Arch, \
|
||||
.type = Type, \
|
||||
.capsType = CapsType, \
|
||||
}; \
|
||||
if (virTestRun(Name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(Name, Emulator, Machine, Arch, Type, CapsType) \
|
||||
do { \
|
||||
struct testData data = { \
|
||||
.name = Name, \
|
||||
.emulator = Emulator, \
|
||||
.machine = Machine, \
|
||||
.arch = Arch, \
|
||||
.type = Type, \
|
||||
.capsType = CapsType, \
|
||||
}; \
|
||||
if (virTestRun(Name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_QEMU(Name, CapsName, Emulator, Machine, Arch, Type) \
|
||||
do { \
|
||||
char *name = NULL; \
|
||||
if (virAsprintf(&name, "qemu_%s%s%s.%s", \
|
||||
Name, \
|
||||
Machine ? "-" : "", Machine ? Machine : "", \
|
||||
Arch) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
struct testData data = { \
|
||||
.name = name, \
|
||||
.emulator = Emulator, \
|
||||
.machine = Machine, \
|
||||
.arch = Arch, \
|
||||
.type = Type, \
|
||||
.capsType = CAPS_QEMU, \
|
||||
.capsName = CapsName, \
|
||||
.capsOpaque = cfg, \
|
||||
}; \
|
||||
if (virTestRun(name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(name); \
|
||||
#define DO_TEST_QEMU(Name, CapsName, Emulator, Machine, Arch, Type) \
|
||||
do { \
|
||||
char *name = NULL; \
|
||||
if (virAsprintf(&name, "qemu_%s%s%s.%s", \
|
||||
Name, \
|
||||
Machine ? "-" : "", Machine ? Machine : "", \
|
||||
Arch) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
struct testData data = { \
|
||||
.name = name, \
|
||||
.emulator = Emulator, \
|
||||
.machine = Machine, \
|
||||
.arch = Arch, \
|
||||
.type = Type, \
|
||||
.capsType = CAPS_QEMU, \
|
||||
.capsName = CapsName, \
|
||||
.capsOpaque = cfg, \
|
||||
}; \
|
||||
if (virTestRun(name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(name); \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_LIBXL(Name, Emulator, Machine, Arch, Type) \
|
||||
do { \
|
||||
struct testData data = { \
|
||||
.name = Name, \
|
||||
.emulator = Emulator, \
|
||||
.machine = Machine, \
|
||||
.arch = Arch, \
|
||||
.type = Type, \
|
||||
.capsType = CAPS_LIBXL, \
|
||||
}; \
|
||||
if (virTestRun(Name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_LIBXL(Name, Emulator, Machine, Arch, Type) \
|
||||
do { \
|
||||
struct testData data = { \
|
||||
.name = Name, \
|
||||
.emulator = Emulator, \
|
||||
.machine = Machine, \
|
||||
.arch = Arch, \
|
||||
.type = Type, \
|
||||
.capsType = CAPS_LIBXL, \
|
||||
}; \
|
||||
if (virTestRun(Name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("basic", "/bin/emulatorbin", "my-machine-type",
|
||||
@@ -417,23 +417,23 @@ mymain(void)
|
||||
"x86_64", VIR_DOMAIN_VIRT_KVM, CAPS_ALL);
|
||||
|
||||
#define DO_TEST_BHYVE(Name, Emulator, BhyveCaps, Type) \
|
||||
do { \
|
||||
char *name = NULL; \
|
||||
if (virAsprintf(&name, "bhyve_%s.x86_64", Name) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
struct testData data = { \
|
||||
.name = name, \
|
||||
.emulator = Emulator, \
|
||||
.arch = "x86_64", \
|
||||
.type = Type, \
|
||||
.capsType = CAPS_BHYVE, \
|
||||
.capsOpaque = BhyveCaps, \
|
||||
}; \
|
||||
if (virTestRun(name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(name); \
|
||||
do { \
|
||||
char *name = NULL; \
|
||||
if (virAsprintf(&name, "bhyve_%s.x86_64", Name) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
struct testData data = { \
|
||||
.name = name, \
|
||||
.emulator = Emulator, \
|
||||
.arch = "x86_64", \
|
||||
.type = Type, \
|
||||
.capsType = CAPS_BHYVE, \
|
||||
.capsOpaque = BhyveCaps, \
|
||||
}; \
|
||||
if (virTestRun(name, test_virDomainCapsFormat, &data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(name); \
|
||||
} while (0)
|
||||
|
||||
#if WITH_QEMU
|
||||
|
||||
@@ -90,15 +90,15 @@ mymain(void)
|
||||
if (!(xmlopt = virTestGenericDomainXMLConfInit()))
|
||||
goto cleanup;
|
||||
|
||||
#define DO_TEST_GET_FS(fspath, expect) \
|
||||
do { \
|
||||
struct testGetFilesystemData data = { \
|
||||
.filename = "getfilesystem", \
|
||||
.path = fspath, \
|
||||
.expectEntry = expect, \
|
||||
}; \
|
||||
#define DO_TEST_GET_FS(fspath, expect) \
|
||||
do { \
|
||||
struct testGetFilesystemData data = { \
|
||||
.filename = "getfilesystem", \
|
||||
.path = fspath, \
|
||||
.expectEntry = expect, \
|
||||
}; \
|
||||
if (virTestRun("Get FS " fspath, testGetFilesystem, &data) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_GET_FS("/", true);
|
||||
|
||||
@@ -171,14 +171,14 @@ mymain(void)
|
||||
}
|
||||
|
||||
|
||||
# define DO_TEST(prefix, name, inpath, outpath, uuid, internal, redefine) \
|
||||
do { \
|
||||
const struct testInfo info = {abs_srcdir "/" inpath "/" name ".xml", \
|
||||
# define DO_TEST(prefix, name, inpath, outpath, uuid, internal, redefine) \
|
||||
do { \
|
||||
const struct testInfo info = {abs_srcdir "/" inpath "/" name ".xml", \
|
||||
abs_srcdir "/" outpath "/" name ".xml", \
|
||||
uuid, internal, redefine}; \
|
||||
if (virTestRun("SNAPSHOT XML-2-XML " prefix " " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
uuid, internal, redefine}; \
|
||||
if (virTestRun("SNAPSHOT XML-2-XML " prefix " " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST_IN(name, uuid) DO_TEST("in->in", name,\
|
||||
|
||||
@@ -247,12 +247,12 @@ mymain(void)
|
||||
|
||||
virTestQuiesceLibvirtErrors(true);
|
||||
|
||||
# define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("VMware "#_name, test##_name, \
|
||||
NULL) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
# define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("VMware "#_name, test##_name, \
|
||||
NULL) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
DO_TEST(ParseDatastorePath);
|
||||
|
||||
@@ -60,13 +60,13 @@ mymain(void)
|
||||
if (!(xmlopt = virTestGenericDomainXMLConfInit()))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
#define DO_TEST_FULL(name, is_different, inactive, expectResult) \
|
||||
do { \
|
||||
const struct testInfo info = {name, is_different, inactive, \
|
||||
expectResult}; \
|
||||
if (virTestRun("GENERIC XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FULL(name, is_different, inactive, expectResult) \
|
||||
do { \
|
||||
const struct testInfo info = {name, is_different, inactive, \
|
||||
expectResult}; \
|
||||
if (virTestRun("GENERIC XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST(name) \
|
||||
|
||||
@@ -69,9 +69,9 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun("Interface XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun("Interface XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
ret = -1
|
||||
|
||||
DO_TEST("ethernet-dhcp");
|
||||
|
||||
@@ -176,14 +176,14 @@ mymain(void)
|
||||
if ((caps = testXLInitCaps()) == NULL)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
# define DO_TEST(name) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, \
|
||||
}; \
|
||||
if (virTestRun("LibXL XML-2-JSON " name, \
|
||||
testCompareXMLToDomConfigHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(name) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, \
|
||||
}; \
|
||||
if (virTestRun("LibXL XML-2-JSON " name, \
|
||||
testCompareXMLToDomConfigHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("basic-pv");
|
||||
|
||||
@@ -98,13 +98,13 @@ mymain(void)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
# define DO_TEST(name, expectError) \
|
||||
do { \
|
||||
# define DO_TEST(name, expectError) \
|
||||
do { \
|
||||
const struct testInfo info = { name, expectError }; \
|
||||
if (virTestRun("LXC Native-2-XML " name, \
|
||||
testCompareXMLToConfigHelper, \
|
||||
&info) < 0) \
|
||||
ret = EXIT_FAILURE; \
|
||||
if (virTestRun("LXC Native-2-XML " name, \
|
||||
testCompareXMLToConfigHelper, \
|
||||
&info) < 0) \
|
||||
ret = EXIT_FAILURE; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("simple", false);
|
||||
|
||||
@@ -66,13 +66,13 @@ mymain(void)
|
||||
if (!(xmlopt = lxcDomainXMLConfInit()))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
# define DO_TEST_FULL(name, is_different, inactive, parse_flags) \
|
||||
do { \
|
||||
const struct testInfo info = {name, is_different, inactive, \
|
||||
parse_flags}; \
|
||||
if (virTestRun("LXC XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST_FULL(name, is_different, inactive, parse_flags) \
|
||||
do { \
|
||||
const struct testInfo info = {name, is_different, inactive, \
|
||||
parse_flags}; \
|
||||
if (virTestRun("LXC XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST(name) \
|
||||
|
||||
@@ -250,15 +250,15 @@ testTextMetadata(const void *data)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define TEST_TEXT_METADATA(INDEX, TYPE, DATA, FAIL) \
|
||||
do { \
|
||||
test.type = VIR_DOMAIN_METADATA_ ## TYPE; \
|
||||
test.data = DATA; \
|
||||
test.fail = FAIL; \
|
||||
\
|
||||
if (virTestRun("text metadata: " #TYPE " " INDEX " ", \
|
||||
testTextMetadata, &test) < 0) \
|
||||
ret = EXIT_FAILURE; \
|
||||
#define TEST_TEXT_METADATA(INDEX, TYPE, DATA, FAIL) \
|
||||
do { \
|
||||
test.type = VIR_DOMAIN_METADATA_ ## TYPE; \
|
||||
test.data = DATA; \
|
||||
test.fail = FAIL; \
|
||||
\
|
||||
if (virTestRun("text metadata: " #TYPE " " INDEX " ", \
|
||||
testTextMetadata, &test) < 0) \
|
||||
ret = EXIT_FAILURE; \
|
||||
} while (0)
|
||||
|
||||
#define TEST_TITLE(INDEX, DATA) TEST_TEXT_METADATA(INDEX, TITLE, DATA, false)
|
||||
|
||||
+10
-10
@@ -112,16 +112,16 @@ mymain(void)
|
||||
dnsmasqCapsPtr dhcpv6
|
||||
= dnsmasqCapsNewFromBuffer("Dnsmasq version 2.64\n--bind-dynamic", DNSMASQ);
|
||||
|
||||
#define DO_TEST(xname, xcaps) \
|
||||
do { \
|
||||
static testInfo info; \
|
||||
\
|
||||
info.name = xname; \
|
||||
info.caps = xcaps; \
|
||||
if (virTestRun("Network XML-2-Conf " xname, \
|
||||
testCompareXMLToConfHelper, &info) < 0) { \
|
||||
ret = -1; \
|
||||
} \
|
||||
#define DO_TEST(xname, xcaps) \
|
||||
do { \
|
||||
static testInfo info; \
|
||||
\
|
||||
info.name = xname; \
|
||||
info.caps = xcaps; \
|
||||
if (virTestRun("Network XML-2-Conf " xname, \
|
||||
testCompareXMLToConfHelper, &info) < 0) { \
|
||||
ret = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("isolated-network", restricted);
|
||||
|
||||
@@ -126,14 +126,14 @@ mymain(void)
|
||||
if (!abs_top_srcdir)
|
||||
abs_top_srcdir = abs_srcdir "/..";
|
||||
|
||||
# define DO_TEST(name) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, \
|
||||
}; \
|
||||
if (virTestRun("Network XML-2-iptables " name, \
|
||||
testCompareXMLToIPTablesHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(name) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, \
|
||||
}; \
|
||||
if (virTestRun("Network XML-2-iptables " name, \
|
||||
testCompareXMLToIPTablesHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
virFirewallSetLockOverride(true);
|
||||
|
||||
@@ -109,12 +109,12 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_FULL(name, flags, expectResult) \
|
||||
do { \
|
||||
const struct testInfo info = {name, flags, expectResult}; \
|
||||
if (virTestRun("Network XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FULL(name, flags, expectResult) \
|
||||
do { \
|
||||
const struct testInfo info = {name, flags, expectResult}; \
|
||||
if (virTestRun("Network XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
#define DO_TEST(name) \
|
||||
DO_TEST_FULL(name, 0, TEST_COMPARE_NET_XML2XML_RESULT_SUCCESS)
|
||||
|
||||
@@ -112,29 +112,29 @@ mymain(void)
|
||||
int ret = 0;
|
||||
unsigned int section;
|
||||
|
||||
#define DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, \
|
||||
parentIndex, flags, expectFailure) \
|
||||
do { \
|
||||
const struct testInfo info = {name, updatexml, netxml, outxml, \
|
||||
command, section, flags, \
|
||||
parentIndex, expectFailure}; \
|
||||
if (virTestRun("Network XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, \
|
||||
parentIndex, flags, expectFailure) \
|
||||
do { \
|
||||
const struct testInfo info = {name, updatexml, netxml, outxml, \
|
||||
command, section, flags, \
|
||||
parentIndex, expectFailure}; \
|
||||
if (virTestRun("Network XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST(name, updatexml, netxml, outxml, command) \
|
||||
#define DO_TEST(name, updatexml, netxml, outxml, command) \
|
||||
DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, -12435, \
|
||||
0, false)
|
||||
#define DO_TEST_FAIL(name, updatexml, netxml, command) \
|
||||
DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, -12345, \
|
||||
#define DO_TEST_FAIL(name, updatexml, netxml, command) \
|
||||
DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, -12345, \
|
||||
0, true)
|
||||
|
||||
#define DO_TEST_INDEX(name, updatexml, netxml, outxml, command, index) \
|
||||
DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, index, \
|
||||
#define DO_TEST_INDEX(name, updatexml, netxml, outxml, command, index) \
|
||||
DO_TEST_FULL(name, updatexml, netxml, outxml, command, section, index, \
|
||||
0, false)
|
||||
#define DO_TEST_INDEX_FAIL(name, updatexml, netxml, command, index) \
|
||||
DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, index, \
|
||||
#define DO_TEST_INDEX_FAIL(name, updatexml, netxml, command, index) \
|
||||
DO_TEST_FULL(name, updatexml, netxml, "n/a", command, section, index, \
|
||||
0, true)
|
||||
|
||||
|
||||
|
||||
@@ -69,9 +69,9 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun("Node device XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun("Node device XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
ret = -1
|
||||
|
||||
DO_TEST("computer");
|
||||
|
||||
+8
-8
@@ -174,14 +174,14 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
# define DO_TEST(name, family, ...) \
|
||||
do { \
|
||||
const char *addr[] = { __VA_ARGS__, NULL}; \
|
||||
struct testNSSData data = { \
|
||||
.hostname = name, .ipAddr = addr, .af = family, \
|
||||
}; \
|
||||
if (virTestRun(name, testGetHostByName, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(name, family, ...) \
|
||||
do { \
|
||||
const char *addr[] = { __VA_ARGS__, NULL}; \
|
||||
struct testNSSData data = { \
|
||||
.hostname = name, .ipAddr = addr, .af = family, \
|
||||
}; \
|
||||
if (virTestRun(name, testGetHostByName, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# if !defined(LIBVIRT_NSS_GUEST)
|
||||
|
||||
@@ -463,14 +463,14 @@ mymain(void)
|
||||
if (!abs_top_srcdir)
|
||||
abs_top_srcdir = abs_srcdir "/..";
|
||||
|
||||
# define DO_TEST(name) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, \
|
||||
}; \
|
||||
if (virTestRun("NWFilter XML-2-firewall " name, \
|
||||
testCompareXMLToIPTablesHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(name) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, \
|
||||
}; \
|
||||
if (virTestRun("NWFilter XML-2-firewall " name, \
|
||||
testCompareXMLToIPTablesHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
virFirewallSetLockOverride(true);
|
||||
|
||||
@@ -86,15 +86,15 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST(NAME, EXPECT_WARN) \
|
||||
do { \
|
||||
test_parms tp = { \
|
||||
.name = NAME, \
|
||||
.expect_warning = EXPECT_WARN, \
|
||||
}; \
|
||||
if (virTestRun("NWFilter XML-2-XML " NAME, \
|
||||
testCompareXMLToXMLHelper, (&tp)) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(NAME, EXPECT_WARN) \
|
||||
do { \
|
||||
test_parms tp = { \
|
||||
.name = NAME, \
|
||||
.expect_warning = EXPECT_WARN, \
|
||||
}; \
|
||||
if (virTestRun("NWFilter XML-2-XML " NAME, \
|
||||
testCompareXMLToXMLHelper, (&tp)) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("mac-test", true);
|
||||
|
||||
@@ -141,12 +141,12 @@ mymain(void)
|
||||
|
||||
openvzLocateConfFile = testLocateConfFile;
|
||||
|
||||
# define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("OpenVZ "#_name, test##_name, \
|
||||
NULL) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
# define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("OpenVZ "#_name, test##_name, \
|
||||
NULL) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
DO_TEST(ReadConfigParam);
|
||||
|
||||
@@ -918,8 +918,8 @@ mymain(void)
|
||||
|
||||
virEventRegisterDefaultImpl();
|
||||
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun(# name, testQemuAgent ## name, driver.xmlopt) < 0) \
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun(# name, testQemuAgent ## name, driver.xmlopt) < 0) \
|
||||
ret = -1
|
||||
|
||||
DO_TEST(FSFreeze);
|
||||
|
||||
@@ -155,15 +155,15 @@ mymain(void)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
const struct testInfo info = { name, (flags) }; \
|
||||
if (virTestRun("QEMU ARGV-2-XML " name, \
|
||||
testCompareXMLToArgvHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST_FULL(name, flags) \
|
||||
do { \
|
||||
const struct testInfo info = { name, (flags) }; \
|
||||
if (virTestRun("QEMU ARGV-2-XML " name, \
|
||||
testCompareXMLToArgvHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST(name) \
|
||||
# define DO_TEST(name) \
|
||||
DO_TEST_FULL(name, 0)
|
||||
|
||||
setenv("PATH", "/bin", 1);
|
||||
|
||||
@@ -146,15 +146,15 @@ mymain(void)
|
||||
|
||||
data.xmlopt = driver.xmlopt;
|
||||
|
||||
#define DO_TEST(arch, name) \
|
||||
do { \
|
||||
data.archName = arch; \
|
||||
data.base = name; \
|
||||
if (virTestRun(name "(" arch ")", testQemuCaps, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("copy " name "(" arch ")", \
|
||||
testQemuCapsCopy, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(arch, name) \
|
||||
do { \
|
||||
data.archName = arch; \
|
||||
data.base = name; \
|
||||
if (virTestRun(name "(" arch ")", testQemuCaps, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("copy " name "(" arch ")", \
|
||||
testQemuCapsCopy, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("x86_64", "caps_1.2.2");
|
||||
|
||||
@@ -175,10 +175,10 @@ mymain(void)
|
||||
|
||||
virEventRegisterDefaultImpl();
|
||||
|
||||
#define DO_TEST_FULL(name, guest) \
|
||||
data.base = name; \
|
||||
data.guestarch = guest; \
|
||||
if (virTestRun(name, testQemuCapsXML, &data) < 0) \
|
||||
#define DO_TEST_FULL(name, guest) \
|
||||
data.base = name; \
|
||||
data.guestarch = guest; \
|
||||
if (virTestRun(name, testQemuCapsXML, &data) < 0) \
|
||||
ret = -1
|
||||
|
||||
#define DO_TEST(name) DO_TEST_FULL(name, VIR_ARCH_I686)
|
||||
|
||||
@@ -28,13 +28,13 @@
|
||||
#include "qemu/qemu_monitor.h"
|
||||
#include "qemu/qemu_monitor_json.h"
|
||||
|
||||
#define REAL_SYM(realFunc) \
|
||||
do { \
|
||||
if (!realFunc && !(realFunc = dlsym(RTLD_NEXT, __FUNCTION__))) { \
|
||||
fprintf(stderr, "Cannot find real '%s' symbol\n", \
|
||||
__FUNCTION__); \
|
||||
abort(); \
|
||||
} \
|
||||
#define REAL_SYM(realFunc) \
|
||||
do { \
|
||||
if (!realFunc && !(realFunc = dlsym(RTLD_NEXT, __FUNCTION__))) { \
|
||||
fprintf(stderr, "Cannot find real '%s' symbol\n", \
|
||||
__FUNCTION__); \
|
||||
abort(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
+11
-11
@@ -83,21 +83,21 @@ mymain(void)
|
||||
|
||||
virTestCounterReset("testQemuCommandBuildFromJSON");
|
||||
|
||||
#define DO_TEST_COMMAND_FROM_JSON(PROPS, ARRAYFUNC, EXPECT) \
|
||||
do { \
|
||||
data1.props = PROPS; \
|
||||
data1.expectprops = EXPECT; \
|
||||
data1.arrayfunc = ARRAYFUNC; \
|
||||
if (virTestRun(virTestCounterNext(), \
|
||||
testQemuCommandBuildFromJSON, \
|
||||
&data1) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_COMMAND_FROM_JSON(PROPS, ARRAYFUNC, EXPECT) \
|
||||
do { \
|
||||
data1.props = PROPS; \
|
||||
data1.expectprops = EXPECT; \
|
||||
data1.arrayfunc = ARRAYFUNC; \
|
||||
if (virTestRun(virTestCounterNext(), \
|
||||
testQemuCommandBuildFromJSON, \
|
||||
&data1) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_COMMAND_OBJECT_FROM_JSON(PROPS, EXPECT) \
|
||||
#define DO_TEST_COMMAND_OBJECT_FROM_JSON(PROPS, EXPECT) \
|
||||
DO_TEST_COMMAND_FROM_JSON(PROPS, virQEMUBuildCommandLineJSONArrayBitmap, EXPECT)
|
||||
|
||||
#define DO_TEST_COMMAND_DRIVE_FROM_JSON(PROPS, EXPECT) \
|
||||
#define DO_TEST_COMMAND_DRIVE_FROM_JSON(PROPS, EXPECT) \
|
||||
DO_TEST_COMMAND_FROM_JSON(PROPS, virQEMUBuildCommandLineJSONArrayNumbered, EXPECT)
|
||||
|
||||
DO_TEST_COMMAND_OBJECT_FROM_JSON("{}", NULL);
|
||||
|
||||
+12
-12
@@ -128,18 +128,18 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
# define DO_TEST_FULL(name, version, is_kvm, kvm_version, error, ...) \
|
||||
do { \
|
||||
struct testInfo info = { \
|
||||
name, NULL, version, is_kvm, kvm_version, error \
|
||||
}; \
|
||||
if (!(info.flags = virQEMUCapsNew())) \
|
||||
return EXIT_FAILURE; \
|
||||
virQEMUCapsSetList(info.flags, __VA_ARGS__, QEMU_CAPS_LAST); \
|
||||
if (virTestRun("QEMU Help String Parsing " name, \
|
||||
testHelpStrParsing, &info) < 0) \
|
||||
ret = -1; \
|
||||
virObjectUnref(info.flags); \
|
||||
# define DO_TEST_FULL(name, version, is_kvm, kvm_version, error, ...) \
|
||||
do { \
|
||||
struct testInfo info = { \
|
||||
name, NULL, version, is_kvm, kvm_version, error \
|
||||
}; \
|
||||
if (!(info.flags = virQEMUCapsNew())) \
|
||||
return EXIT_FAILURE; \
|
||||
virQEMUCapsSetList(info.flags, __VA_ARGS__, QEMU_CAPS_LAST); \
|
||||
if (virTestRun("QEMU Help String Parsing " name, \
|
||||
testHelpStrParsing, &info) < 0) \
|
||||
ret = -1; \
|
||||
virObjectUnref(info.flags); \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST(name, version, is_kvm, kvm_version, ...) \
|
||||
|
||||
+47
-47
@@ -616,34 +616,34 @@ mymain(void)
|
||||
/* wait only 100ms for DEVICE_DELETED event */
|
||||
qemuDomainRemoveDeviceWaitTime = 100;
|
||||
|
||||
#define DO_TEST(file, ACTION, dev, event, fial, kep, ...) \
|
||||
do { \
|
||||
const char *my_mon[] = { __VA_ARGS__, NULL}; \
|
||||
const char *name = file " " #ACTION " " dev; \
|
||||
data.action = ACTION; \
|
||||
data.domain_filename = file; \
|
||||
data.device_filename = dev; \
|
||||
data.fail = fial; \
|
||||
data.mon = my_mon; \
|
||||
data.keep = kep; \
|
||||
data.deviceDeletedEvent = event; \
|
||||
if (virTestRun(name, testQemuHotplug, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(file, ACTION, dev, event, fial, kep, ...) \
|
||||
do { \
|
||||
const char *my_mon[] = { __VA_ARGS__, NULL}; \
|
||||
const char *name = file " " #ACTION " " dev; \
|
||||
data.action = ACTION; \
|
||||
data.domain_filename = file; \
|
||||
data.device_filename = dev; \
|
||||
data.fail = fial; \
|
||||
data.mon = my_mon; \
|
||||
data.keep = kep; \
|
||||
data.deviceDeletedEvent = event; \
|
||||
if (virTestRun(name, testQemuHotplug, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_ATTACH(file, dev, fial, kep, ...) \
|
||||
#define DO_TEST_ATTACH(file, dev, fial, kep, ...) \
|
||||
DO_TEST(file, ATTACH, dev, false, fial, kep, __VA_ARGS__)
|
||||
|
||||
#define DO_TEST_DETACH(file, dev, fial, kep, ...) \
|
||||
#define DO_TEST_DETACH(file, dev, fial, kep, ...) \
|
||||
DO_TEST(file, DETACH, dev, false, fial, kep, __VA_ARGS__)
|
||||
|
||||
#define DO_TEST_ATTACH_EVENT(file, dev, fial, kep, ...) \
|
||||
#define DO_TEST_ATTACH_EVENT(file, dev, fial, kep, ...) \
|
||||
DO_TEST(file, ATTACH, dev, true, fial, kep, __VA_ARGS__)
|
||||
|
||||
#define DO_TEST_DETACH_EVENT(file, dev, fial, kep, ...) \
|
||||
#define DO_TEST_DETACH_EVENT(file, dev, fial, kep, ...) \
|
||||
DO_TEST(file, DETACH, dev, true, fial, kep, __VA_ARGS__)
|
||||
|
||||
#define DO_TEST_UPDATE(file, dev, fial, kep, ...) \
|
||||
#define DO_TEST_UPDATE(file, dev, fial, kep, ...) \
|
||||
DO_TEST(file, UPDATE, dev, false, fial, kep, __VA_ARGS__)
|
||||
|
||||
|
||||
@@ -651,16 +651,16 @@ mymain(void)
|
||||
#define HMP(msg) "{\"return\": \"" msg "\"}"
|
||||
|
||||
#define QMP_DEVICE_DELETED(dev) \
|
||||
"{" \
|
||||
" \"timestamp\": {" \
|
||||
" \"seconds\": 1374137171," \
|
||||
" \"microseconds\": 2659" \
|
||||
" }," \
|
||||
" \"event\": \"DEVICE_DELETED\"," \
|
||||
" \"data\": {" \
|
||||
" \"device\": \"" dev "\"," \
|
||||
" \"path\": \"/machine/peripheral/" dev "\"" \
|
||||
" }" \
|
||||
"{" \
|
||||
" \"timestamp\": {" \
|
||||
" \"seconds\": 1374137171," \
|
||||
" \"microseconds\": 2659" \
|
||||
" }," \
|
||||
" \"event\": \"DEVICE_DELETED\"," \
|
||||
" \"data\": {" \
|
||||
" \"device\": \"" dev "\"," \
|
||||
" \"path\": \"/machine/peripheral/" dev "\"" \
|
||||
" }" \
|
||||
"}\r\n"
|
||||
|
||||
DO_TEST_UPDATE("graphics-spice", "graphics-spice-nochange", false, false, NULL);
|
||||
@@ -834,15 +834,15 @@ mymain(void)
|
||||
DO_TEST_DETACH("base-live", "watchdog-user-alias-full", false, false,
|
||||
"device_del", QMP_OK);
|
||||
|
||||
#define DO_TEST_CPU_GROUP(prefix, vcpus, modernhp, expectfail) \
|
||||
do { \
|
||||
cpudata.test = prefix; \
|
||||
cpudata.newcpus = vcpus; \
|
||||
cpudata.modern = modernhp; \
|
||||
cpudata.fail = expectfail; \
|
||||
if (virTestRun("hotplug vcpus group " prefix, \
|
||||
testQemuHotplugCpuGroup, &cpudata) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_CPU_GROUP(prefix, vcpus, modernhp, expectfail) \
|
||||
do { \
|
||||
cpudata.test = prefix; \
|
||||
cpudata.newcpus = vcpus; \
|
||||
cpudata.modern = modernhp; \
|
||||
cpudata.fail = expectfail; \
|
||||
if (virTestRun("hotplug vcpus group " prefix, \
|
||||
testQemuHotplugCpuGroup, &cpudata) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_CPU_GROUP("x86-modern-bulk", 7, true, false);
|
||||
@@ -852,16 +852,16 @@ mymain(void)
|
||||
DO_TEST_CPU_GROUP("ppc64-modern-bulk", 23, true, true);
|
||||
DO_TEST_CPU_GROUP("ppc64-modern-bulk", 25, true, true);
|
||||
|
||||
#define DO_TEST_CPU_INDIVIDUAL(prefix, mapstr, statefl, modernhp, expectfail) \
|
||||
do { \
|
||||
cpudata.test = prefix; \
|
||||
cpudata.cpumap = mapstr; \
|
||||
cpudata.state = statefl; \
|
||||
cpudata.modern = modernhp; \
|
||||
cpudata.fail = expectfail; \
|
||||
if (virTestRun("hotplug vcpus group " prefix, \
|
||||
testQemuHotplugCpuIndividual, &cpudata) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_CPU_INDIVIDUAL(prefix, mapstr, statefl, modernhp, expectfail) \
|
||||
do { \
|
||||
cpudata.test = prefix; \
|
||||
cpudata.cpumap = mapstr; \
|
||||
cpudata.state = statefl; \
|
||||
cpudata.modern = modernhp; \
|
||||
cpudata.fail = expectfail; \
|
||||
if (virTestRun("hotplug vcpus group " prefix, \
|
||||
testQemuHotplugCpuIndividual, &cpudata) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_CPU_INDIVIDUAL("x86-modern-individual-add", "7", true, true, false);
|
||||
|
||||
+176
-176
@@ -374,26 +374,26 @@ testQemuMonitorJSONGetMachines(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK(i, wantname, wantisDefault, wantalias) \
|
||||
do { \
|
||||
if (STRNEQ(info[i]->name, (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
info[i]->name, (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (info[i]->isDefault != (wantisDefault)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"isDefault %d is not %d", \
|
||||
info[i]->isDefault, (wantisDefault)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (STRNEQ_NULLABLE(info[i]->alias, (wantalias))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"alias %s is not %s", \
|
||||
info[i]->alias, NULLSTR(wantalias)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK(i, wantname, wantisDefault, wantalias) \
|
||||
do { \
|
||||
if (STRNEQ(info[i]->name, (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
info[i]->name, (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (info[i]->isDefault != (wantisDefault)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"isDefault %d is not %d", \
|
||||
info[i]->isDefault, (wantisDefault)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (STRNEQ_NULLABLE(info[i]->alias, (wantalias))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"alias %s is not %s", \
|
||||
info[i]->alias, NULLSTR(wantalias)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK(0, "pc-1.0", false, null);
|
||||
@@ -455,27 +455,27 @@ testQemuMonitorJSONGetCPUDefinitions(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK_FULL(i, wantname, Usable) \
|
||||
do { \
|
||||
if (STRNEQ(cpus[i]->name, (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
cpus[i]->name, (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (cpus[i]->usable != (Usable)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"%s: expecting usable flag %d, got %d", \
|
||||
cpus[i]->name, Usable, cpus[i]->usable); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK_FULL(i, wantname, Usable) \
|
||||
do { \
|
||||
if (STRNEQ(cpus[i]->name, (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
cpus[i]->name, (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (cpus[i]->usable != (Usable)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"%s: expecting usable flag %d, got %d", \
|
||||
cpus[i]->name, Usable, cpus[i]->usable); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CHECK(i, wantname) \
|
||||
#define CHECK(i, wantname) \
|
||||
CHECK_FULL(i, wantname, VIR_TRISTATE_BOOL_ABSENT)
|
||||
|
||||
#define CHECK_USABLE(i, wantname, usable) \
|
||||
CHECK_FULL(i, wantname, \
|
||||
#define CHECK_USABLE(i, wantname, usable) \
|
||||
CHECK_FULL(i, wantname, \
|
||||
usable ? VIR_TRISTATE_BOOL_YES : VIR_TRISTATE_BOOL_NO)
|
||||
|
||||
CHECK(0, "qemu64");
|
||||
@@ -536,14 +536,14 @@ testQemuMonitorJSONGetCommands(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK(i, wantname) \
|
||||
do { \
|
||||
if (STRNEQ(commands[i], (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
commands[i], (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK(i, wantname) \
|
||||
do { \
|
||||
if (STRNEQ(commands[i], (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
commands[i], (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK(0, "system_wakeup");
|
||||
@@ -592,14 +592,14 @@ testQemuMonitorJSONGetTPMModels(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK(i, wantname) \
|
||||
do { \
|
||||
if (STRNEQ(tpmmodels[i], (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
tpmmodels[i], (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK(i, wantname) \
|
||||
do { \
|
||||
if (STRNEQ(tpmmodels[i], (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name %s is not %s", \
|
||||
tpmmodels[i], (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK(0, "passthrough");
|
||||
@@ -655,14 +655,14 @@ testQemuMonitorJSONGetCommandLineOptionParameters(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK(i, wantname) \
|
||||
do { \
|
||||
if (STRNEQ(params[i], (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name was %s, expected %s", \
|
||||
params[i], (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK(i, wantname) \
|
||||
do { \
|
||||
if (STRNEQ(params[i], (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name was %s, expected %s", \
|
||||
params[i], (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK(0, "romfile");
|
||||
@@ -820,9 +820,9 @@ qemuMonitorJSONTestAttachChardev(virDomainXMLOptionPtr xmlopt)
|
||||
virDomainChrSourceDef chr;
|
||||
int ret = 0;
|
||||
|
||||
#define CHECK(label, fail, expectargs) \
|
||||
if (qemuMonitorJSONTestAttachOneChardev(xmlopt, label, &chr, expectargs, \
|
||||
NULL, NULL, fail) < 0) \
|
||||
#define CHECK(label, fail, expectargs) \
|
||||
if (qemuMonitorJSONTestAttachOneChardev(xmlopt, label, &chr, expectargs, \
|
||||
NULL, NULL, fail) < 0) \
|
||||
ret = -1
|
||||
|
||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_NULL };
|
||||
@@ -1003,20 +1003,20 @@ testQemuMonitorJSONGetListPaths(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK(i, wantname, wanttype) \
|
||||
do { \
|
||||
if (STRNEQ(paths[i]->name, (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name was %s, expected %s", \
|
||||
paths[i]->name, (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (STRNEQ_NULLABLE(paths[i]->type, (wanttype))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"type was %s, expected %s", \
|
||||
NULLSTR(paths[i]->type), (wanttype)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK(i, wantname, wanttype) \
|
||||
do { \
|
||||
if (STRNEQ(paths[i]->name, (wantname))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"name was %s, expected %s", \
|
||||
paths[i]->name, (wantname)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (STRNEQ_NULLABLE(paths[i]->type, (wanttype))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"type was %s, expected %s", \
|
||||
NULLSTR(paths[i]->type), (wanttype)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK(0, "machine", "child<container>");
|
||||
@@ -1286,32 +1286,32 @@ testQemuMonitorJSONSimpleFunc(const void *opaque)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define GEN_TEST_FUNC(funcName, ...) \
|
||||
static int \
|
||||
testQemuMonitorJSON ## funcName(const void *opaque) \
|
||||
{ \
|
||||
const testQemuMonitorJSONSimpleFuncData *data = opaque; \
|
||||
virDomainXMLOptionPtr xmlopt = data->xmlopt; \
|
||||
qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); \
|
||||
const char *reply = data->reply; \
|
||||
int ret = -1; \
|
||||
\
|
||||
if (!test) \
|
||||
return -1; \
|
||||
\
|
||||
if (!reply) \
|
||||
reply = "{\"return\":{}}"; \
|
||||
\
|
||||
if (qemuMonitorTestAddItem(test, data->cmd, reply) < 0) \
|
||||
goto cleanup; \
|
||||
\
|
||||
if (funcName(qemuMonitorTestGetMonitor(test), __VA_ARGS__) < 0) \
|
||||
goto cleanup; \
|
||||
\
|
||||
ret = 0; \
|
||||
cleanup: \
|
||||
qemuMonitorTestFree(test); \
|
||||
return ret; \
|
||||
#define GEN_TEST_FUNC(funcName, ...) \
|
||||
static int \
|
||||
testQemuMonitorJSON ## funcName(const void *opaque) \
|
||||
{ \
|
||||
const testQemuMonitorJSONSimpleFuncData *data = opaque; \
|
||||
virDomainXMLOptionPtr xmlopt = data->xmlopt; \
|
||||
qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); \
|
||||
const char *reply = data->reply; \
|
||||
int ret = -1; \
|
||||
\
|
||||
if (!test) \
|
||||
return -1; \
|
||||
\
|
||||
if (!reply) \
|
||||
reply = "{\"return\":{}}"; \
|
||||
\
|
||||
if (qemuMonitorTestAddItem(test, data->cmd, reply) < 0) \
|
||||
goto cleanup; \
|
||||
\
|
||||
if (funcName(qemuMonitorTestGetMonitor(test), __VA_ARGS__) < 0) \
|
||||
goto cleanup; \
|
||||
\
|
||||
ret = 0; \
|
||||
cleanup: \
|
||||
qemuMonitorTestFree(test); \
|
||||
return ret; \
|
||||
}
|
||||
|
||||
GEN_TEST_FUNC(qemuMonitorJSONSetLink, "vnet0", VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN)
|
||||
@@ -1738,14 +1738,14 @@ testQemuMonitorJSONqemuMonitorJSONGetBlockStatsInfo(const void *data)
|
||||
|
||||
#define CHECK0(var, value) CHECK0FULL(var, value, "%lld", "%d")
|
||||
|
||||
#define CHECK(NAME, RD_REQ, RD_BYTES, RD_TOTAL_TIMES, WR_REQ, WR_BYTES, \
|
||||
WR_TOTAL_TIMES, FLUSH_REQ, FLUSH_TOTAL_TIMES, \
|
||||
WR_HIGHEST_OFFSET, WR_HIGHEST_OFFSET_VALID) \
|
||||
if (!(stats = virHashLookup(blockstats, NAME))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"block stats for device '%s' is missing", NAME); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK(NAME, RD_REQ, RD_BYTES, RD_TOTAL_TIMES, WR_REQ, WR_BYTES, \
|
||||
WR_TOTAL_TIMES, FLUSH_REQ, FLUSH_TOTAL_TIMES, \
|
||||
WR_HIGHEST_OFFSET, WR_HIGHEST_OFFSET_VALID) \
|
||||
if (!(stats = virHashLookup(blockstats, NAME))) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"block stats for device '%s' is missing", NAME); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
CHECK0(rd_req, RD_REQ) \
|
||||
CHECK0(rd_bytes, RD_BYTES) \
|
||||
CHECK0(rd_total_times, RD_TOTAL_TIMES) \
|
||||
@@ -1816,41 +1816,41 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationParams(const void *data)
|
||||
¶ms) < 0)
|
||||
goto cleanup;
|
||||
|
||||
#define CHECK_NUM(VAR, FIELD, VALUE, FMT) \
|
||||
do { \
|
||||
if (!params.VAR ## _set) { \
|
||||
#define CHECK_NUM(VAR, FIELD, VALUE, FMT) \
|
||||
do { \
|
||||
if (!params.VAR ## _set) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s is not set", FIELD); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (params.VAR != VALUE) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Invalid %s: " FMT ", expected " FMT, \
|
||||
FIELD, params.VAR, VALUE); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (params.VAR != VALUE) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Invalid %s: " FMT ", expected " FMT, \
|
||||
FIELD, params.VAR, VALUE); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CHECK_INT(VAR, FIELD, VALUE) \
|
||||
#define CHECK_INT(VAR, FIELD, VALUE) \
|
||||
CHECK_NUM(VAR, FIELD, VALUE, "%d")
|
||||
|
||||
#define CHECK_ULONG(VAR, FIELD, VALUE) \
|
||||
#define CHECK_ULONG(VAR, FIELD, VALUE) \
|
||||
CHECK_NUM(VAR, FIELD, VALUE, "%llu")
|
||||
|
||||
#define CHECK_BOOL(VAR, FIELD, VALUE) \
|
||||
#define CHECK_BOOL(VAR, FIELD, VALUE) \
|
||||
CHECK_NUM(VAR, FIELD, VALUE, "%d")
|
||||
|
||||
#define CHECK_STR(VAR, FIELD, VALUE) \
|
||||
do { \
|
||||
if (!params.VAR) { \
|
||||
#define CHECK_STR(VAR, FIELD, VALUE) \
|
||||
do { \
|
||||
if (!params.VAR) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s is not set", FIELD); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (STRNEQ(params.VAR, VALUE)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Invalid %s:'%s', expected '%s'", \
|
||||
FIELD, params.VAR, VALUE); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (STRNEQ(params.VAR, VALUE)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Invalid %s:'%s', expected '%s'", \
|
||||
FIELD, params.VAR, VALUE); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK_INT(compressLevel, "compress-level", 1);
|
||||
@@ -2091,19 +2091,19 @@ testValidateGetBlockIoThrottle(const virDomainBlockIoTuneInfo *info,
|
||||
#define VALIDATE_IOTUNE(field) \
|
||||
if (info->field != expectedInfo->field) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"info->%s=%llu != expected=%llu", \
|
||||
"info->%s=%llu != expected=%llu", \
|
||||
#field, info->field, expectedInfo->field); \
|
||||
return -1; \
|
||||
} \
|
||||
if (info->field##_max != expectedInfo->field##_max) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"info->%s_max=%llu != expected=%llu", \
|
||||
"info->%s_max=%llu != expected=%llu", \
|
||||
#field, info->field##_max, expectedInfo->field##_max); \
|
||||
return -1; \
|
||||
} \
|
||||
if (info->field##_max_length != expectedInfo->field##_max_length) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"info->%s_max_length=%llu != expected=%llu", \
|
||||
"info->%s_max_length=%llu != expected=%llu", \
|
||||
#field, info->field##_max_length, \
|
||||
expectedInfo->field##_max_length); \
|
||||
return -1; \
|
||||
@@ -2575,20 +2575,20 @@ testQemuMonitorJSONGetIOThreads(const void *data)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CHECK(i, wantiothread_id, wantthread_id) \
|
||||
do { \
|
||||
if (info[i]->iothread_id != (wantiothread_id)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"iothread_id %u is not %u", \
|
||||
info[i]->iothread_id, (wantiothread_id)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (info[i]->thread_id != (wantthread_id)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"thread_id %d is not %d", \
|
||||
info[i]->thread_id, (wantthread_id)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define CHECK(i, wantiothread_id, wantthread_id) \
|
||||
do { \
|
||||
if (info[i]->iothread_id != (wantiothread_id)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"iothread_id %u is not %u", \
|
||||
info[i]->iothread_id, (wantiothread_id)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
if (info[i]->thread_id != (wantthread_id)) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"thread_id %d is not %d", \
|
||||
info[i]->thread_id, (wantthread_id)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CHECK(0, 1, 30992);
|
||||
@@ -2845,36 +2845,36 @@ mymain(void)
|
||||
|
||||
virEventRegisterDefaultImpl();
|
||||
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun(# name, testQemuMonitorJSON ## name, driver.xmlopt) < 0) \
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun(# name, testQemuMonitorJSON ## name, driver.xmlopt) < 0) \
|
||||
ret = -1
|
||||
|
||||
#define DO_TEST_SIMPLE(CMD, FNC, ...) \
|
||||
#define DO_TEST_SIMPLE(CMD, FNC, ...) \
|
||||
simpleFunc = (testQemuMonitorJSONSimpleFuncData) {.cmd = CMD, .func = FNC, \
|
||||
.xmlopt = driver.xmlopt, __VA_ARGS__ }; \
|
||||
if (virTestRun(# FNC, testQemuMonitorJSONSimpleFunc, &simpleFunc) < 0) \
|
||||
if (virTestRun(# FNC, testQemuMonitorJSONSimpleFunc, &simpleFunc) < 0) \
|
||||
ret = -1
|
||||
|
||||
#define DO_TEST_GEN(name, ...) \
|
||||
simpleFunc = (testQemuMonitorJSONSimpleFuncData) {.xmlopt = driver.xmlopt, \
|
||||
__VA_ARGS__ }; \
|
||||
if (virTestRun(# name, testQemuMonitorJSON ## name, &simpleFunc) < 0) \
|
||||
__VA_ARGS__ }; \
|
||||
if (virTestRun(# name, testQemuMonitorJSON ## name, &simpleFunc) < 0) \
|
||||
ret = -1
|
||||
|
||||
#define DO_TEST_CPU_DATA(name) \
|
||||
do { \
|
||||
struct testCPUData data = { name, driver.xmlopt }; \
|
||||
const char *label = "GetCPUData(" name ")"; \
|
||||
if (virTestRun(label, testQemuMonitorJSONGetCPUData, &data) < 0) \
|
||||
ret = -1; \
|
||||
do { \
|
||||
struct testCPUData data = { name, driver.xmlopt }; \
|
||||
const char *label = "GetCPUData(" name ")"; \
|
||||
if (virTestRun(label, testQemuMonitorJSONGetCPUData, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_CPU_INFO(name, maxvcpus) \
|
||||
do { \
|
||||
struct testCPUInfoData data = {name, maxvcpus, driver.xmlopt}; \
|
||||
if (virTestRun("GetCPUInfo(" name ")", testQemuMonitorCPUInfo, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_CPU_INFO(name, maxvcpus) \
|
||||
do { \
|
||||
struct testCPUInfoData data = {name, maxvcpus, driver.xmlopt}; \
|
||||
if (virTestRun("GetCPUInfo(" name ")", testQemuMonitorCPUInfo, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST(GetStatus);
|
||||
@@ -2962,11 +2962,11 @@ mymain(void)
|
||||
DO_TEST_CPU_INFO("ppc64-hotplug-4", 24);
|
||||
DO_TEST_CPU_INFO("ppc64-no-threads", 16);
|
||||
|
||||
#define DO_TEST_BLOCK_NODE_DETECT(testname) \
|
||||
do { \
|
||||
if (virTestRun("node-name-detect(" testname ")", \
|
||||
testBlockNodeNameDetect, testname) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_BLOCK_NODE_DETECT(testname) \
|
||||
do { \
|
||||
if (virTestRun("node-name-detect(" testname ")", \
|
||||
testBlockNodeNameDetect, testname) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_BLOCK_NODE_DETECT("basic");
|
||||
|
||||
@@ -174,12 +174,12 @@ mymain(void)
|
||||
|
||||
virEventRegisterDefaultImpl();
|
||||
|
||||
# define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("qemu monitor "#_name, test##_name, \
|
||||
driver.xmlopt) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
# define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("qemu monitor "#_name, test##_name, \
|
||||
driver.xmlopt) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
DO_TEST(EscapeArg);
|
||||
|
||||
+30
-30
@@ -620,44 +620,44 @@ mymain(void)
|
||||
if (VIR_STRDUP_QUIET(driver.config->memoryBackingDir, "/var/lib/libvirt/qemu/ram") < 0)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
# define DO_TEST_FULL(name, migrateFrom, migrateFd, flags, \
|
||||
parseFlags, gic, ...) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, NULL, migrateFrom, migrateFd, (flags), parseFlags, \
|
||||
false \
|
||||
}; \
|
||||
info.skipLegacyCPUs = skipLegacyCPUs; \
|
||||
if (testInitQEMUCaps(&info, gic) < 0) \
|
||||
return EXIT_FAILURE; \
|
||||
virQEMUCapsSetList(info.qemuCaps, __VA_ARGS__, QEMU_CAPS_LAST); \
|
||||
if (virTestRun("QEMU XML-2-ARGV " name, \
|
||||
testCompareXMLToArgv, &info) < 0) \
|
||||
ret = -1; \
|
||||
virObjectUnref(info.qemuCaps); \
|
||||
# define DO_TEST_FULL(name, migrateFrom, migrateFd, flags, \
|
||||
parseFlags, gic, ...) \
|
||||
do { \
|
||||
static struct testInfo info = { \
|
||||
name, NULL, migrateFrom, migrateFd, (flags), parseFlags, \
|
||||
false \
|
||||
}; \
|
||||
info.skipLegacyCPUs = skipLegacyCPUs; \
|
||||
if (testInitQEMUCaps(&info, gic) < 0) \
|
||||
return EXIT_FAILURE; \
|
||||
virQEMUCapsSetList(info.qemuCaps, __VA_ARGS__, QEMU_CAPS_LAST); \
|
||||
if (virTestRun("QEMU XML-2-ARGV " name, \
|
||||
testCompareXMLToArgv, &info) < 0) \
|
||||
ret = -1; \
|
||||
virObjectUnref(info.qemuCaps); \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST(name, ...) \
|
||||
# define DO_TEST(name, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, 0, 0, GIC_NONE, __VA_ARGS__)
|
||||
|
||||
# define DO_TEST_GIC(name, gic, ...) \
|
||||
# define DO_TEST_GIC(name, gic, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, 0, 0, gic, __VA_ARGS__)
|
||||
|
||||
# define DO_TEST_FAILURE(name, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, FLAG_EXPECT_FAILURE, \
|
||||
# define DO_TEST_FAILURE(name, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, FLAG_EXPECT_FAILURE, \
|
||||
0, GIC_NONE, __VA_ARGS__)
|
||||
|
||||
# define DO_TEST_PARSE_ERROR(name, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, \
|
||||
FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \
|
||||
# define DO_TEST_PARSE_ERROR(name, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, \
|
||||
FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \
|
||||
0, GIC_NONE, __VA_ARGS__)
|
||||
|
||||
# define DO_TEST_PARSE_FLAGS_ERROR(name, parseFlags, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, \
|
||||
FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \
|
||||
# define DO_TEST_PARSE_FLAGS_ERROR(name, parseFlags, ...) \
|
||||
DO_TEST_FULL(name, NULL, -1, \
|
||||
FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \
|
||||
parseFlags, GIC_NONE, __VA_ARGS__)
|
||||
|
||||
# define DO_TEST_LINUX(name, ...) \
|
||||
# define DO_TEST_LINUX(name, ...) \
|
||||
DO_TEST_LINUX_FULL(name, NULL, -1, 0, 0, GIC_NONE, __VA_ARGS__)
|
||||
|
||||
# ifdef __linux__
|
||||
@@ -666,12 +666,12 @@ mymain(void)
|
||||
* 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_FULL(name, ...) \
|
||||
# define DO_TEST_LINUX_FULL(name, ...) \
|
||||
DO_TEST_FULL(name, __VA_ARGS__)
|
||||
# else /* __linux__ */
|
||||
# define DO_TEST_LINUX_FULL(name, ...) \
|
||||
do { \
|
||||
const char *tmp ATTRIBUTE_UNUSED = name; \
|
||||
# define DO_TEST_LINUX_FULL(name, ...) \
|
||||
do { \
|
||||
const char *tmp ATTRIBUTE_UNUSED = name; \
|
||||
} while (0)
|
||||
# endif /* __linux__ */
|
||||
|
||||
|
||||
+24
-24
@@ -381,30 +381,30 @@ mymain(void)
|
||||
/* TODO: test with format probing disabled too */
|
||||
driver.config->allowDiskFormatProbing = true;
|
||||
|
||||
# define DO_TEST_FULL(name, when, gic, ...) \
|
||||
do { \
|
||||
if (testInfoSet(&info, name, when, gic) < 0) { \
|
||||
VIR_TEST_DEBUG("Failed to generate test data for '%s'", name); \
|
||||
return -1; \
|
||||
} \
|
||||
virQEMUCapsSetList(info.qemuCaps, __VA_ARGS__, QEMU_CAPS_LAST); \
|
||||
\
|
||||
if (info.outInactiveName) { \
|
||||
if (virTestRun("QEMU XML-2-XML-inactive " name, \
|
||||
testXML2XMLInactive, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
\
|
||||
if (info.outActiveName) { \
|
||||
if (virTestRun("QEMU XML-2-XML-active " name, \
|
||||
testXML2XMLActive, &info) < 0) \
|
||||
ret = -1; \
|
||||
\
|
||||
if (virTestRun("QEMU XML-2-XML-status " name, \
|
||||
testCompareStatusXMLToXMLFiles, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
testInfoFree(&info); \
|
||||
# define DO_TEST_FULL(name, when, gic, ...) \
|
||||
do { \
|
||||
if (testInfoSet(&info, name, when, gic) < 0) { \
|
||||
VIR_TEST_DEBUG("Failed to generate test data for '%s'", name); \
|
||||
return -1; \
|
||||
} \
|
||||
virQEMUCapsSetList(info.qemuCaps, __VA_ARGS__, QEMU_CAPS_LAST); \
|
||||
\
|
||||
if (info.outInactiveName) { \
|
||||
if (virTestRun("QEMU XML-2-XML-inactive " name, \
|
||||
testXML2XMLInactive, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
\
|
||||
if (info.outActiveName) { \
|
||||
if (virTestRun("QEMU XML-2-XML-active " name, \
|
||||
testXML2XMLActive, &info) < 0) \
|
||||
ret = -1; \
|
||||
\
|
||||
if (virTestRun("QEMU XML-2-XML-status " name, \
|
||||
testCompareStatusXMLToXMLFiles, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
testInfoFree(&info); \
|
||||
} while (0)
|
||||
|
||||
# define NONE QEMU_CAPS_LAST
|
||||
|
||||
@@ -68,12 +68,12 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST(name) \
|
||||
do { \
|
||||
const struct testInfo info = {name, false}; \
|
||||
if (virTestRun("Secret XML->XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(name) \
|
||||
do { \
|
||||
const struct testInfo info = {name, false}; \
|
||||
if (virTestRun("Secret XML->XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("ephemeral-usage-volume");
|
||||
|
||||
@@ -360,8 +360,8 @@ mymain(void)
|
||||
if (qemuTestDriverInit(&driver) < 0)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
#define DO_TEST_LABELING(name) \
|
||||
if (virTestRun("Labelling " # name, testSELinuxLabeling, name) < 0) \
|
||||
#define DO_TEST_LABELING(name) \
|
||||
if (virTestRun("Labelling " # name, testSELinuxLabeling, name) < 0) \
|
||||
ret = -1;
|
||||
|
||||
setcon((security_context_t)"system_r:system_u:libvirtd_t:s0:c0.c1023");
|
||||
|
||||
+12
-12
@@ -283,19 +283,19 @@ mymain(void)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
#define DO_TEST_GEN_LABEL(desc, pidcon, \
|
||||
dynamic, label, baselabel, \
|
||||
user, role, imageRole, \
|
||||
type, imageType, \
|
||||
sensMin, sensMax, catMin, catMax) \
|
||||
do { \
|
||||
struct testSELinuxGenLabelData data = { \
|
||||
mgr, pidcon, dynamic, label, baselabel, \
|
||||
user, role, imageRole, type, imageType, \
|
||||
sensMin, sensMax, catMin, catMax \
|
||||
}; \
|
||||
#define DO_TEST_GEN_LABEL(desc, pidcon, \
|
||||
dynamic, label, baselabel, \
|
||||
user, role, imageRole, \
|
||||
type, imageType, \
|
||||
sensMin, sensMax, catMin, catMax) \
|
||||
do { \
|
||||
struct testSELinuxGenLabelData data = { \
|
||||
mgr, pidcon, dynamic, label, baselabel, \
|
||||
user, role, imageRole, type, imageType, \
|
||||
sensMin, sensMax, catMin, catMax \
|
||||
}; \
|
||||
if (virTestRun("GenLabel " # desc, testSELinuxGenLabel, &data) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_GEN_LABEL("dynamic unconfined, s0, c0.c1023",
|
||||
|
||||
@@ -121,13 +121,13 @@ mymain(void)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
#define DO_TEST(in, out) \
|
||||
do { \
|
||||
struct testInfo info = { in, out }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("Xen SEXPR-2-XML " in " -> " out, \
|
||||
testCompareHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(in, out) \
|
||||
do { \
|
||||
struct testInfo info = { in, out }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("Xen SEXPR-2-XML " in " -> " out, \
|
||||
testCompareHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("pv", "pv");
|
||||
|
||||
+66
-66
@@ -274,91 +274,91 @@ mymain(void)
|
||||
*/
|
||||
virTestQuiesceLibvirtErrors(false);
|
||||
|
||||
#define DO_TEST_PARSE_AND_FORMAT(addrstr, family, pass) \
|
||||
do { \
|
||||
virSocketAddr addr; \
|
||||
struct testParseData data = { &addr, addrstr, family, pass }; \
|
||||
memset(&addr, 0, sizeof(addr)); \
|
||||
if (virTestRun("Test parse " addrstr " family " #family, \
|
||||
testParseHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
struct testFormatData data2 = { &addr, addrstr, pass }; \
|
||||
if (virTestRun("Test format " addrstr " family " #family, \
|
||||
testFormatHelper, &data2) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_PARSE_AND_FORMAT(addrstr, family, pass) \
|
||||
do { \
|
||||
virSocketAddr addr; \
|
||||
struct testParseData data = { &addr, addrstr, family, pass }; \
|
||||
memset(&addr, 0, sizeof(addr)); \
|
||||
if (virTestRun("Test parse " addrstr " family " #family, \
|
||||
testParseHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
struct testFormatData data2 = { &addr, addrstr, pass }; \
|
||||
if (virTestRun("Test format " addrstr " family " #family, \
|
||||
testFormatHelper, &data2) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_PARSE_AND_CHECK_FORMAT(addrstr, addrformated, family, pass) \
|
||||
do { \
|
||||
virSocketAddr addr; \
|
||||
struct testParseData data = { &addr, addrstr, family, true}; \
|
||||
memset(&addr, 0, sizeof(addr)); \
|
||||
if (virTestRun("Test parse " addrstr " family " #family, \
|
||||
testParseHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
struct testFormatData data2 = { &addr, addrformated, pass }; \
|
||||
if (virTestRun("Test format " addrstr " family " #family, \
|
||||
testFormatHelper, &data2) < 0) \
|
||||
ret = -1; \
|
||||
do { \
|
||||
virSocketAddr addr; \
|
||||
struct testParseData data = { &addr, addrstr, family, true}; \
|
||||
memset(&addr, 0, sizeof(addr)); \
|
||||
if (virTestRun("Test parse " addrstr " family " #family, \
|
||||
testParseHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
struct testFormatData data2 = { &addr, addrformated, pass }; \
|
||||
if (virTestRun("Test format " addrstr " family " #family, \
|
||||
testFormatHelper, &data2) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_RANGE(saddr, eaddr, netaddr, prefix, size, pass) \
|
||||
do { \
|
||||
struct testRangeData data \
|
||||
= { saddr, eaddr, netaddr, prefix, size, pass }; \
|
||||
if (virTestRun("Test range " saddr " -> " eaddr "(" netaddr \
|
||||
"/" #prefix") size " #size, \
|
||||
testRangeHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_RANGE(saddr, eaddr, netaddr, prefix, size, pass) \
|
||||
do { \
|
||||
struct testRangeData data \
|
||||
= { saddr, eaddr, netaddr, prefix, size, pass }; \
|
||||
if (virTestRun("Test range " saddr " -> " eaddr "(" netaddr \
|
||||
"/" #prefix") size " #size, \
|
||||
testRangeHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_RANGE_SIMPLE(saddr, eaddr, size, pass) \
|
||||
do { \
|
||||
struct testRangeData data \
|
||||
= { saddr, eaddr, NULL, 0, size, pass }; \
|
||||
if (virTestRun("Test range " saddr " -> " eaddr "size " #size, \
|
||||
testRangeHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_RANGE_SIMPLE(saddr, eaddr, size, pass) \
|
||||
do { \
|
||||
struct testRangeData data \
|
||||
= { saddr, eaddr, NULL, 0, size, pass }; \
|
||||
if (virTestRun("Test range " saddr " -> " eaddr "size " #size, \
|
||||
testRangeHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_NETMASK(addr1, addr2, netmask, pass) \
|
||||
do { \
|
||||
struct testNetmaskData data = { addr1, addr2, netmask, pass }; \
|
||||
#define DO_TEST_NETMASK(addr1, addr2, netmask, pass) \
|
||||
do { \
|
||||
struct testNetmaskData data = { addr1, addr2, netmask, pass }; \
|
||||
if (virTestRun("Test netmask " addr1 " + " addr2 " in " netmask, \
|
||||
testNetmaskHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
testNetmaskHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_MASK_NETWORK(addr1, prefix, network) \
|
||||
do { \
|
||||
struct testMaskNetworkData data = { addr1, prefix, network }; \
|
||||
#define DO_TEST_MASK_NETWORK(addr1, prefix, network) \
|
||||
do { \
|
||||
struct testMaskNetworkData data = { addr1, prefix, network }; \
|
||||
if (virTestRun("Test mask network " addr1 " / " #prefix " == " network, \
|
||||
testMaskNetworkHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
testMaskNetworkHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_WILDCARD(addr, pass) \
|
||||
do { \
|
||||
struct testWildcardData data = { addr, pass}; \
|
||||
if (virTestRun("Test wildcard " addr, \
|
||||
testWildcardHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_WILDCARD(addr, pass) \
|
||||
do { \
|
||||
struct testWildcardData data = { addr, pass}; \
|
||||
if (virTestRun("Test wildcard " addr, \
|
||||
testWildcardHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_NUMERIC_FAMILY(addr, pass) \
|
||||
do { \
|
||||
struct testNumericData data = { addr, pass }; \
|
||||
if (virTestRun("Test Numeric Family" addr, \
|
||||
testNumericHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_NUMERIC_FAMILY(addr, pass) \
|
||||
do { \
|
||||
struct testNumericData data = { addr, pass }; \
|
||||
if (virTestRun("Test Numeric Family" addr, \
|
||||
testNumericHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_LOCALHOST(addr, pass) \
|
||||
do { \
|
||||
struct testIsLocalhostData data = { addr, pass }; \
|
||||
if (virTestRun("Test localhost " addr, \
|
||||
testIsLocalhostHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_LOCALHOST(addr, pass) \
|
||||
do { \
|
||||
struct testIsLocalhostData data = { addr, pass }; \
|
||||
if (virTestRun("Test localhost " addr, \
|
||||
testIsLocalhostHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_PARSE_AND_FORMAT("127.0.0.1", AF_UNSPEC, true);
|
||||
|
||||
@@ -185,15 +185,15 @@ mymain(void)
|
||||
abs_srcdir) < 0)
|
||||
goto cleanup;
|
||||
|
||||
#define DO_TEST_NODE(collie) \
|
||||
do { \
|
||||
struct testNodeInfoParserData data = { \
|
||||
.data = collie, \
|
||||
.poolxml = poolxml, \
|
||||
}; \
|
||||
if (virTestRun("node_info_parser", test_node_info_parser, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_NODE(collie) \
|
||||
do { \
|
||||
struct testNodeInfoParserData data = { \
|
||||
.data = collie, \
|
||||
.poolxml = poolxml, \
|
||||
}; \
|
||||
if (virTestRun("node_info_parser", test_node_info_parser, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
while (test->output != NULL) {
|
||||
@@ -202,16 +202,16 @@ mymain(void)
|
||||
}
|
||||
|
||||
|
||||
#define DO_TEST_VDI(collie) \
|
||||
do { \
|
||||
struct testVDIListParserData data = { \
|
||||
.data = collie, \
|
||||
.poolxml = poolxml, \
|
||||
.volxml = volxml, \
|
||||
}; \
|
||||
if (virTestRun("vdi_list_parser", test_vdi_list_parser, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_VDI(collie) \
|
||||
do { \
|
||||
struct testVDIListParserData data = { \
|
||||
.data = collie, \
|
||||
.poolxml = poolxml, \
|
||||
.volxml = volxml, \
|
||||
}; \
|
||||
if (virTestRun("vdi_list_parser", test_vdi_list_parser, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
test = vdi_list_tests;
|
||||
|
||||
@@ -68,9 +68,9 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun("Storage Pool XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
#define DO_TEST(name) \
|
||||
if (virTestRun("Storage Pool XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
ret = -1
|
||||
|
||||
DO_TEST("pool-dir");
|
||||
|
||||
@@ -187,20 +187,20 @@ mymain(void)
|
||||
unsigned int flags = VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA;
|
||||
|
||||
#define DO_TEST_FULL(shouldFail, parseflags, pool, vol, inputpool, inputvol, \
|
||||
cmdline, flags, imgformat) \
|
||||
do { \
|
||||
cmdline, flags, imgformat) \
|
||||
do { \
|
||||
struct testInfo info = { shouldFail, pool, vol, inputpool, inputvol, \
|
||||
cmdline, flags, imgformat, parseflags }; \
|
||||
if (virTestRun("Storage Vol XML-2-argv " cmdline, \
|
||||
testCompareXMLToArgvHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
cmdline, flags, imgformat, parseflags }; \
|
||||
if (virTestRun("Storage Vol XML-2-argv " cmdline, \
|
||||
testCompareXMLToArgvHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
while (0);
|
||||
|
||||
#define DO_TEST(pool, ...) \
|
||||
#define DO_TEST(pool, ...) \
|
||||
DO_TEST_FULL(false, 0, pool, __VA_ARGS__)
|
||||
|
||||
#define DO_TEST_FAIL(pool, ...) \
|
||||
#define DO_TEST_FAIL(pool, ...) \
|
||||
DO_TEST_FULL(true, 0, pool, __VA_ARGS__)
|
||||
|
||||
DO_TEST("pool-dir", "vol-qcow2",
|
||||
|
||||
@@ -86,13 +86,13 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_FULL(pool, name, flags) \
|
||||
do { \
|
||||
struct testInfo info = { pool, name, flags }; \
|
||||
if (virTestRun("Storage Vol XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
#define DO_TEST_FULL(pool, name, flags) \
|
||||
do { \
|
||||
struct testInfo info = { pool, name, flags }; \
|
||||
if (virTestRun("Storage Vol XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} \
|
||||
while (0);
|
||||
|
||||
#define DO_TEST(pool, name) DO_TEST_FULL(pool, name, 0)
|
||||
|
||||
+32
-32
@@ -91,16 +91,16 @@ unsigned int virTestGetVerbose(void);
|
||||
unsigned int virTestGetExpensive(void);
|
||||
unsigned int virTestGetRegenerate(void);
|
||||
|
||||
# define VIR_TEST_DEBUG(...) \
|
||||
do { \
|
||||
if (virTestGetDebug()) \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
# define VIR_TEST_DEBUG(...) \
|
||||
do { \
|
||||
if (virTestGetDebug()) \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
# define VIR_TEST_VERBOSE(...) \
|
||||
do { \
|
||||
if (virTestGetVerbose()) \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
# define VIR_TEST_VERBOSE(...) \
|
||||
do { \
|
||||
if (virTestGetVerbose()) \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
char *virTestLogContentAndReset(void);
|
||||
@@ -116,34 +116,34 @@ int virTestMain(int argc,
|
||||
...);
|
||||
|
||||
/* Setup, then call func() */
|
||||
# define VIR_TEST_MAIN(func) \
|
||||
int main(int argc, char **argv) { \
|
||||
return virTestMain(argc, argv, func, NULL); \
|
||||
# define VIR_TEST_MAIN(func) \
|
||||
int main(int argc, char **argv) { \
|
||||
return virTestMain(argc, argv, func, NULL); \
|
||||
}
|
||||
|
||||
# define VIR_TEST_PRELOAD(lib) \
|
||||
do { \
|
||||
const char *preload = getenv("LD_PRELOAD"); \
|
||||
if (preload == NULL || strstr(preload, lib) == NULL) { \
|
||||
char *newenv; \
|
||||
if (!virFileIsExecutable(lib)) { \
|
||||
perror(lib); \
|
||||
return EXIT_FAILURE; \
|
||||
} \
|
||||
if (!preload) { \
|
||||
newenv = (char *) lib; \
|
||||
} else if (virAsprintf(&newenv, "%s:%s", lib, preload) < 0) { \
|
||||
perror("virAsprintf"); \
|
||||
return EXIT_FAILURE; \
|
||||
} \
|
||||
setenv("LD_PRELOAD", newenv, 1); \
|
||||
execv(argv[0], argv); \
|
||||
} \
|
||||
# define VIR_TEST_PRELOAD(lib) \
|
||||
do { \
|
||||
const char *preload = getenv("LD_PRELOAD"); \
|
||||
if (preload == NULL || strstr(preload, lib) == NULL) { \
|
||||
char *newenv; \
|
||||
if (!virFileIsExecutable(lib)) { \
|
||||
perror(lib); \
|
||||
return EXIT_FAILURE; \
|
||||
} \
|
||||
if (!preload) { \
|
||||
newenv = (char *) lib; \
|
||||
} else if (virAsprintf(&newenv, "%s:%s", lib, preload) < 0) { \
|
||||
perror("virAsprintf"); \
|
||||
return EXIT_FAILURE; \
|
||||
} \
|
||||
setenv("LD_PRELOAD", newenv, 1); \
|
||||
execv(argv[0], argv); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
# define VIR_TEST_MAIN_PRELOAD(func, ...) \
|
||||
int main(int argc, char **argv) { \
|
||||
return virTestMain(argc, argv, func, __VA_ARGS__, NULL); \
|
||||
# define VIR_TEST_MAIN_PRELOAD(func, ...) \
|
||||
int main(int argc, char **argv) { \
|
||||
return virTestMain(argc, argv, func, __VA_ARGS__, NULL); \
|
||||
}
|
||||
|
||||
virCapsPtr virTestGenericCapsInit(void);
|
||||
|
||||
+12
-12
@@ -228,12 +228,12 @@ testRoundValueToPowerOfTwo(const void *data ATTRIBUTE_UNUSED)
|
||||
}
|
||||
|
||||
|
||||
#define TEST_OVERFLOW(var, val, expect) \
|
||||
tmp = val; \
|
||||
if (VIR_ASSIGN_IS_OVERFLOW(var, tmp) != expect) { \
|
||||
fprintf(stderr, "\noverflow check failed: " \
|
||||
"var: " #var " val: " #val "\n"); \
|
||||
return -1; \
|
||||
#define TEST_OVERFLOW(var, val, expect) \
|
||||
tmp = val; \
|
||||
if (VIR_ASSIGN_IS_OVERFLOW(var, tmp) != expect) { \
|
||||
fprintf(stderr, "\noverflow check failed: " \
|
||||
"var: " #var " val: " #val "\n"); \
|
||||
return -1; \
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -266,12 +266,12 @@ mymain(void)
|
||||
|
||||
virTestQuiesceLibvirtErrors(true);
|
||||
|
||||
#define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("Util "#_name, test##_name, \
|
||||
NULL) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
#define DO_TEST(_name) \
|
||||
do { \
|
||||
if (virTestRun("Util "#_name, test##_name, \
|
||||
NULL) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
DO_TEST(IndexToDiskName);
|
||||
|
||||
@@ -134,9 +134,9 @@ mymain(void)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
# define DO_TEST(name) \
|
||||
if (virTestRun("VBox Snapshot XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
# define DO_TEST(name) \
|
||||
if (virTestRun("VBox Snapshot XML-2-XML " name, \
|
||||
testCompareXMLToXMLHelper, (name)) < 0) \
|
||||
ret = -1
|
||||
|
||||
DO_TEST("2disks-nosnap");
|
||||
|
||||
@@ -92,14 +92,14 @@ mymain(void)
|
||||
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
|
||||
#define TEST_LOOKUP(config, hostname, service, credname, expect) \
|
||||
do { \
|
||||
const struct ConfigLookupData data = { \
|
||||
config, hostname, service, credname, expect \
|
||||
}; \
|
||||
#define TEST_LOOKUP(config, hostname, service, credname, expect) \
|
||||
do { \
|
||||
const struct ConfigLookupData data = { \
|
||||
config, hostname, service, credname, expect \
|
||||
}; \
|
||||
if (virTestRun("Test Lookup " hostname "-" service "-" credname, \
|
||||
testAuthLookup, &data) < 0) \
|
||||
ret = -1; \
|
||||
testAuthLookup, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
const char *confdata =
|
||||
|
||||
+22
-22
@@ -608,24 +608,24 @@ test11(const void *opaque)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define TEST_MAP(sz, expect) \
|
||||
do { \
|
||||
char *actual; \
|
||||
if (virBitmapSize(map) != sz) { \
|
||||
fprintf(stderr, "\n expected bitmap size: '%d' actual size: " \
|
||||
"'%zu'\n", sz, virBitmapSize(map)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
\
|
||||
actual = virBitmapFormat(map); \
|
||||
\
|
||||
if (STRNEQ_NULLABLE(expect, actual)) { \
|
||||
#define TEST_MAP(sz, expect) \
|
||||
do { \
|
||||
char *actual; \
|
||||
if (virBitmapSize(map) != sz) { \
|
||||
fprintf(stderr, "\n expected bitmap size: '%d' actual size: " \
|
||||
"'%zu'\n", sz, virBitmapSize(map)); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
\
|
||||
actual = virBitmapFormat(map); \
|
||||
\
|
||||
if (STRNEQ_NULLABLE(expect, actual)) { \
|
||||
fprintf(stderr, "\n expected bitmap contents '%s' actual contents "\
|
||||
"'%s'\n", NULLSTR(expect), NULLSTR(actual)); \
|
||||
VIR_FREE(actual); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
VIR_FREE(actual); \
|
||||
"'%s'\n", NULLSTR(expect), NULLSTR(actual)); \
|
||||
VIR_FREE(actual); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
VIR_FREE(actual); \
|
||||
} while (0)
|
||||
|
||||
/* test self-expanding bitmap APIs */
|
||||
@@ -666,11 +666,11 @@ test12(const void *opaque ATTRIBUTE_UNUSED)
|
||||
#undef TEST_MAP
|
||||
|
||||
|
||||
#define TESTBINARYOP(A, B, RES, FUNC) \
|
||||
testBinaryOpData.a = A; \
|
||||
testBinaryOpData.b = B; \
|
||||
testBinaryOpData.res = RES; \
|
||||
if (virTestRun(virTestCounterNext(), FUNC, &testBinaryOpData) < 0) \
|
||||
#define TESTBINARYOP(A, B, RES, FUNC) \
|
||||
testBinaryOpData.a = A; \
|
||||
testBinaryOpData.b = B; \
|
||||
testBinaryOpData.res = RES; \
|
||||
if (virTestRun(virTestCounterNext(), FUNC, &testBinaryOpData) < 0) \
|
||||
ret = -1;
|
||||
|
||||
static int
|
||||
|
||||
+36
-36
@@ -202,18 +202,18 @@ static int testBufAddBuffer(const void *data ATTRIBUTE_UNUSED)
|
||||
char *result = NULL;
|
||||
const char *expected = \
|
||||
" A long time ago, in a galaxy far,\n" \
|
||||
" far away...\n" \
|
||||
" It is a period of civil war.\n" \
|
||||
" Rebel spaceships, striking\n" \
|
||||
" from a hidden base, have won\n" \
|
||||
" their first victory against\n" \
|
||||
" the evil Galactic Empire.\n" \
|
||||
" During the battle, rebel\n" \
|
||||
" spies managed to steal secret\n" \
|
||||
" plans to the Empire's\n" \
|
||||
" ultimate weapon, the DEATH\n" \
|
||||
" STAR, an armored space\n" \
|
||||
" station with enough power to\n" \
|
||||
" far away...\n" \
|
||||
" It is a period of civil war.\n" \
|
||||
" Rebel spaceships, striking\n" \
|
||||
" from a hidden base, have won\n" \
|
||||
" their first victory against\n" \
|
||||
" the evil Galactic Empire.\n" \
|
||||
" During the battle, rebel\n" \
|
||||
" spies managed to steal secret\n" \
|
||||
" plans to the Empire's\n" \
|
||||
" ultimate weapon, the DEATH\n" \
|
||||
" STAR, an armored space\n" \
|
||||
" station with enough power to\n" \
|
||||
" destroy an entire planet.\n";
|
||||
|
||||
if (virBufferUse(&buf1)) {
|
||||
@@ -467,11 +467,11 @@ mymain(void)
|
||||
int ret = 0;
|
||||
|
||||
|
||||
#define DO_TEST(msg, cb, data) \
|
||||
do { \
|
||||
struct testInfo info = { data }; \
|
||||
if (virTestRun("Buf: " msg, cb, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(msg, cb, data) \
|
||||
do { \
|
||||
struct testInfo info = { data }; \
|
||||
if (virTestRun("Buf: " msg, cb, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("EscapeString infinite loop", testBufInfiniteLoop, 1);
|
||||
@@ -481,11 +481,11 @@ mymain(void)
|
||||
DO_TEST("AddBuffer", testBufAddBuffer, 0);
|
||||
DO_TEST("set indent", testBufSetIndent, 0);
|
||||
|
||||
#define DO_TEST_ADD_STR(DATA, EXPECT) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { DATA, EXPECT }; \
|
||||
if (virTestRun("Buf: AddStr", testBufAddStr, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_ADD_STR(DATA, EXPECT) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { DATA, EXPECT }; \
|
||||
if (virTestRun("Buf: AddStr", testBufAddStr, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_ADD_STR("", "<c>\n</c>");
|
||||
@@ -493,11 +493,11 @@ mymain(void)
|
||||
DO_TEST_ADD_STR("<a/>\n", "<c>\n <a/>\n</c>");
|
||||
DO_TEST_ADD_STR("<b>\n <a/>\n</b>\n", "<c>\n <b>\n <a/>\n </b>\n</c>");
|
||||
|
||||
#define DO_TEST_ESCAPE(data, expect) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { data, expect }; \
|
||||
#define DO_TEST_ESCAPE(data, expect) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { data, expect }; \
|
||||
if (virTestRun("Buf: EscapeStr", testBufEscapeStr, &info) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_ESCAPE("<td></td><td></td>",
|
||||
@@ -509,11 +509,11 @@ mymain(void)
|
||||
DO_TEST_ESCAPE("\x01\x01\x02\x03\x05\x08",
|
||||
"<c>\n <el></el>\n</c>");
|
||||
|
||||
#define DO_TEST_ESCAPEN(data, expect) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { data, expect }; \
|
||||
if (virTestRun("Buf: EscapeN", testBufEscapeN, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_ESCAPEN(data, expect) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { data, expect }; \
|
||||
if (virTestRun("Buf: EscapeN", testBufEscapeN, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_ESCAPEN("noescape", "noescape");
|
||||
@@ -521,11 +521,11 @@ mymain(void)
|
||||
DO_TEST_ESCAPEN("equal=escape", "equal\\=escape");
|
||||
DO_TEST_ESCAPEN("comma,equal=escape", "comma,,equal\\=escape");
|
||||
|
||||
#define DO_TEST_ESCAPE_REGEX(data, expect) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { data, expect }; \
|
||||
if (virTestRun("Buf: EscapeRegex", testBufEscapeRegex, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_ESCAPE_REGEX(data, expect) \
|
||||
do { \
|
||||
struct testBufAddStrData info = { data, expect }; \
|
||||
if (virTestRun("Buf: EscapeRegex", testBufEscapeRegex, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_ESCAPE_REGEX("noescape", "noescape");
|
||||
|
||||
@@ -103,12 +103,12 @@ mymain(void)
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_FULL(filename, arch, offlineMigrate, liveMigrate, resctrl) \
|
||||
do { \
|
||||
struct virCapabilitiesData data = {filename, arch, \
|
||||
offlineMigrate, \
|
||||
liveMigrate, resctrl}; \
|
||||
if (virTestRun(filename, test_virCapabilities, &data) < 0) \
|
||||
ret = -1; \
|
||||
do { \
|
||||
struct virCapabilitiesData data = {filename, arch, \
|
||||
offlineMigrate, \
|
||||
liveMigrate, resctrl}; \
|
||||
if (virTestRun(filename, test_virCapabilities, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST(filename, arch) DO_TEST_FULL(filename, arch, true, true, false)
|
||||
|
||||
+14
-14
@@ -205,10 +205,10 @@ static int make_controller(const char *path, mode_t mode)
|
||||
if (real_mkdir(path, mode) < 0)
|
||||
goto cleanup;
|
||||
|
||||
# define MAKE_FILE(name, value) \
|
||||
do { \
|
||||
if (make_file(path, name, value) < 0) \
|
||||
goto cleanup; \
|
||||
# define MAKE_FILE(name, value) \
|
||||
do { \
|
||||
if (make_file(path, name, value) < 0) \
|
||||
goto cleanup; \
|
||||
} while (0)
|
||||
|
||||
if (STRPREFIX(controller, "cpu,cpuacct")) {
|
||||
@@ -422,17 +422,17 @@ static void init_sysfs(void)
|
||||
abort();
|
||||
}
|
||||
|
||||
# define MAKE_CONTROLLER(subpath) \
|
||||
do { \
|
||||
char *path; \
|
||||
# define MAKE_CONTROLLER(subpath) \
|
||||
do { \
|
||||
char *path; \
|
||||
if (asprintf(&path, "%s/%s", fakesysfscgroupdir, subpath) < 0) \
|
||||
abort(); \
|
||||
if (make_controller(path, 0755) < 0) { \
|
||||
fprintf(stderr, "Cannot initialize %s\n", path); \
|
||||
free(path); \
|
||||
abort(); \
|
||||
} \
|
||||
free(path); \
|
||||
abort(); \
|
||||
if (make_controller(path, 0755) < 0) { \
|
||||
fprintf(stderr, "Cannot initialize %s\n", path); \
|
||||
free(path); \
|
||||
abort(); \
|
||||
} \
|
||||
free(path); \
|
||||
} while (0)
|
||||
|
||||
MAKE_CONTROLLER("cpu");
|
||||
|
||||
+20
-20
@@ -232,13 +232,13 @@ static int testCgroupNewForSelf(const void *args ATTRIBUTE_UNUSED)
|
||||
}
|
||||
|
||||
|
||||
# define ENSURE_ERRNO(en) \
|
||||
do { \
|
||||
if (!virLastErrorIsSystemErrno(en)) { \
|
||||
virErrorPtr err = virGetLastError(); \
|
||||
fprintf(stderr, "Did not get " #en " error code: %d:%d\n", \
|
||||
err ? err->code : 0, err ? err->int1 : 0); \
|
||||
goto cleanup; \
|
||||
# define ENSURE_ERRNO(en) \
|
||||
do { \
|
||||
if (!virLastErrorIsSystemErrno(en)) { \
|
||||
virErrorPtr err = virGetLastError(); \
|
||||
fprintf(stderr, "Did not get " #en " error code: %d:%d\n", \
|
||||
err ? err->code : 0, err ? err->int1 : 0); \
|
||||
goto cleanup; \
|
||||
} } while (0)
|
||||
|
||||
/* Asking for impossible combination since CPU is co-mounted */
|
||||
@@ -586,13 +586,13 @@ static int testCgroupControllerAvailable(const void *args ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
# define CHECK_CONTROLLER(c, present) \
|
||||
if ((present && !virCgroupControllerAvailable(c)) || \
|
||||
(!present && virCgroupControllerAvailable(c))) { \
|
||||
fprintf(stderr, present ? \
|
||||
"Expected controller %s not available\n" : \
|
||||
"Unexpected controller %s available\n", #c); \
|
||||
ret = -1; \
|
||||
# define CHECK_CONTROLLER(c, present) \
|
||||
if ((present && !virCgroupControllerAvailable(c)) || \
|
||||
(!present && virCgroupControllerAvailable(c))) { \
|
||||
fprintf(stderr, present ? \
|
||||
"Expected controller %s not available\n" : \
|
||||
"Unexpected controller %s available\n", #c); \
|
||||
ret = -1; \
|
||||
}
|
||||
|
||||
CHECK_CONTROLLER(VIR_CGROUP_CONTROLLER_CPU, true)
|
||||
@@ -870,12 +870,12 @@ mymain(void)
|
||||
|
||||
setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);
|
||||
|
||||
# define DETECT_MOUNTS(file) \
|
||||
do { \
|
||||
if (virTestRun("Detect cgroup mounts for " file, \
|
||||
testCgroupDetectMounts, \
|
||||
file) < 0) \
|
||||
ret = -1; \
|
||||
# define DETECT_MOUNTS(file) \
|
||||
do { \
|
||||
if (virTestRun("Detect cgroup mounts for " file, \
|
||||
testCgroupDetectMounts, \
|
||||
file) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DETECT_MOUNTS("ovirt-node-6.6");
|
||||
|
||||
+15
-15
@@ -79,13 +79,13 @@ static int testConfRoundTrip(const void *opaque)
|
||||
|
||||
static int testConfParseInt(const void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
const char *srcdata = \
|
||||
"int = -1729\n" \
|
||||
"uint = 1729\n" \
|
||||
"llong = -6963472309248\n" \
|
||||
"ullong = 6963472309248\n" \
|
||||
"size_t = 87539319\n" \
|
||||
"ssize_t = -87539319\n" \
|
||||
const char *srcdata = \
|
||||
"int = -1729\n" \
|
||||
"uint = 1729\n" \
|
||||
"llong = -6963472309248\n" \
|
||||
"ullong = 6963472309248\n" \
|
||||
"size_t = 87539319\n" \
|
||||
"ssize_t = -87539319\n" \
|
||||
"string = \"foo\"\n";
|
||||
|
||||
int ret = -1;
|
||||
@@ -231,10 +231,10 @@ static int testConfParseInt(const void *opaque ATTRIBUTE_UNUSED)
|
||||
|
||||
static int testConfParseBool(const void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
const char *srcdata = \
|
||||
"false = 0\n" \
|
||||
"true = 1\n" \
|
||||
"int = 6963472309248\n" \
|
||||
const char *srcdata = \
|
||||
"false = 0\n" \
|
||||
"true = 1\n" \
|
||||
"int = 6963472309248\n" \
|
||||
"string = \"foo\"\n";
|
||||
|
||||
int ret = -1;
|
||||
@@ -297,8 +297,8 @@ static int testConfParseBool(const void *opaque ATTRIBUTE_UNUSED)
|
||||
|
||||
static int testConfParseString(const void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
const char *srcdata = \
|
||||
"int = 6963472309248\n" \
|
||||
const char *srcdata = \
|
||||
"int = 6963472309248\n" \
|
||||
"string = \"foo\"\n";
|
||||
|
||||
int ret = -1;
|
||||
@@ -337,8 +337,8 @@ static int testConfParseString(const void *opaque ATTRIBUTE_UNUSED)
|
||||
|
||||
static int testConfParseStringList(const void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
const char *srcdata = \
|
||||
"string_list = [\"foo\", \"bar\"]\n" \
|
||||
const char *srcdata = \
|
||||
"string_list = [\"foo\", \"bar\"]\n" \
|
||||
"string = \"foo\"\n";
|
||||
|
||||
int ret = -1;
|
||||
|
||||
+20
-20
@@ -129,15 +129,15 @@ mymain(void)
|
||||
0x1b, 0x8c, 0x3f, 0x48,
|
||||
0x27, 0xae, 0xb6, 0x7a};
|
||||
|
||||
#define VIR_CRYPTO_HASH(h, i, o) \
|
||||
do { \
|
||||
struct testCryptoHashData data = { \
|
||||
.hash = h, \
|
||||
.input = i, \
|
||||
.output = o, \
|
||||
}; \
|
||||
if (virTestRun("Hash " i, testCryptoHash, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define VIR_CRYPTO_HASH(h, i, o) \
|
||||
do { \
|
||||
struct testCryptoHashData data = { \
|
||||
.hash = h, \
|
||||
.input = i, \
|
||||
.output = o, \
|
||||
}; \
|
||||
if (virTestRun("Hash " i, testCryptoHash, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
VIR_CRYPTO_HASH(VIR_CRYPTO_HASH_MD5, "", "d41d8cd98f00b204e9800998ecf8427e");
|
||||
@@ -154,17 +154,17 @@ mymain(void)
|
||||
|
||||
#undef VIR_CRYPTO_HASH
|
||||
|
||||
#define VIR_CRYPTO_ENCRYPT(a, n, i, il, c, cl) \
|
||||
do { \
|
||||
struct testCryptoEncryptData data = { \
|
||||
.algorithm = a, \
|
||||
.input = i, \
|
||||
.inputlen = il, \
|
||||
.ciphertext = c, \
|
||||
.ciphertextlen = cl, \
|
||||
}; \
|
||||
if (virTestRun("Encrypt " n, testCryptoEncrypt, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define VIR_CRYPTO_ENCRYPT(a, n, i, il, c, cl) \
|
||||
do { \
|
||||
struct testCryptoEncryptData data = { \
|
||||
.algorithm = a, \
|
||||
.input = i, \
|
||||
.inputlen = il, \
|
||||
.ciphertext = c, \
|
||||
.ciphertextlen = cl, \
|
||||
}; \
|
||||
if (virTestRun("Encrypt " n, testCryptoEncrypt, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
memset(&secretdata, 0, 8);
|
||||
|
||||
+18
-18
@@ -28,26 +28,26 @@
|
||||
|
||||
VIR_LOG_INIT("tests.dbustest");
|
||||
|
||||
#define VERIFY(typname, valorig, valnew, fmt) \
|
||||
do { \
|
||||
VIR_DEBUG("Compare " typname " '" fmt "' to '" \
|
||||
fmt "'", valorig, valnew); \
|
||||
if (valorig != valnew) { \
|
||||
fprintf(stderr, "Failed to round-trip " typname " '" \
|
||||
fmt "' to '" fmt "'\n", valorig, valnew); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define VERIFY(typname, valorig, valnew, fmt) \
|
||||
do { \
|
||||
VIR_DEBUG("Compare " typname " '" fmt "' to '" \
|
||||
fmt "'", valorig, valnew); \
|
||||
if (valorig != valnew) { \
|
||||
fprintf(stderr, "Failed to round-trip " typname " '" \
|
||||
fmt "' to '" fmt "'\n", valorig, valnew); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define VERIFY_STR(typname, valorig, valnew, fmt) \
|
||||
do { \
|
||||
VIR_DEBUG("Compare " typname " '" fmt "' to '" \
|
||||
fmt "'", valorig, valnew); \
|
||||
if (STRNEQ(valorig, valnew)) { \
|
||||
fprintf(stderr, "Failed to round-trip " typname " '" \
|
||||
fmt "' to '" fmt "'\n", valorig, valnew); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define VERIFY_STR(typname, valorig, valnew, fmt) \
|
||||
do { \
|
||||
VIR_DEBUG("Compare " typname " '" fmt "' to '" \
|
||||
fmt "'", valorig, valnew); \
|
||||
if (STRNEQ(valorig, valnew)) { \
|
||||
fprintf(stderr, "Failed to round-trip " typname " '" \
|
||||
fmt "' to '" fmt "'\n", valorig, valnew); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
static int testMessageSimple(const void *args ATTRIBUTE_UNUSED)
|
||||
|
||||
@@ -54,12 +54,12 @@ mymain(void)
|
||||
int ret = 0;
|
||||
struct testDriverModuleData data;
|
||||
|
||||
#define TEST_FULL(name, fnc) \
|
||||
do { \
|
||||
data.module = name; \
|
||||
data.regfunc = fnc; \
|
||||
if (virTestRun("Test driver " # name, testDriverModule, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_FULL(name, fnc) \
|
||||
do { \
|
||||
data.module = name; \
|
||||
data.regfunc = fnc; \
|
||||
if (virTestRun("Test driver " # name, testDriverModule, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define TEST(name) TEST_FULL(name, name "Register")
|
||||
|
||||
@@ -215,13 +215,13 @@ mymain(void)
|
||||
|
||||
virFileCacheSetPriv(cache, &testPriv);
|
||||
|
||||
#define TEST_RUN(name, newData, expectData, expectSave) \
|
||||
do { \
|
||||
testFileCacheData data = { \
|
||||
cache, name, newData, expectData, expectSave \
|
||||
}; \
|
||||
if (virTestRun(name, testFileCache, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_RUN(name, newData, expectData, expectSave) \
|
||||
do { \
|
||||
testFileCacheData data = { \
|
||||
cache, name, newData, expectData, expectSave \
|
||||
}; \
|
||||
if (virTestRun(name, testFileCache, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
/* The cache file name is created using:
|
||||
|
||||
+22
-22
@@ -333,13 +333,13 @@ mymain(void)
|
||||
"/etc/aliases.db"
|
||||
};
|
||||
|
||||
# define DO_TEST_MOUNT_SUBTREE(name, path, prefix, mounts, rev) \
|
||||
do { \
|
||||
struct testFileGetMountSubtreeData data = { \
|
||||
path, prefix, mounts, ARRAY_CARDINALITY(mounts), rev \
|
||||
}; \
|
||||
if (virTestRun(name, testFileGetMountSubtree, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST_MOUNT_SUBTREE(name, path, prefix, mounts, rev) \
|
||||
do { \
|
||||
struct testFileGetMountSubtreeData data = { \
|
||||
path, prefix, mounts, ARRAY_CARDINALITY(mounts), rev \
|
||||
}; \
|
||||
if (virTestRun(name, testFileGetMountSubtree, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_MOUNT_SUBTREE("/proc normal", MTAB_PATH1, "/proc", wantmounts1, false);
|
||||
@@ -348,13 +348,13 @@ mymain(void)
|
||||
DO_TEST_MOUNT_SUBTREE("/etc/aliases.db", MTAB_PATH2, "/etc/aliases.db", wantmounts2b, false);
|
||||
#endif /* ! defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R */
|
||||
|
||||
#define DO_TEST_SANITIZE_PATH(PATH, EXPECT) \
|
||||
do { \
|
||||
data1.path = PATH; \
|
||||
data1.expect = EXPECT; \
|
||||
if (virTestRun(virTestCounterNext(), testFileSanitizePath, \
|
||||
&data1) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_SANITIZE_PATH(PATH, EXPECT) \
|
||||
do { \
|
||||
data1.path = PATH; \
|
||||
data1.expect = EXPECT; \
|
||||
if (virTestRun(virTestCounterNext(), testFileSanitizePath, \
|
||||
&data1) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_SANITIZE_PATH_SAME(PATH) DO_TEST_SANITIZE_PATH(PATH, PATH)
|
||||
@@ -378,14 +378,14 @@ mymain(void)
|
||||
DO_TEST_SANITIZE_PATH_SAME("gluster://bar.baz/fooo//hoo");
|
||||
DO_TEST_SANITIZE_PATH_SAME("gluster://bar.baz/fooo///////hoo");
|
||||
|
||||
#define DO_TEST_IN_DATA(inData, ...) \
|
||||
do { \
|
||||
off_t offsets[] = {__VA_ARGS__, -1}; \
|
||||
struct testFileInData data = { \
|
||||
.startData = inData, .offsets = offsets, \
|
||||
}; \
|
||||
if (virTestRun(virTestCounterNext(), testFileInData, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_IN_DATA(inData, ...) \
|
||||
do { \
|
||||
off_t offsets[] = {__VA_ARGS__, -1}; \
|
||||
struct testFileInData data = { \
|
||||
.startData = inData, .offsets = offsets, \
|
||||
}; \
|
||||
if (virTestRun(virTestCounterNext(), testFileInData, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
if (holesSupported()) {
|
||||
|
||||
@@ -141,13 +141,13 @@ virFileWrapperOverridePrefix(const char *path)
|
||||
}
|
||||
|
||||
|
||||
# define PATH_OVERRIDE(newpath, path) \
|
||||
do { \
|
||||
init_syms(); \
|
||||
\
|
||||
newpath = virFileWrapperOverridePrefix(path); \
|
||||
if (!newpath) \
|
||||
abort(); \
|
||||
# define PATH_OVERRIDE(newpath, path) \
|
||||
do { \
|
||||
init_syms(); \
|
||||
\
|
||||
newpath = virFileWrapperOverridePrefix(path); \
|
||||
if (!newpath) \
|
||||
abort(); \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
+48
-48
@@ -43,27 +43,27 @@ static bool fwDisabled = true;
|
||||
static virBufferPtr fwBuf;
|
||||
static bool fwError;
|
||||
|
||||
# define TEST_FILTER_TABLE_LIST \
|
||||
"Chain INPUT (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain FORWARD (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain OUTPUT (policy ACCEPT)\n" \
|
||||
# define TEST_FILTER_TABLE_LIST \
|
||||
"Chain INPUT (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain FORWARD (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain OUTPUT (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n"
|
||||
|
||||
# define TEST_NAT_TABLE_LIST \
|
||||
"Chain PREROUTING (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain INPUT (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain OUTPUT (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain POSTROUTING (policy ACCEPT)\n" \
|
||||
# define TEST_NAT_TABLE_LIST \
|
||||
"Chain PREROUTING (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain INPUT (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain OUTPUT (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n" \
|
||||
"\n" \
|
||||
"Chain POSTROUTING (policy ACCEPT)\n" \
|
||||
"target prot opt source destination\n"
|
||||
|
||||
# if WITH_DBUS
|
||||
@@ -1141,42 +1141,42 @@ mymain(void)
|
||||
return EXIT_AM_SKIP;
|
||||
}
|
||||
|
||||
# define RUN_TEST_DIRECT(name, method) \
|
||||
do { \
|
||||
struct testFirewallData data; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_AUTOMATIC; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_DIRECT; \
|
||||
data.fwDisabled = true; \
|
||||
if (virTestRun(name " auto direct", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_DIRECT; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_DIRECT; \
|
||||
data.fwDisabled = true; \
|
||||
if (virTestRun(name " manual direct", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define RUN_TEST_DIRECT(name, method) \
|
||||
do { \
|
||||
struct testFirewallData data; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_AUTOMATIC; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_DIRECT; \
|
||||
data.fwDisabled = true; \
|
||||
if (virTestRun(name " auto direct", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_DIRECT; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_DIRECT; \
|
||||
data.fwDisabled = true; \
|
||||
if (virTestRun(name " manual direct", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# if WITH_DBUS
|
||||
# define RUN_TEST_FIREWALLD(name, method) \
|
||||
do { \
|
||||
struct testFirewallData data; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_AUTOMATIC; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_FIREWALLD; \
|
||||
data.fwDisabled = false; \
|
||||
if (virTestRun(name " auto firewalld", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_FIREWALLD; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_FIREWALLD; \
|
||||
data.fwDisabled = false; \
|
||||
if (virTestRun(name " manual firewalld", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define RUN_TEST_FIREWALLD(name, method) \
|
||||
do { \
|
||||
struct testFirewallData data; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_AUTOMATIC; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_FIREWALLD; \
|
||||
data.fwDisabled = false; \
|
||||
if (virTestRun(name " auto firewalld", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
data.tryBackend = VIR_FIREWALL_BACKEND_FIREWALLD; \
|
||||
data.expectBackend = VIR_FIREWALL_BACKEND_FIREWALLD; \
|
||||
data.fwDisabled = false; \
|
||||
if (virTestRun(name " manual firewalld", method, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define RUN_TEST(name, method) \
|
||||
RUN_TEST_DIRECT(name, method); \
|
||||
# define RUN_TEST(name, method) \
|
||||
RUN_TEST_DIRECT(name, method); \
|
||||
RUN_TEST_FIREWALLD(name, method)
|
||||
# else /* ! WITH_DBUS */
|
||||
# define RUN_TEST(name, method) \
|
||||
# define RUN_TEST(name, method) \
|
||||
RUN_TEST_DIRECT(name, method)
|
||||
# endif /* ! WITH_DBUS */
|
||||
|
||||
|
||||
+11
-11
@@ -602,23 +602,23 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_FULL(name, cmd, data, count) \
|
||||
do { \
|
||||
struct testInfo info = { data, count }; \
|
||||
if (virTestRun(name, testHash ## cmd, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FULL(name, cmd, data, count) \
|
||||
do { \
|
||||
struct testInfo info = { data, count }; \
|
||||
if (virTestRun(name, testHash ## cmd, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_DATA(name, cmd, data) \
|
||||
DO_TEST_FULL(name "(" #data ")", \
|
||||
cmd, \
|
||||
testHash ## cmd ## data, \
|
||||
#define DO_TEST_DATA(name, cmd, data) \
|
||||
DO_TEST_FULL(name "(" #data ")", \
|
||||
cmd, \
|
||||
testHash ## cmd ## data, \
|
||||
testHashCount ## cmd ## data)
|
||||
|
||||
#define DO_TEST_COUNT(name, cmd, count) \
|
||||
#define DO_TEST_COUNT(name, cmd, count) \
|
||||
DO_TEST_FULL(name "(" #count ")", cmd, NULL, count)
|
||||
|
||||
#define DO_TEST(name, cmd) \
|
||||
#define DO_TEST(name, cmd) \
|
||||
DO_TEST_FULL(name, cmd, NULL, -1)
|
||||
|
||||
DO_TEST_COUNT("Grow", Grow, 1);
|
||||
|
||||
+14
-14
@@ -38,15 +38,15 @@
|
||||
|
||||
VIR_LOG_INIT("tests.hostdevtest");
|
||||
|
||||
# define CHECK_LIST_COUNT(list, cnt) \
|
||||
do { \
|
||||
size_t actualCount; \
|
||||
if ((actualCount = virPCIDeviceListCount(list)) != cnt) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Unexpected count of items in " #list ": %zu, " \
|
||||
"expecting %zu", actualCount, (size_t) cnt); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
# define CHECK_LIST_COUNT(list, cnt) \
|
||||
do { \
|
||||
size_t actualCount; \
|
||||
if ((actualCount = virPCIDeviceListCount(list)) != cnt) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Unexpected count of items in " #list ": %zu, " \
|
||||
"expecting %zu", actualCount, (size_t) cnt); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
# define TEST_STATE_DIR abs_builddir "/hostdevmgr"
|
||||
@@ -608,11 +608,11 @@ mymain(void)
|
||||
|
||||
setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);
|
||||
|
||||
# define DO_TEST(fnc) \
|
||||
do { \
|
||||
VIR_DEBUG("Testing: %s", #fnc); \
|
||||
if (virTestRun(#fnc, fnc, NULL) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(fnc) \
|
||||
do { \
|
||||
VIR_DEBUG("Testing: %s", #fnc); \
|
||||
if (virTestRun(#fnc, fnc, NULL) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
if (myInit() < 0)
|
||||
|
||||
+10
-10
@@ -179,16 +179,16 @@ mymain(void)
|
||||
{
|
||||
int rv = 0;
|
||||
|
||||
# define DO_SESSION_TEST(name, session) \
|
||||
do { \
|
||||
struct testSessionInfo info = {name, 0, session}; \
|
||||
if (virTestRun("ISCSI get session test" name, \
|
||||
testISCSIGetSession, &info) < 0) \
|
||||
rv = -1; \
|
||||
info.output_version = 1; \
|
||||
if (virTestRun("ISCSI get (non-flash) session test" name, \
|
||||
testISCSIGetSession, &info) < 0) \
|
||||
rv = -1; \
|
||||
# define DO_SESSION_TEST(name, session) \
|
||||
do { \
|
||||
struct testSessionInfo info = {name, 0, session}; \
|
||||
if (virTestRun("ISCSI get session test" name, \
|
||||
testISCSIGetSession, &info) < 0) \
|
||||
rv = -1; \
|
||||
info.output_version = 1; \
|
||||
if (virTestRun("ISCSI get (non-flash) session test" name, \
|
||||
testISCSIGetSession, &info) < 0) \
|
||||
rv = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_SESSION_TEST("iqn.2004-06.example:example1:iscsi.test", "1");
|
||||
|
||||
+7
-7
@@ -434,11 +434,11 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_FULL(name, cmd, doc, expect, pass) \
|
||||
do { \
|
||||
struct testInfo info = { doc, expect, pass }; \
|
||||
if (virTestRun(name, testJSON ## cmd, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FULL(name, cmd, doc, expect, pass) \
|
||||
do { \
|
||||
struct testInfo info = { doc, expect, pass }; \
|
||||
if (virTestRun(name, testJSON ## cmd, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
@@ -450,10 +450,10 @@ mymain(void)
|
||||
* Parses @doc and formats it back. If @expect is NULL the result has to be
|
||||
* identical to @doc.
|
||||
*/
|
||||
#define DO_TEST_PARSE(name, doc, expect) \
|
||||
#define DO_TEST_PARSE(name, doc, expect) \
|
||||
DO_TEST_FULL(name, FromString, doc, expect, true)
|
||||
|
||||
#define DO_TEST_PARSE_FAIL(name, doc) \
|
||||
#define DO_TEST_PARSE_FAIL(name, doc) \
|
||||
DO_TEST_FULL(name, FromString, doc, NULL, false)
|
||||
|
||||
|
||||
|
||||
+16
-16
@@ -41,15 +41,15 @@ static int testKeycodeMapping(const void *data ATTRIBUTE_UNUSED)
|
||||
int ret = -1;
|
||||
int got;
|
||||
|
||||
#define TRANSLATE(from, to, val, want) \
|
||||
do { \
|
||||
if ((got = virKeycodeValueTranslate(VIR_KEYCODE_SET_##from, \
|
||||
VIR_KEYCODE_SET_##to, \
|
||||
val)) != want) { \
|
||||
#define TRANSLATE(from, to, val, want) \
|
||||
do { \
|
||||
if ((got = virKeycodeValueTranslate(VIR_KEYCODE_SET_##from, \
|
||||
VIR_KEYCODE_SET_##to, \
|
||||
val)) != want) { \
|
||||
fprintf(stderr, "Translating %d from %s to %s, got %d want %d\n", \
|
||||
val, #from, #to, got, want); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
val, #from, #to, got, want); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
TRANSLATE(LINUX, LINUX, 111, 111);
|
||||
@@ -74,14 +74,14 @@ static int testKeycodeStrings(const void *data ATTRIBUTE_UNUSED)
|
||||
int ret = -1;
|
||||
int got;
|
||||
|
||||
#define TRANSLATE(from, str, want) \
|
||||
do { \
|
||||
if ((got = virKeycodeValueFromString(VIR_KEYCODE_SET_##from, \
|
||||
str)) != want) { \
|
||||
fprintf(stderr, "Converting %s from %s, got %d want %d\n", \
|
||||
str, #from, got, want); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define TRANSLATE(from, str, want) \
|
||||
do { \
|
||||
if ((got = virKeycodeValueFromString(VIR_KEYCODE_SET_##from, \
|
||||
str)) != want) { \
|
||||
fprintf(stderr, "Converting %s from %s, got %d want %d\n", \
|
||||
str, #from, got, want); \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
TRANSLATE(LINUX, "KEY_DELETE", 111);
|
||||
|
||||
+7
-7
@@ -157,13 +157,13 @@ mymain(void)
|
||||
* the output of the created command against what we'd expect to be
|
||||
* created. So let's at least do that.
|
||||
*/
|
||||
# define DO_TEST(_name, _cb, _blkflag, _exp_cmd) \
|
||||
do { \
|
||||
struct testInfo data = {.module = "vfio-pci", \
|
||||
.exp_cmd = _exp_cmd, \
|
||||
.useBlacklist = _blkflag}; \
|
||||
if (virTestRun(_name, _cb, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(_name, _cb, _blkflag, _exp_cmd) \
|
||||
do { \
|
||||
struct testInfo data = {.module = "vfio-pci", \
|
||||
.exp_cmd = _exp_cmd, \
|
||||
.useBlacklist = _blkflag}; \
|
||||
if (virTestRun(_name, _cb, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("load", testKModLoad, false, MODPROBE " vfio-pci\n");
|
||||
|
||||
+13
-13
@@ -112,27 +112,27 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_FULL(name, test, str, count, pass) \
|
||||
do { \
|
||||
struct testLogData data = { \
|
||||
str, count, pass \
|
||||
}; \
|
||||
if (virTestRun(name, test, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FULL(name, test, str, count, pass) \
|
||||
do { \
|
||||
struct testLogData data = { \
|
||||
str, count, pass \
|
||||
}; \
|
||||
if (virTestRun(name, test, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define TEST_LOG_MATCH_FAIL(str) \
|
||||
#define TEST_LOG_MATCH_FAIL(str) \
|
||||
DO_TEST_FULL("testLogMatch " # str, testLogMatch, str, 0, false)
|
||||
#define TEST_LOG_MATCH(str) \
|
||||
#define TEST_LOG_MATCH(str) \
|
||||
DO_TEST_FULL("testLogMatch " # str, testLogMatch, str, 0, true)
|
||||
|
||||
#define TEST_PARSE_OUTPUTS_FAIL(str, count) \
|
||||
#define TEST_PARSE_OUTPUTS_FAIL(str, count) \
|
||||
DO_TEST_FULL("testLogParseOutputs " # str, testLogParseOutputs, str, count, false)
|
||||
#define TEST_PARSE_OUTPUTS(str, count) \
|
||||
#define TEST_PARSE_OUTPUTS(str, count) \
|
||||
DO_TEST_FULL("testLogParseOutputs " # str, testLogParseOutputs, str, count, true)
|
||||
#define TEST_PARSE_FILTERS_FAIL(str, count) \
|
||||
#define TEST_PARSE_FILTERS_FAIL(str, count) \
|
||||
DO_TEST_FULL("testLogParseFilters " # str, testLogParseFilters, str, count, false)
|
||||
#define TEST_PARSE_FILTERS(str, count) \
|
||||
#define TEST_PARSE_FILTERS(str, count) \
|
||||
DO_TEST_FULL("testLogParseFilters " # str, testLogParseFilters, str, count, true)
|
||||
|
||||
|
||||
|
||||
+33
-33
@@ -157,47 +157,47 @@ mymain(void)
|
||||
int ret = 0;
|
||||
virMacMapPtr mgr = NULL;
|
||||
|
||||
#define DO_TEST_BASIC(f, d, ...) \
|
||||
do { \
|
||||
const char * const m[] = {__VA_ARGS__, NULL }; \
|
||||
#define DO_TEST_BASIC(f, d, ...) \
|
||||
do { \
|
||||
const char * const m[] = {__VA_ARGS__, NULL }; \
|
||||
struct testData data = {.file = f, .domain = d, .macs = m}; \
|
||||
if (virTestRun("Lookup " #d " in " #f, \
|
||||
testMACLookup, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Remove " #d " in " #f, \
|
||||
testMACRemove, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Lookup " #d " in " #f, \
|
||||
testMACLookup, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Remove " #d " in " #f, \
|
||||
testMACRemove, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_FLUSH_PROLOGUE \
|
||||
do { \
|
||||
if (!(mgr = virMacMapNew(NULL))) { \
|
||||
ret = -1; \
|
||||
goto cleanup; \
|
||||
} \
|
||||
#define DO_TEST_FLUSH_PROLOGUE \
|
||||
do { \
|
||||
if (!(mgr = virMacMapNew(NULL))) { \
|
||||
ret = -1; \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_FLUSH(d, ...) \
|
||||
do { \
|
||||
const char * const m[] = {__VA_ARGS__, NULL }; \
|
||||
size_t i; \
|
||||
for (i = 0; m[i]; i++) { \
|
||||
if (virMacMapAdd(mgr, d, m[i]) < 0) { \
|
||||
virObjectUnref(mgr); \
|
||||
mgr = NULL; \
|
||||
ret = -1; \
|
||||
} \
|
||||
} \
|
||||
#define DO_TEST_FLUSH(d, ...) \
|
||||
do { \
|
||||
const char * const m[] = {__VA_ARGS__, NULL }; \
|
||||
size_t i; \
|
||||
for (i = 0; m[i]; i++) { \
|
||||
if (virMacMapAdd(mgr, d, m[i]) < 0) { \
|
||||
virObjectUnref(mgr); \
|
||||
mgr = NULL; \
|
||||
ret = -1; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define DO_TEST_FLUSH_EPILOGUE(f) \
|
||||
do { \
|
||||
struct testData data = {.file = f, .mgr = mgr}; \
|
||||
if (virTestRun("Flush " #f, testMACFlush, &data) < 0) \
|
||||
ret = -1; \
|
||||
virObjectUnref(mgr); \
|
||||
mgr = NULL; \
|
||||
#define DO_TEST_FLUSH_EPILOGUE(f) \
|
||||
do { \
|
||||
struct testData data = {.file = f, .mgr = mgr}; \
|
||||
if (virTestRun("Flush " #f, testMACFlush, &data) < 0) \
|
||||
ret = -1; \
|
||||
virObjectUnref(mgr); \
|
||||
mgr = NULL; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_BASIC("empty", "none", NULL);
|
||||
|
||||
+93
-93
@@ -62,19 +62,19 @@
|
||||
|
||||
|
||||
# define VIR_MOCK_ARGNAMES_EXPAND(a, b, ...) VIR_MOCK_ARG_PASTE(a, b, __VA_ARGS__)
|
||||
# define VIR_MOCK_ARGNAMES(...) \
|
||||
# define VIR_MOCK_ARGNAMES(...) \
|
||||
VIR_MOCK_ARGNAMES_EXPAND(VIR_MOCK_GET_ARG, VIR_MOCK_COUNT_ARGS(__VA_ARGS__), VIR_MOCK_ARGNAME, __VA_ARGS__)
|
||||
|
||||
# define VIR_MOCK_ARGTYPES_EXPAND(a, b, ...) VIR_MOCK_ARG_PASTE(a, b, __VA_ARGS__)
|
||||
# define VIR_MOCK_ARGTYPES(...) \
|
||||
# define VIR_MOCK_ARGTYPES(...) \
|
||||
VIR_MOCK_ARGTYPES_EXPAND(VIR_MOCK_GET_ARG, VIR_MOCK_COUNT_ARGS(__VA_ARGS__), VIR_MOCK_ARGTYPE, __VA_ARGS__)
|
||||
|
||||
# define VIR_MOCK_ARGTYPENAMES_EXPAND(a, b, ...) VIR_MOCK_ARG_PASTE(a, b, __VA_ARGS__)
|
||||
# define VIR_MOCK_ARGTYPENAMES(...) \
|
||||
# define VIR_MOCK_ARGTYPENAMES(...) \
|
||||
VIR_MOCK_ARGTYPENAMES_EXPAND(VIR_MOCK_GET_ARG, VIR_MOCK_COUNT_ARGS(__VA_ARGS__), VIR_MOCK_ARGTYPENAME, __VA_ARGS__)
|
||||
|
||||
# define VIR_MOCK_ARGTYPENAMES_UNUSED_EXPAND(a, b, ...) VIR_MOCK_ARG_PASTE(a, b, __VA_ARGS__)
|
||||
# define VIR_MOCK_ARGTYPENAMES_UNUSED(...) \
|
||||
# define VIR_MOCK_ARGTYPENAMES_UNUSED(...) \
|
||||
VIR_MOCK_ARGTYPENAMES_UNUSED_EXPAND(VIR_MOCK_GET_ARG, VIR_MOCK_COUNT_ARGS(__VA_ARGS__), VIR_MOCK_ARGTYPENAME_UNUSED, __VA_ARGS__)
|
||||
|
||||
|
||||
@@ -100,18 +100,18 @@
|
||||
* Define a replacement for @name which invokes wrap_@name
|
||||
* forwarding on all args, and passing back the return value.
|
||||
*/
|
||||
# define VIR_MOCK_LINK_RET_ARGS(name, rettype, ...) \
|
||||
rettype name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)) \
|
||||
{ \
|
||||
static rettype (*wrap_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
if (wrap_##name == NULL && \
|
||||
!(wrap_##name = dlsym(RTLD_DEFAULT, \
|
||||
"wrap_" #name))) { \
|
||||
fprintf(stderr, "Missing symbol 'wrap_" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
\
|
||||
return wrap_##name(VIR_MOCK_ARGNAMES(__VA_ARGS__)); \
|
||||
# define VIR_MOCK_LINK_RET_ARGS(name, rettype, ...) \
|
||||
rettype name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)) \
|
||||
{ \
|
||||
static rettype (*wrap_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
if (wrap_##name == NULL && \
|
||||
!(wrap_##name = dlsym(RTLD_DEFAULT, \
|
||||
"wrap_" #name))) { \
|
||||
fprintf(stderr, "Missing symbol 'wrap_" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
\
|
||||
return wrap_##name(VIR_MOCK_ARGNAMES(__VA_ARGS__)); \
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -122,18 +122,18 @@
|
||||
* Define a replacement for @name which invokes wrap_@name
|
||||
* with no arguments, and passing back the return value.
|
||||
*/
|
||||
# define VIR_MOCK_LINK_RET_VOID(name, rettype) \
|
||||
rettype name(void) \
|
||||
{ \
|
||||
static rettype (*wrap_##name)(void); \
|
||||
if (wrap_##name == NULL && \
|
||||
!(wrap_##name = dlsym(RTLD_DEFAULT, \
|
||||
"wrap_" #name))) { \
|
||||
fprintf(stderr, "Missing symbol 'wrap_" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
\
|
||||
return wrap_##name(); \
|
||||
# define VIR_MOCK_LINK_RET_VOID(name, rettype) \
|
||||
rettype name(void) \
|
||||
{ \
|
||||
static rettype (*wrap_##name)(void); \
|
||||
if (wrap_##name == NULL && \
|
||||
!(wrap_##name = dlsym(RTLD_DEFAULT, \
|
||||
"wrap_" #name))) { \
|
||||
fprintf(stderr, "Missing symbol 'wrap_" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
\
|
||||
return wrap_##name(); \
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,18 +144,18 @@
|
||||
* Define a replacement for @name which invokes wrap_@name
|
||||
* forwarding on all args, but with no return value.
|
||||
*/
|
||||
# define VIR_MOCK_LINK_VOID_ARGS(name, ...) \
|
||||
void name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)) \
|
||||
{ \
|
||||
# define VIR_MOCK_LINK_VOID_ARGS(name, ...) \
|
||||
void name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)) \
|
||||
{ \
|
||||
static void (*wrap_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
if (wrap_##name == NULL && \
|
||||
!(wrap_##name = dlsym(RTLD_DEFAULT, \
|
||||
"wrap_" #name))) { \
|
||||
fprintf(stderr, "Missing symbol 'wrap_" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
\
|
||||
wrap_##name(VIR_MOCK_ARGNAMES(__VA_ARGS__)); \
|
||||
if (wrap_##name == NULL && \
|
||||
!(wrap_##name = dlsym(RTLD_DEFAULT, \
|
||||
"wrap_" #name))) { \
|
||||
fprintf(stderr, "Missing symbol 'wrap_" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
\
|
||||
wrap_##name(VIR_MOCK_ARGNAMES(__VA_ARGS__)); \
|
||||
}
|
||||
|
||||
|
||||
@@ -178,10 +178,10 @@
|
||||
* Define a replacement for @name which doesn't invoke anything, just
|
||||
* returns @retval.
|
||||
*/
|
||||
# define VIR_MOCK_STUB_RET_ARGS(name, rettype, retval, ...) \
|
||||
rettype name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__)) \
|
||||
{ \
|
||||
return retval; \
|
||||
# define VIR_MOCK_STUB_RET_ARGS(name, rettype, retval, ...) \
|
||||
rettype name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__)) \
|
||||
{ \
|
||||
return retval; \
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -193,10 +193,10 @@
|
||||
* Define a replacement for @name which doesn't invoke anything, just
|
||||
* returns @retval.
|
||||
*/
|
||||
# define VIR_MOCK_STUB_RET_VOID(name, rettype, retval) \
|
||||
rettype name(void) \
|
||||
{ \
|
||||
return retval; \
|
||||
# define VIR_MOCK_STUB_RET_VOID(name, rettype, retval) \
|
||||
rettype name(void) \
|
||||
{ \
|
||||
return retval; \
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -207,9 +207,9 @@
|
||||
* Define a replacement for @name which doesn't invoke or return
|
||||
* anything.
|
||||
*/
|
||||
# define VIR_MOCK_STUB_VOID_ARGS(name, ...) \
|
||||
void name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__)) \
|
||||
{ \
|
||||
# define VIR_MOCK_STUB_VOID_ARGS(name, ...) \
|
||||
void name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__)) \
|
||||
{ \
|
||||
}
|
||||
|
||||
|
||||
@@ -221,9 +221,9 @@
|
||||
* Define a replacement for @name which doesn't invoke or return
|
||||
* anything.
|
||||
*/
|
||||
# define VIR_MOCK_STUB_VOID_VOID(name) \
|
||||
void name(void) \
|
||||
{ \
|
||||
# define VIR_MOCK_STUB_VOID_VOID(name) \
|
||||
void name(void) \
|
||||
{ \
|
||||
}
|
||||
|
||||
|
||||
@@ -234,24 +234,24 @@
|
||||
* as the body of the method.
|
||||
*/
|
||||
|
||||
# define VIR_MOCK_IMPL_RET_ARGS(name, rettype, ...) \
|
||||
rettype name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static rettype (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
# define VIR_MOCK_IMPL_RET_ARGS(name, rettype, ...) \
|
||||
rettype name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static rettype (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
rettype name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__))
|
||||
|
||||
# define VIR_MOCK_IMPL_RET_VOID(name, rettype) \
|
||||
rettype name(void); \
|
||||
static rettype (*real_##name)(void); \
|
||||
# define VIR_MOCK_IMPL_RET_VOID(name, rettype) \
|
||||
rettype name(void); \
|
||||
static rettype (*real_##name)(void); \
|
||||
rettype name(void)
|
||||
|
||||
# define VIR_MOCK_IMPL_VOID_ARGS(name, ...) \
|
||||
void name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static void (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
# define VIR_MOCK_IMPL_VOID_ARGS(name, ...) \
|
||||
void name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static void (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
void name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__))
|
||||
|
||||
# define VIR_MOCK_IMPL_VOID_VOID(name) \
|
||||
void name(void); \
|
||||
static void (*real_##name)(void); \
|
||||
# define VIR_MOCK_IMPL_VOID_VOID(name) \
|
||||
void name(void); \
|
||||
static void (*real_##name)(void); \
|
||||
void name(void)
|
||||
|
||||
/*
|
||||
@@ -261,45 +261,45 @@
|
||||
* as the body of the method.
|
||||
*/
|
||||
|
||||
# define VIR_MOCK_WRAP_RET_ARGS(name, rettype, ...) \
|
||||
rettype wrap_##name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static rettype (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
# define VIR_MOCK_WRAP_RET_ARGS(name, rettype, ...) \
|
||||
rettype wrap_##name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static rettype (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
rettype wrap_##name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__))
|
||||
|
||||
# define VIR_MOCK_WRAP_RET_VOID(name, rettype) \
|
||||
rettype wrap_##name(void); \
|
||||
static rettype (*real_##name)(void); \
|
||||
# define VIR_MOCK_WRAP_RET_VOID(name, rettype) \
|
||||
rettype wrap_##name(void); \
|
||||
static rettype (*real_##name)(void); \
|
||||
rettype wrap_##name(void)
|
||||
|
||||
# define VIR_MOCK_WRAP_VOID_ARGS(name, ...) \
|
||||
void wrap_##name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static void (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
# define VIR_MOCK_WRAP_VOID_ARGS(name, ...) \
|
||||
void wrap_##name(VIR_MOCK_ARGTYPENAMES(__VA_ARGS__)); \
|
||||
static void (*real_##name)(VIR_MOCK_ARGTYPES(__VA_ARGS__)); \
|
||||
void wrap_##name(VIR_MOCK_ARGTYPENAMES_UNUSED(__VA_ARGS__))
|
||||
|
||||
# define VIR_MOCK_WRAP_VOID_VOID(name) \
|
||||
void wrap_##name(void); \
|
||||
static void (*real_##name)(void); \
|
||||
# define VIR_MOCK_WRAP_VOID_VOID(name) \
|
||||
void wrap_##name(void); \
|
||||
static void (*real_##name)(void); \
|
||||
void wrap_##name(void)
|
||||
|
||||
|
||||
# define VIR_MOCK_REAL_INIT(name) \
|
||||
do { \
|
||||
if (real_##name == NULL && \
|
||||
!(real_##name = dlsym(RTLD_NEXT, \
|
||||
#name))) { \
|
||||
fprintf(stderr, "Missing symbol '" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
# define VIR_MOCK_REAL_INIT(name) \
|
||||
do { \
|
||||
if (real_##name == NULL && \
|
||||
!(real_##name = dlsym(RTLD_NEXT, \
|
||||
#name))) { \
|
||||
fprintf(stderr, "Missing symbol '" #name "'\n"); \
|
||||
abort(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
# define VIR_MOCK_REAL_INIT_ALT(name1, name2) \
|
||||
do { \
|
||||
if (!(real_ ## name1 = dlsym(RTLD_NEXT, #name1)) && \
|
||||
!(real_ ## name2 = dlsym(RTLD_NEXT, #name2))) { \
|
||||
fprintf(stderr, "Cannot find real '%s' or '%s' symbol\n", \
|
||||
#name1, #name2); \
|
||||
abort(); \
|
||||
} \
|
||||
# define VIR_MOCK_REAL_INIT_ALT(name1, name2) \
|
||||
do { \
|
||||
if (!(real_ ## name1 = dlsym(RTLD_NEXT, #name1)) && \
|
||||
!(real_ ## name2 = dlsym(RTLD_NEXT, #name2))) { \
|
||||
fprintf(stderr, "Cannot find real '%s' or '%s' symbol\n", \
|
||||
#name1, #name2); \
|
||||
abort(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#endif /* __VIR_MOCK_H__ */
|
||||
|
||||
@@ -316,14 +316,14 @@ mymain(void)
|
||||
return ret;
|
||||
}
|
||||
|
||||
# define EXEC_RESTART_TEST_FULL(file, nservers, pass) \
|
||||
do { \
|
||||
struct testExecRestartData data = { \
|
||||
file, server_names, nservers, pass \
|
||||
}; \
|
||||
if (virTestRun("ExecRestart " file, \
|
||||
testExecRestart, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define EXEC_RESTART_TEST_FULL(file, nservers, pass) \
|
||||
do { \
|
||||
struct testExecRestartData data = { \
|
||||
file, server_names, nservers, pass \
|
||||
}; \
|
||||
if (virTestRun("ExecRestart " file, \
|
||||
testExecRestart, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define EXEC_RESTART_TEST(file, N) EXEC_RESTART_TEST_FULL(file, N, true)
|
||||
|
||||
@@ -41,27 +41,27 @@ struct testSetStruct {
|
||||
const bool hierarchical_class;
|
||||
};
|
||||
|
||||
#define PARSE(xml, var) \
|
||||
do { \
|
||||
int rc; \
|
||||
xmlDocPtr doc; \
|
||||
xmlXPathContextPtr ctxt = NULL; \
|
||||
\
|
||||
if (!xml) \
|
||||
break; \
|
||||
\
|
||||
if (!(doc = virXMLParseStringCtxt((xml), \
|
||||
"bandwidth definition", \
|
||||
&ctxt))) \
|
||||
goto cleanup; \
|
||||
\
|
||||
rc = virNetDevBandwidthParse(&(var), \
|
||||
ctxt->node, \
|
||||
VIR_DOMAIN_NET_TYPE_NETWORK); \
|
||||
xmlFreeDoc(doc); \
|
||||
xmlXPathFreeContext(ctxt); \
|
||||
if (rc < 0) \
|
||||
goto cleanup; \
|
||||
#define PARSE(xml, var) \
|
||||
do { \
|
||||
int rc; \
|
||||
xmlDocPtr doc; \
|
||||
xmlXPathContextPtr ctxt = NULL; \
|
||||
\
|
||||
if (!xml) \
|
||||
break; \
|
||||
\
|
||||
if (!(doc = virXMLParseStringCtxt((xml), \
|
||||
"bandwidth definition", \
|
||||
&ctxt))) \
|
||||
goto cleanup; \
|
||||
\
|
||||
rc = virNetDevBandwidthParse(&(var), \
|
||||
ctxt->node, \
|
||||
VIR_DOMAIN_NET_TYPE_NETWORK); \
|
||||
xmlFreeDoc(doc); \
|
||||
xmlXPathFreeContext(ctxt); \
|
||||
if (rc < 0) \
|
||||
goto cleanup; \
|
||||
} while (0)
|
||||
|
||||
static int
|
||||
@@ -115,15 +115,15 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_SET(Band, Exp_cmd, ...) \
|
||||
do { \
|
||||
struct testSetStruct data = {.band = Band, \
|
||||
.exp_cmd = Exp_cmd, \
|
||||
__VA_ARGS__}; \
|
||||
if (virTestRun("virNetDevBandwidthSet", \
|
||||
testVirNetDevBandwidthSet, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_SET(Band, Exp_cmd, ...) \
|
||||
do { \
|
||||
struct testSetStruct data = {.band = Band, \
|
||||
.exp_cmd = Exp_cmd, \
|
||||
__VA_ARGS__}; \
|
||||
if (virTestRun("virNetDevBandwidthSet", \
|
||||
testVirNetDevBandwidthSet, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
@@ -69,12 +69,12 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
# define DO_TEST_LINK(ifname, state, speed) \
|
||||
do { \
|
||||
struct testVirNetDevGetLinkInfoData data = {ifname, state, speed}; \
|
||||
if (virTestRun("Link info: " # ifname, \
|
||||
testVirNetDevGetLinkInfo, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST_LINK(ifname, state, speed) \
|
||||
do { \
|
||||
struct testVirNetDevGetLinkInfoData data = {ifname, state, speed}; \
|
||||
if (virTestRun("Link info: " # ifname, \
|
||||
testVirNetDevGetLinkInfo, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_LINK("eth0", VIR_NETDEV_IF_STATE_UP, 1000);
|
||||
|
||||
@@ -118,36 +118,36 @@ mymain(void)
|
||||
|
||||
testTLSInit(KEYFILE);
|
||||
|
||||
# define DO_CTX_TEST(_isServer, _caCrt, _crt, _expectFail) \
|
||||
do { \
|
||||
static struct testTLSContextData data; \
|
||||
data.isServer = _isServer; \
|
||||
data.cacrt = _caCrt; \
|
||||
data.crt = _crt; \
|
||||
data.expectFail = _expectFail; \
|
||||
if (virTestRun("TLS Context " #_caCrt " + " #_crt, \
|
||||
testTLSContextInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_CTX_TEST(_isServer, _caCrt, _crt, _expectFail) \
|
||||
do { \
|
||||
static struct testTLSContextData data; \
|
||||
data.isServer = _isServer; \
|
||||
data.cacrt = _caCrt; \
|
||||
data.crt = _crt; \
|
||||
data.expectFail = _expectFail; \
|
||||
if (virTestRun("TLS Context " #_caCrt " + " #_crt, \
|
||||
testTLSContextInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define TLS_CERT_REQ(varname, cavarname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-ctx.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo \
|
||||
}; \
|
||||
# define TLS_CERT_REQ(varname, cavarname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-ctx.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo \
|
||||
}; \
|
||||
testTLSGenerateCert(&varname, cavarname.crt)
|
||||
|
||||
# define TLS_ROOT_REQ(varname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-ctx.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo \
|
||||
}; \
|
||||
# define TLS_ROOT_REQ(varname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-ctx.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo \
|
||||
}; \
|
||||
testTLSGenerateCert(&varname, NULL)
|
||||
|
||||
|
||||
|
||||
+18
-18
@@ -48,24 +48,24 @@ extern const ASN1_ARRAY_TYPE pkix_asn1_tab[];
|
||||
* here's one we prepared earlier :-)
|
||||
*/
|
||||
gnutls_x509_privkey_t privkey;
|
||||
# define PRIVATE_KEY \
|
||||
"-----BEGIN PRIVATE KEY-----\n" \
|
||||
"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVcr\n" \
|
||||
"BL40Tm6yq88FBhJNw1aaoCjmtg0l4dWQZ/e9Fimx4ARxFpT+ji4FE\n" \
|
||||
"Cgl9s/SGqC+1nvlkm9ViSo0j7MKDbnDB+VRHDvMAzQhA2X7e8M0n9\n" \
|
||||
"rPolUY2lIVC83q0BBaOBkCj2RSmT2xTEbbC2xLukSrg2WP/ihVOxc\n" \
|
||||
"kXRuyFtzAgMBAAECgYB7slBexDwXrtItAMIH6m/U+LUpNe0Xx48OL\n" \
|
||||
"IOn4a4whNgO/o84uIwygUK27ZGFZT0kAGAk8CdF9hA6ArcbQ62s1H\n" \
|
||||
"myxrUbF9/mrLsQw1NEqpuUk9Ay2Tx5U/wPx35S3W/X2AvR/ZpTnCn\n" \
|
||||
"2q/7ym9fyiSoj86drD7BTvmKXlOnOwQJBAPOFMp4mMa9NGpGuEssO\n" \
|
||||
"m3Uwbp6lhcP0cA9MK+iOmeANpoKWfBdk5O34VbmeXnGYWEkrnX+9J\n" \
|
||||
"bM4wVhnnBWtgBMCQQC+qAEmvwcfhauERKYznMVUVksyeuhxhCe7EK\n" \
|
||||
"mPh+U2+g0WwdKvGDgO0PPt1gq0ILEjspMDeMHVdTwkaVBo/uMhAkA\n" \
|
||||
"Z5SsZyCP2aTOPFDypXRdI4eqRcjaEPOUBq27r3uYb/jeboVb2weLa\n" \
|
||||
"L1MmVuHiIHoa5clswPdWVI2y0em2IGoDAkBPSp/v9VKJEZabk9Frd\n" \
|
||||
"a+7u4fanrM9QrEjY3KhduslSilXZZSxrWjjAJPyPiqFb3M8XXA26W\n" \
|
||||
"nz1KYGnqYKhLcBAkB7dt57n9xfrhDpuyVEv+Uv1D3VVAhZlsaZ5Pp\n" \
|
||||
"dcrhrkJn2sa/+O8OKvdrPSeeu/N5WwYhJf61+CPoenMp7IFci\n" \
|
||||
# define PRIVATE_KEY \
|
||||
"-----BEGIN PRIVATE KEY-----\n" \
|
||||
"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVcr\n" \
|
||||
"BL40Tm6yq88FBhJNw1aaoCjmtg0l4dWQZ/e9Fimx4ARxFpT+ji4FE\n" \
|
||||
"Cgl9s/SGqC+1nvlkm9ViSo0j7MKDbnDB+VRHDvMAzQhA2X7e8M0n9\n" \
|
||||
"rPolUY2lIVC83q0BBaOBkCj2RSmT2xTEbbC2xLukSrg2WP/ihVOxc\n" \
|
||||
"kXRuyFtzAgMBAAECgYB7slBexDwXrtItAMIH6m/U+LUpNe0Xx48OL\n" \
|
||||
"IOn4a4whNgO/o84uIwygUK27ZGFZT0kAGAk8CdF9hA6ArcbQ62s1H\n" \
|
||||
"myxrUbF9/mrLsQw1NEqpuUk9Ay2Tx5U/wPx35S3W/X2AvR/ZpTnCn\n" \
|
||||
"2q/7ym9fyiSoj86drD7BTvmKXlOnOwQJBAPOFMp4mMa9NGpGuEssO\n" \
|
||||
"m3Uwbp6lhcP0cA9MK+iOmeANpoKWfBdk5O34VbmeXnGYWEkrnX+9J\n" \
|
||||
"bM4wVhnnBWtgBMCQQC+qAEmvwcfhauERKYznMVUVksyeuhxhCe7EK\n" \
|
||||
"mPh+U2+g0WwdKvGDgO0PPt1gq0ILEjspMDeMHVdTwkaVBo/uMhAkA\n" \
|
||||
"Z5SsZyCP2aTOPFDypXRdI4eqRcjaEPOUBq27r3uYb/jeboVb2weLa\n" \
|
||||
"L1MmVuHiIHoa5clswPdWVI2y0em2IGoDAkBPSp/v9VKJEZabk9Frd\n" \
|
||||
"a+7u4fanrM9QrEjY3KhduslSilXZZSxrWjjAJPyPiqFb3M8XXA26W\n" \
|
||||
"nz1KYGnqYKhLcBAkB7dt57n9xfrhDpuyVEv+Uv1D3VVAhZlsaZ5Pp\n" \
|
||||
"dcrhrkJn2sa/+O8OKvdrPSeeu/N5WwYhJf61+CPoenMp7IFci\n" \
|
||||
"-----END PRIVATE KEY-----\n"
|
||||
|
||||
/*
|
||||
|
||||
@@ -247,58 +247,58 @@ mymain(void)
|
||||
testTLSInit(KEYFILE);
|
||||
|
||||
# define DO_SESS_TEST(_caCrt, _serverCrt, _clientCrt, _expectServerFail, \
|
||||
_expectClientFail, _hostname, _wildcards) \
|
||||
do { \
|
||||
static struct testTLSSessionData data; \
|
||||
data.servercacrt = _caCrt; \
|
||||
data.clientcacrt = _caCrt; \
|
||||
data.servercrt = _serverCrt; \
|
||||
data.clientcrt = _clientCrt; \
|
||||
data.expectServerFail = _expectServerFail; \
|
||||
data.expectClientFail = _expectClientFail; \
|
||||
data.hostname = _hostname; \
|
||||
data.wildcards = _wildcards; \
|
||||
if (virTestRun("TLS Session " #_serverCrt " + " #_clientCrt, \
|
||||
testTLSSessionInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
_expectClientFail, _hostname, _wildcards) \
|
||||
do { \
|
||||
static struct testTLSSessionData data; \
|
||||
data.servercacrt = _caCrt; \
|
||||
data.clientcacrt = _caCrt; \
|
||||
data.servercrt = _serverCrt; \
|
||||
data.clientcrt = _clientCrt; \
|
||||
data.expectServerFail = _expectServerFail; \
|
||||
data.expectClientFail = _expectClientFail; \
|
||||
data.hostname = _hostname; \
|
||||
data.wildcards = _wildcards; \
|
||||
if (virTestRun("TLS Session " #_serverCrt " + " #_clientCrt, \
|
||||
testTLSSessionInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_SESS_TEST_EXT(_serverCaCrt, _clientCaCrt, _serverCrt, _clientCrt, \
|
||||
_expectServerFail, _expectClientFail, \
|
||||
_hostname, _wildcards) \
|
||||
do { \
|
||||
static struct testTLSSessionData data; \
|
||||
data.servercacrt = _serverCaCrt; \
|
||||
data.clientcacrt = _clientCaCrt; \
|
||||
data.servercrt = _serverCrt; \
|
||||
data.clientcrt = _clientCrt; \
|
||||
data.expectServerFail = _expectServerFail; \
|
||||
data.expectClientFail = _expectClientFail; \
|
||||
data.hostname = _hostname; \
|
||||
data.wildcards = _wildcards; \
|
||||
if (virTestRun("TLS Session " #_serverCrt " + " #_clientCrt, \
|
||||
testTLSSessionInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
_expectServerFail, _expectClientFail, \
|
||||
_hostname, _wildcards) \
|
||||
do { \
|
||||
static struct testTLSSessionData data; \
|
||||
data.servercacrt = _serverCaCrt; \
|
||||
data.clientcacrt = _clientCaCrt; \
|
||||
data.servercrt = _serverCrt; \
|
||||
data.clientcrt = _clientCrt; \
|
||||
data.expectServerFail = _expectServerFail; \
|
||||
data.expectClientFail = _expectClientFail; \
|
||||
data.hostname = _hostname; \
|
||||
data.wildcards = _wildcards; \
|
||||
if (virTestRun("TLS Session " #_serverCrt " + " #_clientCrt, \
|
||||
testTLSSessionInit, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define TLS_CERT_REQ(varname, cavarname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-sess.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, so \
|
||||
}; \
|
||||
# define TLS_CERT_REQ(varname, cavarname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-sess.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, so \
|
||||
}; \
|
||||
testTLSGenerateCert(&varname, cavarname.crt)
|
||||
|
||||
# define TLS_ROOT_REQ(varname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-sess.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, so \
|
||||
}; \
|
||||
# define TLS_ROOT_REQ(varname, \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, eo) \
|
||||
static struct testTLSCertReq varname = { \
|
||||
NULL, #varname "-sess.pem", \
|
||||
co, cn, an1, an2, ia1, ia2, bce, bcc, bci, \
|
||||
kue, kuc, kuv, kpe, kpc, kpo1, kpo2, so, so \
|
||||
}; \
|
||||
testTLSGenerateCert(&varname, NULL)
|
||||
|
||||
/* A perfect CA, perfect client & perfect server */
|
||||
|
||||
+15
-15
@@ -53,18 +53,18 @@ char *fakesysfspcidir;
|
||||
|
||||
# define SYSFS_PCI_PREFIX "/sys/bus/pci/"
|
||||
|
||||
# define STDERR(...) \
|
||||
fprintf(stderr, "%s %zu: ", __FUNCTION__, (size_t) __LINE__); \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
fprintf(stderr, "\n"); \
|
||||
# define STDERR(...) \
|
||||
fprintf(stderr, "%s %zu: ", __FUNCTION__, (size_t) __LINE__); \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
fprintf(stderr, "\n"); \
|
||||
|
||||
# define ABORT(...) \
|
||||
do { \
|
||||
STDERR(__VA_ARGS__); \
|
||||
abort(); \
|
||||
# define ABORT(...) \
|
||||
do { \
|
||||
STDERR(__VA_ARGS__); \
|
||||
abort(); \
|
||||
} while (0)
|
||||
|
||||
# define ABORT_OOM() \
|
||||
# define ABORT_OOM() \
|
||||
ABORT("Out of memory")
|
||||
/*
|
||||
* The plan:
|
||||
@@ -834,7 +834,7 @@ init_env(void)
|
||||
|
||||
make_file(fakesysfspcidir, "drivers_probe", NULL, -1);
|
||||
|
||||
# define MAKE_PCI_DRIVER(name, ...) \
|
||||
# define MAKE_PCI_DRIVER(name, ...) \
|
||||
pci_driver_new(name, 0, __VA_ARGS__, -1, -1)
|
||||
|
||||
MAKE_PCI_DRIVER("iwlwifi", 0x8086, 0x0044);
|
||||
@@ -842,11 +842,11 @@ init_env(void)
|
||||
MAKE_PCI_DRIVER("pci-stub", -1, -1);
|
||||
pci_driver_new("vfio-pci", PCI_ACTION_BIND, -1, -1);
|
||||
|
||||
# define MAKE_PCI_DEVICE(Id, Vendor, Device, ...) \
|
||||
do { \
|
||||
struct pciDevice dev = {.id = (char *)Id, .vendor = Vendor, \
|
||||
.device = Device, __VA_ARGS__}; \
|
||||
pci_device_new_from_stub(&dev); \
|
||||
# define MAKE_PCI_DEVICE(Id, Vendor, Device, ...) \
|
||||
do { \
|
||||
struct pciDevice dev = {.id = (char *)Id, .vendor = Vendor, \
|
||||
.device = Device, __VA_ARGS__}; \
|
||||
pci_device_new_from_stub(&dev); \
|
||||
} while (0)
|
||||
|
||||
MAKE_PCI_DEVICE("0000:00:00.0", 0x8086, 0x0044);
|
||||
|
||||
+40
-40
@@ -82,12 +82,12 @@ testVirPCIDeviceNew(const void *opaque ATTRIBUTE_UNUSED)
|
||||
return ret;
|
||||
}
|
||||
|
||||
# define CHECK_LIST_COUNT(list, cnt) \
|
||||
if ((count = virPCIDeviceListCount(list)) != cnt) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Unexpected count of items in " #list ": %d, " \
|
||||
"expecting %zu", count, (size_t) cnt); \
|
||||
goto cleanup; \
|
||||
# define CHECK_LIST_COUNT(list, cnt) \
|
||||
if ((count = virPCIDeviceListCount(list)) != cnt) { \
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, \
|
||||
"Unexpected count of items in " #list ": %d, " \
|
||||
"expecting %zu", count, (size_t) cnt); \
|
||||
goto cleanup; \
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -374,44 +374,44 @@ mymain(void)
|
||||
|
||||
setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);
|
||||
|
||||
# define DO_TEST(fnc) \
|
||||
do { \
|
||||
if (virTestRun(#fnc, fnc, NULL) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(fnc) \
|
||||
do { \
|
||||
if (virTestRun(#fnc, fnc, NULL) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST_PCI(fnc, domain, bus, slot, function) \
|
||||
do { \
|
||||
struct testPCIDevData data = { \
|
||||
domain, bus, slot, function, NULL \
|
||||
}; \
|
||||
char *label = NULL; \
|
||||
if (virAsprintf(&label, "%s(%04x:%02x:%02x.%x)", \
|
||||
#fnc, domain, bus, slot, function) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (virTestRun(label, fnc, &data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(label); \
|
||||
# define DO_TEST_PCI(fnc, domain, bus, slot, function) \
|
||||
do { \
|
||||
struct testPCIDevData data = { \
|
||||
domain, bus, slot, function, NULL \
|
||||
}; \
|
||||
char *label = NULL; \
|
||||
if (virAsprintf(&label, "%s(%04x:%02x:%02x.%x)", \
|
||||
#fnc, domain, bus, slot, function) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (virTestRun(label, fnc, &data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(label); \
|
||||
} while (0)
|
||||
|
||||
# define DO_TEST_PCI_DRIVER(domain, bus, slot, function, driver) \
|
||||
do { \
|
||||
struct testPCIDevData data = { \
|
||||
domain, bus, slot, function, driver \
|
||||
}; \
|
||||
char *label = NULL; \
|
||||
if (virAsprintf(&label, "PCI driver %04x:%02x:%02x.%x is %s", \
|
||||
domain, bus, slot, function, \
|
||||
NULLSTR(driver)) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (virTestRun(label, testVirPCIDeviceCheckDriverTest, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(label); \
|
||||
# define DO_TEST_PCI_DRIVER(domain, bus, slot, function, driver) \
|
||||
do { \
|
||||
struct testPCIDevData data = { \
|
||||
domain, bus, slot, function, driver \
|
||||
}; \
|
||||
char *label = NULL; \
|
||||
if (virAsprintf(&label, "PCI driver %04x:%02x:%02x.%x is %s", \
|
||||
domain, bus, slot, function, \
|
||||
NULLSTR(driver)) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (virTestRun(label, testVirPCIDeviceCheckDriverTest, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
VIR_FREE(label); \
|
||||
} while (0)
|
||||
|
||||
/* Changes made to individual devices are persistent and the
|
||||
|
||||
+40
-40
@@ -171,48 +171,48 @@ mymain(void)
|
||||
|
||||
memset(&data, 0, sizeof(data));
|
||||
|
||||
#define DO_TEST_DIR(sch, ...) \
|
||||
do { \
|
||||
data.schema = sch; \
|
||||
if (virTestRun("test schema grammar file: " sch, \
|
||||
testSchemaGrammar, &data) == 0) { \
|
||||
/* initialize the validator even if the schema test \
|
||||
* was skipped because of VIR_TEST_RANGE */ \
|
||||
if (!data.validator && testSchemaGrammar(&data) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (testSchemaDirs(sch, data.validator, __VA_ARGS__, NULL) < 0) \
|
||||
ret = -1; \
|
||||
\
|
||||
virXMLValidatorFree(data.validator); \
|
||||
data.validator = NULL; \
|
||||
} else { \
|
||||
ret = -1; \
|
||||
} \
|
||||
#define DO_TEST_DIR(sch, ...) \
|
||||
do { \
|
||||
data.schema = sch; \
|
||||
if (virTestRun("test schema grammar file: " sch, \
|
||||
testSchemaGrammar, &data) == 0) { \
|
||||
/* initialize the validator even if the schema test \
|
||||
* was skipped because of VIR_TEST_RANGE */ \
|
||||
if (!data.validator && testSchemaGrammar(&data) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (testSchemaDirs(sch, data.validator, __VA_ARGS__, NULL) < 0) \
|
||||
ret = -1; \
|
||||
\
|
||||
virXMLValidatorFree(data.validator); \
|
||||
data.validator = NULL; \
|
||||
} else { \
|
||||
ret = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_FILE(sch, xmlfile) \
|
||||
do { \
|
||||
data.schema = sch; \
|
||||
data.xml_path = abs_srcdir "/" xmlfile; \
|
||||
if (virTestRun("test schema grammar file: " sch, \
|
||||
testSchemaGrammar, &data) == 0) { \
|
||||
/* initialize the validator even if the schema test \
|
||||
* was skipped because of VIR_TEST_RANGE */ \
|
||||
if (!data.validator && testSchemaGrammar(&data) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (virTestRun("Checking " xmlfile " against " sch, \
|
||||
testSchemaFile, &data) < 0) \
|
||||
ret = -1; \
|
||||
\
|
||||
virXMLValidatorFree(data.validator); \
|
||||
data.validator = NULL; \
|
||||
} else { \
|
||||
ret = -1; \
|
||||
} \
|
||||
#define DO_TEST_FILE(sch, xmlfile) \
|
||||
do { \
|
||||
data.schema = sch; \
|
||||
data.xml_path = abs_srcdir "/" xmlfile; \
|
||||
if (virTestRun("test schema grammar file: " sch, \
|
||||
testSchemaGrammar, &data) == 0) { \
|
||||
/* initialize the validator even if the schema test \
|
||||
* was skipped because of VIR_TEST_RANGE */ \
|
||||
if (!data.validator && testSchemaGrammar(&data) < 0) { \
|
||||
ret = -1; \
|
||||
break; \
|
||||
} \
|
||||
if (virTestRun("Checking " xmlfile " against " sch, \
|
||||
testSchemaFile, &data) < 0) \
|
||||
ret = -1; \
|
||||
\
|
||||
virXMLValidatorFree(data.validator); \
|
||||
data.validator = NULL; \
|
||||
} else { \
|
||||
ret = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_DIR("capability.rng", "capabilityschemadata", "xencapsdata",
|
||||
|
||||
+5
-5
@@ -215,12 +215,12 @@ mymain(void)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#define CREATE_SYMLINK(src_name, dst_name) \
|
||||
do { \
|
||||
#define CREATE_SYMLINK(src_name, dst_name) \
|
||||
do { \
|
||||
if (create_symlink(tmpdir, src_name, dst_name) < 0) { \
|
||||
ret = -1; \
|
||||
goto cleanup; \
|
||||
} \
|
||||
ret = -1; \
|
||||
goto cleanup; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
CREATE_SYMLINK("0-0-0-0", "0:0:0:0");
|
||||
|
||||
+7
-7
@@ -324,13 +324,13 @@ mymain(void)
|
||||
|
||||
/* It's a bit awkward listing result before argument, but that's a
|
||||
* limitation of C99 vararg macros. */
|
||||
# define DO_TEST(i, result, ...) \
|
||||
do { \
|
||||
const char *myargv[] = { VIRSH_DEFAULT, __VA_ARGS__, NULL }; \
|
||||
const struct testInfo info = { myargv, result }; \
|
||||
if (virTestRun("virsh echo " #i, \
|
||||
testCompareEcho, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(i, result, ...) \
|
||||
do { \
|
||||
const char *myargv[] = { VIRSH_DEFAULT, __VA_ARGS__, NULL }; \
|
||||
const struct testInfo info = { myargv, result }; \
|
||||
if (virTestRun("virsh echo " #i, \
|
||||
testCompareEcho, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
/* Arg parsing quote removal tests. */
|
||||
|
||||
+49
-49
@@ -740,28 +740,28 @@ mymain(void)
|
||||
if ((ret = testPrepImages()) != 0)
|
||||
return ret;
|
||||
|
||||
#define TEST_ONE_CHAIN(start, format, flags, ...) \
|
||||
do { \
|
||||
size_t i; \
|
||||
memset(&data, 0, sizeof(data)); \
|
||||
data = (struct testChainData){ \
|
||||
start, format, { __VA_ARGS__ }, 0, flags, \
|
||||
}; \
|
||||
for (i = 0; i < ARRAY_CARDINALITY(data.files); i++) \
|
||||
if (data.files[i]) \
|
||||
data.nfiles++; \
|
||||
if (virTestRun(virTestCounterNext(), \
|
||||
testStorageChain, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_ONE_CHAIN(start, format, flags, ...) \
|
||||
do { \
|
||||
size_t i; \
|
||||
memset(&data, 0, sizeof(data)); \
|
||||
data = (struct testChainData){ \
|
||||
start, format, { __VA_ARGS__ }, 0, flags, \
|
||||
}; \
|
||||
for (i = 0; i < ARRAY_CARDINALITY(data.files); i++) \
|
||||
if (data.files[i]) \
|
||||
data.nfiles++; \
|
||||
if (virTestRun(virTestCounterNext(), \
|
||||
testStorageChain, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define VIR_FLATTEN_2(...) __VA_ARGS__
|
||||
#define VIR_FLATTEN_1(_1) VIR_FLATTEN_2 _1
|
||||
|
||||
#define TEST_CHAIN(path, format, chain1, flags1, chain2, flags2) \
|
||||
do { \
|
||||
TEST_ONE_CHAIN(path, format, flags1, VIR_FLATTEN_1(chain1)); \
|
||||
TEST_ONE_CHAIN(path, format, flags2, VIR_FLATTEN_1(chain2)); \
|
||||
#define TEST_CHAIN(path, format, chain1, flags1, chain2, flags2) \
|
||||
do { \
|
||||
TEST_ONE_CHAIN(path, format, flags1, VIR_FLATTEN_1(chain1)); \
|
||||
TEST_ONE_CHAIN(path, format, flags2, VIR_FLATTEN_1(chain2)); \
|
||||
} while (0)
|
||||
|
||||
/* The actual tests, in several groups. */
|
||||
@@ -1110,17 +1110,17 @@ mymain(void)
|
||||
chain2 = chain->backingStore;
|
||||
chain3 = chain2->backingStore;
|
||||
|
||||
#define TEST_LOOKUP_TARGET(id, target, from, name, index, result, \
|
||||
meta, parent) \
|
||||
do { \
|
||||
data2 = (struct testLookupData){ \
|
||||
chain, target, from, name, index, \
|
||||
result, meta, parent, }; \
|
||||
if (virTestRun("Chain lookup " #id, \
|
||||
testStorageLookup, &data2) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_LOOKUP_TARGET(id, target, from, name, index, result, \
|
||||
meta, parent) \
|
||||
do { \
|
||||
data2 = (struct testLookupData){ \
|
||||
chain, target, from, name, index, \
|
||||
result, meta, parent, }; \
|
||||
if (virTestRun("Chain lookup " #id, \
|
||||
testStorageLookup, &data2) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
#define TEST_LOOKUP(id, from, name, result, meta, parent) \
|
||||
#define TEST_LOOKUP(id, from, name, result, meta, parent) \
|
||||
TEST_LOOKUP_TARGET(id, NULL, from, name, 0, result, meta, parent)
|
||||
|
||||
TEST_LOOKUP(0, NULL, "bogus", NULL, NULL, NULL);
|
||||
@@ -1251,13 +1251,13 @@ mymain(void)
|
||||
TEST_LOOKUP_TARGET(80, "vda", chain3, "vda[2]", 2, NULL, NULL, NULL);
|
||||
TEST_LOOKUP_TARGET(81, "vda", NULL, "vda[3]", 3, NULL, NULL, NULL);
|
||||
|
||||
#define TEST_PATH_CANONICALIZE(id, PATH, EXPECT) \
|
||||
do { \
|
||||
data3.path = PATH; \
|
||||
data3.expect = EXPECT; \
|
||||
if (virTestRun("Path canonicalize " #id, \
|
||||
testPathCanonicalize, &data3) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_PATH_CANONICALIZE(id, PATH, EXPECT) \
|
||||
do { \
|
||||
data3.path = PATH; \
|
||||
data3.expect = EXPECT; \
|
||||
if (virTestRun("Path canonicalize " #id, \
|
||||
testPathCanonicalize, &data3) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_PATH_CANONICALIZE(1, "/", "/");
|
||||
@@ -1294,14 +1294,14 @@ mymain(void)
|
||||
TEST_PATH_CANONICALIZE(30, "/cycle2/link", NULL);
|
||||
TEST_PATH_CANONICALIZE(31, "///", "/");
|
||||
|
||||
#define TEST_RELATIVE_BACKING(id, TOP, BASE, EXPECT) \
|
||||
do { \
|
||||
data4.top = &TOP; \
|
||||
data4.base = &BASE; \
|
||||
data4.expect = EXPECT; \
|
||||
if (virTestRun("Path relative resolve " #id, \
|
||||
testPathRelative, &data4) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_RELATIVE_BACKING(id, TOP, BASE, EXPECT) \
|
||||
do { \
|
||||
data4.top = &TOP; \
|
||||
data4.base = &BASE; \
|
||||
data4.expect = EXPECT; \
|
||||
if (virTestRun("Path relative resolve " #id, \
|
||||
testPathRelative, &data4) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
testPathRelativePrepare();
|
||||
@@ -1344,13 +1344,13 @@ mymain(void)
|
||||
|
||||
virTestCounterReset("Backing store parse ");
|
||||
|
||||
#define TEST_BACKING_PARSE(bck, xml) \
|
||||
do { \
|
||||
data5.backing = bck; \
|
||||
data5.expect = xml; \
|
||||
if (virTestRun(virTestCounterNext(), \
|
||||
testBackingParse, &data5) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_BACKING_PARSE(bck, xml) \
|
||||
do { \
|
||||
data5.backing = bck; \
|
||||
data5.expect = xml; \
|
||||
if (virTestRun(virTestCounterNext(), \
|
||||
testBackingParse, &data5) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_BACKING_PARSE("path", "<source file='path'/>\n");
|
||||
|
||||
+15
-15
@@ -79,24 +79,24 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_FULL(testname, sffx, pooltype) \
|
||||
do { \
|
||||
struct testGlusterExtractPoolSourcesData data; \
|
||||
data.srcxml = abs_srcdir "/virstorageutildata/" \
|
||||
"gluster-parse-" testname "-src.xml"; \
|
||||
data.dstxml = abs_srcdir "/virstorageutildata/" \
|
||||
"gluster-parse-" testname "-" sffx ".xml"; \
|
||||
data.type = pooltype; \
|
||||
if (virTestRun("gluster-parse-" testname "-" sffx, \
|
||||
testGlusterExtractPoolSources, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_FULL(testname, sffx, pooltype) \
|
||||
do { \
|
||||
struct testGlusterExtractPoolSourcesData data; \
|
||||
data.srcxml = abs_srcdir "/virstorageutildata/" \
|
||||
"gluster-parse-" testname "-src.xml"; \
|
||||
data.dstxml = abs_srcdir "/virstorageutildata/" \
|
||||
"gluster-parse-" testname "-" sffx ".xml"; \
|
||||
data.type = pooltype; \
|
||||
if (virTestRun("gluster-parse-" testname "-" sffx, \
|
||||
testGlusterExtractPoolSources, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NATIVE(testname) \
|
||||
DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_FULL(testname, "native", \
|
||||
#define DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NATIVE(testname) \
|
||||
DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_FULL(testname, "native", \
|
||||
VIR_STORAGE_POOL_GLUSTER)
|
||||
#define DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NETFS(testname) \
|
||||
DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_FULL(testname, "netfs", \
|
||||
#define DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NETFS(testname) \
|
||||
DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_FULL(testname, "netfs", \
|
||||
VIR_STORAGE_POOL_NETFS)
|
||||
|
||||
DO_TEST_GLUSTER_EXTRACT_POOL_SOURCES_NATIVE("basic");
|
||||
|
||||
+116
-116
@@ -583,32 +583,32 @@ testStringToLong(const void *opaque)
|
||||
else
|
||||
negative = !!strchr(data->str, '-');
|
||||
|
||||
#define TEST_ONE(Str, Suff, Type, Fn, Fmt, Exp, Exp_ret) \
|
||||
do { \
|
||||
Type value = 5; \
|
||||
int result; \
|
||||
end = (char *) "oops"; \
|
||||
result = virStrToLong_ ## Fn(Str, Suff ? &end : NULL, \
|
||||
0, &value); \
|
||||
/* On failure, end is modified, value is unchanged */ \
|
||||
if (result != (Exp_ret)) { \
|
||||
fprintf(stderr, \
|
||||
"type " #Fn " returned %d expected %d\n", \
|
||||
result, Exp_ret); \
|
||||
ret = -1; \
|
||||
} \
|
||||
if (value != ((Exp_ret) ? 5 : Exp)) { \
|
||||
fprintf(stderr, \
|
||||
"type " #Fn " value " Fmt " expected " Fmt "\n", \
|
||||
value, ((Exp_ret) ? 5 : Exp)); \
|
||||
ret = -1; \
|
||||
} \
|
||||
if (Suff && STRNEQ_NULLABLE(Suff, end)) { \
|
||||
fprintf(stderr, \
|
||||
"type " #Fn " end '%s' expected '%s'\n", \
|
||||
NULLSTR(end), Suff); \
|
||||
ret = -1; \
|
||||
} \
|
||||
#define TEST_ONE(Str, Suff, Type, Fn, Fmt, Exp, Exp_ret) \
|
||||
do { \
|
||||
Type value = 5; \
|
||||
int result; \
|
||||
end = (char *) "oops"; \
|
||||
result = virStrToLong_ ## Fn(Str, Suff ? &end : NULL, \
|
||||
0, &value); \
|
||||
/* On failure, end is modified, value is unchanged */ \
|
||||
if (result != (Exp_ret)) { \
|
||||
fprintf(stderr, \
|
||||
"type " #Fn " returned %d expected %d\n", \
|
||||
result, Exp_ret); \
|
||||
ret = -1; \
|
||||
} \
|
||||
if (value != ((Exp_ret) ? 5 : Exp)) { \
|
||||
fprintf(stderr, \
|
||||
"type " #Fn " value " Fmt " expected " Fmt "\n", \
|
||||
value, ((Exp_ret) ? 5 : Exp)); \
|
||||
ret = -1; \
|
||||
} \
|
||||
if (Suff && STRNEQ_NULLABLE(Suff, end)) { \
|
||||
fprintf(stderr, \
|
||||
"type " #Fn " end '%s' expected '%s'\n", \
|
||||
NULLSTR(end), Suff); \
|
||||
ret = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
TEST_ONE(data->str, data->suffix, int, i, "%d",
|
||||
@@ -772,11 +772,11 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define TEST_STREQ(aa, bb) \
|
||||
do { \
|
||||
struct testStreqData streqData = {.a = aa, .b = bb}; \
|
||||
if (virTestRun("Streq", testStreq, &streqData) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_STREQ(aa, bb) \
|
||||
do { \
|
||||
struct testStreqData streqData = {.a = aa, .b = bb}; \
|
||||
if (virTestRun("Streq", testStreq, &streqData) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_STREQ("hello", "world");
|
||||
@@ -786,27 +786,27 @@ mymain(void)
|
||||
TEST_STREQ("", "");
|
||||
TEST_STREQ("hello", "hello");
|
||||
|
||||
#define TEST_SPLIT(str, del, max, toks) \
|
||||
do { \
|
||||
struct testSplitData splitData = { \
|
||||
.string = str, \
|
||||
.delim = del, \
|
||||
.max_tokens = max, \
|
||||
.tokens = toks, \
|
||||
}; \
|
||||
struct testJoinData joinData = { \
|
||||
.string = str, \
|
||||
.delim = del, \
|
||||
.tokens = toks, \
|
||||
}; \
|
||||
if (virTestRun("Split " #str, testSplit, &splitData) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Join " #str, testJoin, &joinData) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Add " #str, testAdd, &joinData) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Remove " #str, testRemove, &splitData) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_SPLIT(str, del, max, toks) \
|
||||
do { \
|
||||
struct testSplitData splitData = { \
|
||||
.string = str, \
|
||||
.delim = del, \
|
||||
.max_tokens = max, \
|
||||
.tokens = toks, \
|
||||
}; \
|
||||
struct testJoinData joinData = { \
|
||||
.string = str, \
|
||||
.delim = del, \
|
||||
.tokens = toks, \
|
||||
}; \
|
||||
if (virTestRun("Split " #str, testSplit, &splitData) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Join " #str, testJoin, &joinData) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Add " #str, testAdd, &joinData) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Remove " #str, testRemove, &splitData) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
const char *tokens1[] = { NULL };
|
||||
@@ -842,18 +842,18 @@ mymain(void)
|
||||
if (virTestRun("virStringSortCompare", testStringSortCompare, NULL) < 0)
|
||||
ret = -1;
|
||||
|
||||
#define TEST_SEARCH(s, r, x, n, m, e) \
|
||||
do { \
|
||||
struct stringSearchData data = { \
|
||||
.str = s, \
|
||||
.maxMatches = x, \
|
||||
.regexp = r, \
|
||||
.expectNMatches = n, \
|
||||
.expectMatches = m, \
|
||||
.expectError = e, \
|
||||
}; \
|
||||
#define TEST_SEARCH(s, r, x, n, m, e) \
|
||||
do { \
|
||||
struct stringSearchData data = { \
|
||||
.str = s, \
|
||||
.maxMatches = x, \
|
||||
.regexp = r, \
|
||||
.expectNMatches = n, \
|
||||
.expectMatches = m, \
|
||||
.expectError = e, \
|
||||
}; \
|
||||
if (virTestRun("virStringSearch " s, testStringSearch, &data) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
/* error due to missing () in regexp */
|
||||
@@ -877,31 +877,31 @@ mymain(void)
|
||||
const char *matches3[] = { "foo", "bar" };
|
||||
TEST_SEARCH("1foo2bar3eek", "([a-z]+)", 2, 2, matches3, false);
|
||||
|
||||
#define TEST_MATCH(s, r, m) \
|
||||
do { \
|
||||
struct stringMatchData data = { \
|
||||
.str = s, \
|
||||
.regexp = r, \
|
||||
.expectMatch = m, \
|
||||
}; \
|
||||
if (virTestRun("virStringMatch " s, testStringMatch, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_MATCH(s, r, m) \
|
||||
do { \
|
||||
struct stringMatchData data = { \
|
||||
.str = s, \
|
||||
.regexp = r, \
|
||||
.expectMatch = m, \
|
||||
}; \
|
||||
if (virTestRun("virStringMatch " s, testStringMatch, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_MATCH("foo", "foo", true);
|
||||
TEST_MATCH("foobar", "f[o]+", true);
|
||||
TEST_MATCH("foobar", "^f[o]+$", false);
|
||||
|
||||
#define TEST_REPLACE(h, o, n, r) \
|
||||
do { \
|
||||
struct stringReplaceData data = { \
|
||||
.haystack = h, \
|
||||
.oldneedle = o, \
|
||||
.newneedle = n, \
|
||||
.result = r \
|
||||
}; \
|
||||
#define TEST_REPLACE(h, o, n, r) \
|
||||
do { \
|
||||
struct stringReplaceData data = { \
|
||||
.haystack = h, \
|
||||
.oldneedle = o, \
|
||||
.newneedle = n, \
|
||||
.result = r \
|
||||
}; \
|
||||
if (virTestRun("virStringReplace " h, testStringReplace, &data) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
/* no matches */
|
||||
@@ -923,15 +923,15 @@ mymain(void)
|
||||
TEST_REPLACE("fooooofoooo", "foo", "barwizzeek", "barwizzeekooobarwizzeekoo");
|
||||
TEST_REPLACE("fooooofoooo", "foooo", "foo", "fooofoo");
|
||||
|
||||
#define TEST_STRTOL(str, suff, i, i_ret, u, u_ret, \
|
||||
ll, ll_ret, ull, ull_ret) \
|
||||
do { \
|
||||
struct stringToLongData data = { \
|
||||
str, suff, i, i_ret, u, u_ret, ll, ll_ret, ull, ull_ret, \
|
||||
}; \
|
||||
if (virTestRun("virStringToLong '" str "'", testStringToLong, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_STRTOL(str, suff, i, i_ret, u, u_ret, \
|
||||
ll, ll_ret, ull, ull_ret) \
|
||||
do { \
|
||||
struct stringToLongData data = { \
|
||||
str, suff, i, i_ret, u, u_ret, ll, ll_ret, ull, ull_ret, \
|
||||
}; \
|
||||
if (virTestRun("virStringToLong '" str "'", testStringToLong, \
|
||||
&data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
/* Start simple */
|
||||
@@ -1007,14 +1007,14 @@ mymain(void)
|
||||
TEST_STRTOL("-18446744073709551616", NULL, 0, -1, 0U, -1,
|
||||
0LL, -1, 0ULL, -1);
|
||||
|
||||
#define TEST_STRTOD(str, end_ptr, res) \
|
||||
do { \
|
||||
struct stringToDoubleData data = { \
|
||||
str, end_ptr, res, \
|
||||
}; \
|
||||
if (virTestRun("virStringToDouble '" str "'", \
|
||||
testStringToDouble, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_STRTOD(str, end_ptr, res) \
|
||||
do { \
|
||||
struct stringToDoubleData data = { \
|
||||
str, end_ptr, res, \
|
||||
}; \
|
||||
if (virTestRun("virStringToDouble '" str "'", \
|
||||
testStringToDouble, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
/* Simple numbers. */
|
||||
@@ -1050,15 +1050,15 @@ mymain(void)
|
||||
NULL) < 0)
|
||||
ret = -1;
|
||||
|
||||
#define TEST_STRIP_IPV6_BRACKETS(str, res) \
|
||||
do { \
|
||||
struct testStripData stripData = { \
|
||||
.string = str, \
|
||||
.result = res, \
|
||||
}; \
|
||||
if (virTestRun("Strip brackets from IPv6 " #str, \
|
||||
testStripIPv6Brackets, &stripData) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_STRIP_IPV6_BRACKETS(str, res) \
|
||||
do { \
|
||||
struct testStripData stripData = { \
|
||||
.string = str, \
|
||||
.result = res, \
|
||||
}; \
|
||||
if (virTestRun("Strip brackets from IPv6 " #str, \
|
||||
testStripIPv6Brackets, &stripData) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_STRIP_IPV6_BRACKETS(NULL, NULL);
|
||||
@@ -1069,15 +1069,15 @@ mymain(void)
|
||||
TEST_STRIP_IPV6_BRACKETS(":hello]", ":hello]");
|
||||
TEST_STRIP_IPV6_BRACKETS(":[]:", ":[]:");
|
||||
|
||||
#define TEST_STRIP_CONTROL_CHARS(str, res) \
|
||||
do { \
|
||||
struct testStripData stripData = { \
|
||||
.string = str, \
|
||||
.result = res, \
|
||||
}; \
|
||||
if (virTestRun("Strip control chars from " #str, \
|
||||
testStripControlChars, &stripData) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_STRIP_CONTROL_CHARS(str, res) \
|
||||
do { \
|
||||
struct testStripData stripData = { \
|
||||
.string = str, \
|
||||
.result = res, \
|
||||
}; \
|
||||
if (virTestRun("Strip control chars from " #str, \
|
||||
testStripControlChars, &stripData) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_STRIP_CONTROL_CHARS(NULL, NULL);
|
||||
|
||||
+36
-36
@@ -521,13 +521,13 @@ mymain(void)
|
||||
if (virUUIDParse("c7a5fdbd-edaf-9455-926a-d65c16db1809", uuid) < 0)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
# define DO_TEST(_name, func) \
|
||||
do { \
|
||||
if (virTestRun(_name, func, NULL) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun(_name "again ", func, NULL) < 0) \
|
||||
ret = -1; \
|
||||
virSystemdHasMachinedResetCachedValue(); \
|
||||
# define DO_TEST(_name, func) \
|
||||
do { \
|
||||
if (virTestRun(_name, func, NULL) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun(_name "again ", func, NULL) < 0) \
|
||||
ret = -1; \
|
||||
virSystemdHasMachinedResetCachedValue(); \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("Test create container ", testCreateContainer);
|
||||
@@ -540,18 +540,18 @@ mymain(void)
|
||||
DO_TEST("Test create with network ", testCreateNetwork);
|
||||
DO_TEST("Test getting machine name ", testGetMachineName);
|
||||
|
||||
# define TEST_SCOPE(_name, unitname, _legacy) \
|
||||
do { \
|
||||
struct testNameData data = { \
|
||||
.name = _name, .expected = unitname, .legacy = _legacy, \
|
||||
}; \
|
||||
if (virTestRun("Test scopename", testScopeName, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define TEST_SCOPE(_name, unitname, _legacy) \
|
||||
do { \
|
||||
struct testNameData data = { \
|
||||
.name = _name, .expected = unitname, .legacy = _legacy, \
|
||||
}; \
|
||||
if (virTestRun("Test scopename", testScopeName, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
# define TEST_SCOPE_OLD(name, unitname) \
|
||||
# define TEST_SCOPE_OLD(name, unitname) \
|
||||
TEST_SCOPE(name, unitname, true)
|
||||
# define TEST_SCOPE_NEW(name, unitname) \
|
||||
# define TEST_SCOPE_NEW(name, unitname) \
|
||||
TEST_SCOPE(name, unitname, false)
|
||||
|
||||
TEST_SCOPE_OLD("demo", "machine-lxc\\x2ddemo.scope");
|
||||
@@ -562,13 +562,13 @@ mymain(void)
|
||||
|
||||
TEST_SCOPE_NEW("qemu-3-demo", "machine-qemu\\x2d3\\x2ddemo.scope");
|
||||
|
||||
# define TEST_MACHINE(_name, _id, machinename) \
|
||||
do { \
|
||||
struct testNameData data = { \
|
||||
.name = _name, .expected = machinename, .id = _id, \
|
||||
}; \
|
||||
if (virTestRun("Test scopename", testMachineName, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define TEST_MACHINE(_name, _id, machinename) \
|
||||
do { \
|
||||
struct testNameData data = { \
|
||||
.name = _name, .expected = machinename, .id = _id, \
|
||||
}; \
|
||||
if (virTestRun("Test scopename", testMachineName, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_MACHINE("demo", 1, "qemu-1-demo");
|
||||
@@ -582,19 +582,19 @@ mymain(void)
|
||||
TEST_MACHINE("123456789012345678901234567890123456789012345678901234567890", 8,
|
||||
"qemu-8-123456789012345678901234567890123456789012345678901234567");
|
||||
|
||||
# define TESTS_PM_SUPPORT_HELPER(name, function) \
|
||||
do { \
|
||||
struct testPMSupportData data = { \
|
||||
function \
|
||||
}; \
|
||||
if (virTestRun("Test " name " ", testPMSupportHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Test " name " no systemd ", \
|
||||
testPMSupportHelperNoSystemd, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Test systemd " name " not running ", \
|
||||
testPMSupportSystemdNotRunning, &data) < 0) \
|
||||
ret = -1; \
|
||||
# define TESTS_PM_SUPPORT_HELPER(name, function) \
|
||||
do { \
|
||||
struct testPMSupportData data = { \
|
||||
function \
|
||||
}; \
|
||||
if (virTestRun("Test " name " ", testPMSupportHelper, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Test " name " no systemd ", \
|
||||
testPMSupportHelperNoSystemd, &data) < 0) \
|
||||
ret = -1; \
|
||||
if (virTestRun("Test systemd " name " not running ", \
|
||||
testPMSupportSystemdNotRunning, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TESTS_PM_SUPPORT_HELPER("canSuspend", &virSystemdCanSuspend);
|
||||
|
||||
@@ -150,7 +150,7 @@ testfw() {
|
||||
fwpath="$2"
|
||||
|
||||
if [ -f "$fwpath" ]; then
|
||||
sed -e "s,###UUID###,$uuid,g" \
|
||||
sed -e "s,###UUID###,$uuid,g" \
|
||||
-e "s,###DISK###,$disk1,g" \
|
||||
-e "s,</os>,<loader readonly='yes' type='pflash'>$fwpath</loader></os>,g" "$template_xml" > "$test_xml"
|
||||
testme "0" "$title" "-r -u $valid_uuid" "$test_xml"
|
||||
|
||||
+33
-33
@@ -46,13 +46,13 @@ static int testTimeFields(const void *args)
|
||||
|
||||
virTimeFieldsThen(data->when, &actual);
|
||||
|
||||
#define COMPARE(field) \
|
||||
do { \
|
||||
if (data->fields.field != actual.field) { \
|
||||
VIR_DEBUG("Expect " #field " %d got %d", \
|
||||
data->fields.field, actual.field); \
|
||||
return -1; \
|
||||
} \
|
||||
#define COMPARE(field) \
|
||||
do { \
|
||||
if (data->fields.field != actual.field) { \
|
||||
VIR_DEBUG("Expect " #field " %d got %d", \
|
||||
data->fields.field, actual.field); \
|
||||
return -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* tm_year value 0 is based off epoch 1900 */
|
||||
@@ -128,24 +128,24 @@ mymain(void)
|
||||
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
|
||||
#define TEST_FIELDS(ts, year, mon, day, hour, min, sec) \
|
||||
do { \
|
||||
struct testTimeFieldsData data = { \
|
||||
.when = ts, \
|
||||
.fields = { \
|
||||
.tm_year = year, \
|
||||
.tm_mon = mon, \
|
||||
.tm_mday = day, \
|
||||
.tm_hour = hour, \
|
||||
.tm_min = min, \
|
||||
.tm_sec = sec, \
|
||||
.tm_wday = 0, \
|
||||
.tm_yday = 0, \
|
||||
.tm_isdst = 0, \
|
||||
}, \
|
||||
}; \
|
||||
#define TEST_FIELDS(ts, year, mon, day, hour, min, sec) \
|
||||
do { \
|
||||
struct testTimeFieldsData data = { \
|
||||
.when = ts, \
|
||||
.fields = { \
|
||||
.tm_year = year, \
|
||||
.tm_mon = mon, \
|
||||
.tm_mday = day, \
|
||||
.tm_hour = hour, \
|
||||
.tm_min = min, \
|
||||
.tm_sec = sec, \
|
||||
.tm_wday = 0, \
|
||||
.tm_yday = 0, \
|
||||
.tm_isdst = 0, \
|
||||
}, \
|
||||
}; \
|
||||
if (virTestRun("Test fields " #ts " " #year " ", testTimeFields, &data) < 0) \
|
||||
ret = -1; \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_FIELDS(0ull, 1970, 1, 1, 0, 0, 0);
|
||||
@@ -168,15 +168,15 @@ mymain(void)
|
||||
|
||||
TEST_FIELDS(2147483648000ull, 2038, 1, 19, 3, 14, 8);
|
||||
|
||||
#define TEST_LOCALOFFSET(tz, off) \
|
||||
do { \
|
||||
testTimeLocalOffsetData data = { \
|
||||
.zone = tz, \
|
||||
.offset = off, \
|
||||
}; \
|
||||
if (virTestRun("Test localtime offset for " #tz, \
|
||||
testTimeLocalOffset, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_LOCALOFFSET(tz, off) \
|
||||
do { \
|
||||
testTimeLocalOffsetData data = { \
|
||||
.zone = tz, \
|
||||
.offset = off, \
|
||||
}; \
|
||||
if (virTestRun("Test localtime offset for " #tz, \
|
||||
testTimeLocalOffset, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
TEST_LOCALOFFSET("VIR00:30", -30 * 60);
|
||||
|
||||
+12
-12
@@ -144,21 +144,21 @@ mymain(void)
|
||||
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
|
||||
#define TEST_FULL(uri, uri_out, scheme, server, port, path, query, \
|
||||
fragment, user, params) \
|
||||
do { \
|
||||
const struct URIParseData data = { \
|
||||
uri, (uri_out) ? (uri_out) : (uri), scheme, server, port, \
|
||||
path, query, fragment, user, params \
|
||||
}; \
|
||||
if (virTestRun("Test URI " # uri, testURIParse, &data) < 0) \
|
||||
ret = -1; \
|
||||
#define TEST_FULL(uri, uri_out, scheme, server, port, path, query, \
|
||||
fragment, user, params) \
|
||||
do { \
|
||||
const struct URIParseData data = { \
|
||||
uri, (uri_out) ? (uri_out) : (uri), scheme, server, port, \
|
||||
path, query, fragment, user, params \
|
||||
}; \
|
||||
if (virTestRun("Test URI " # uri, testURIParse, &data) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
#define TEST_PARSE(uri, scheme, server, port, path, query, fragment, user, params) \
|
||||
TEST_FULL(uri, NULL, scheme, server, port, path, query, fragment, user, params)
|
||||
#define TEST_PARAMS(query_in, query_out, params) \
|
||||
TEST_FULL("test://example.com/?" query_in, \
|
||||
*query_out ? "test://example.com/?" query_out : NULL, \
|
||||
#define TEST_PARAMS(query_in, query_out, params) \
|
||||
TEST_FULL("test://example.com/?" query_in, \
|
||||
*query_out ? "test://example.com/?" query_out : NULL, \
|
||||
"test", "example.com", 0, "/", query_in, NULL, NULL, params)
|
||||
|
||||
virURIParam params[] = {
|
||||
|
||||
+18
-18
@@ -241,33 +241,33 @@ mymain(void)
|
||||
int rv = 0;
|
||||
|
||||
#define DO_TEST_FIND_FULL(name, vend, prod, bus, devno, vroot, mand, how, fail) \
|
||||
do { \
|
||||
struct findTestInfo data = { name, vend, prod, bus, \
|
||||
devno, vroot, mand, how, fail \
|
||||
}; \
|
||||
if (virTestRun("USBDeviceFind " name, testDeviceFind, &data) < 0) \
|
||||
rv = -1; \
|
||||
do { \
|
||||
struct findTestInfo data = { name, vend, prod, bus, \
|
||||
devno, vroot, mand, how, fail \
|
||||
}; \
|
||||
if (virTestRun("USBDeviceFind " name, testDeviceFind, &data) < 0) \
|
||||
rv = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_FIND(name, vend, prod, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, bus, devno, NULL, true, \
|
||||
#define DO_TEST_FIND(name, vend, prod, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, bus, devno, NULL, true, \
|
||||
FIND_BY_ALL, false)
|
||||
#define DO_TEST_FIND_FAIL(name, vend, prod, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, bus, devno, NULL, true, \
|
||||
#define DO_TEST_FIND_FAIL(name, vend, prod, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, bus, devno, NULL, true, \
|
||||
FIND_BY_ALL, true)
|
||||
|
||||
#define DO_TEST_FIND_BY_BUS(name, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, 101, 202, bus, devno, NULL, true, \
|
||||
#define DO_TEST_FIND_BY_BUS(name, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, 101, 202, bus, devno, NULL, true, \
|
||||
FIND_BY_BUS, false)
|
||||
#define DO_TEST_FIND_BY_BUS_FAIL(name, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, 101, 202, bus, devno, NULL, true, \
|
||||
#define DO_TEST_FIND_BY_BUS_FAIL(name, bus, devno) \
|
||||
DO_TEST_FIND_FULL(name, 101, 202, bus, devno, NULL, true, \
|
||||
FIND_BY_BUS, true)
|
||||
|
||||
#define DO_TEST_FIND_BY_VENDOR(name, vend, prod) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, 123, 456, NULL, true, \
|
||||
#define DO_TEST_FIND_BY_VENDOR(name, vend, prod) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, 123, 456, NULL, true, \
|
||||
FIND_BY_VENDOR, false)
|
||||
#define DO_TEST_FIND_BY_VENDOR_FAIL(name, vend, prod) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, 123, 456, NULL, true, \
|
||||
#define DO_TEST_FIND_BY_VENDOR_FAIL(name, vend, prod) \
|
||||
DO_TEST_FIND_FULL(name, vend, prod, 123, 456, NULL, true, \
|
||||
FIND_BY_VENDOR, true)
|
||||
|
||||
DO_TEST_FIND("Nexus", 0x18d1, 0x4e22, 1, 20);
|
||||
|
||||
@@ -77,14 +77,14 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
# define DO_TEST(vmware_type, name, version) \
|
||||
do { \
|
||||
struct testInfo info = { \
|
||||
vmware_type, name, version \
|
||||
}; \
|
||||
if (virTestRun("VMware Version String Parsing " name, \
|
||||
testVerStrParse, &info) < 0) \
|
||||
ret = -1; \
|
||||
# define DO_TEST(vmware_type, name, version) \
|
||||
do { \
|
||||
struct testInfo info = { \
|
||||
vmware_type, name, version \
|
||||
}; \
|
||||
if (virTestRun("VMware Version String Parsing " name, \
|
||||
testVerStrParse, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("ws", "workstation-7.0.0", 7000000);
|
||||
|
||||
+8
-8
@@ -180,14 +180,14 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
# define DO_TEST(_in, _out) \
|
||||
do { \
|
||||
struct testInfo info = { _in, _out }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("VMware VMX-2-XML "_in" -> "_out, \
|
||||
testCompareHelper, &info) < 0) { \
|
||||
ret = -1; \
|
||||
} \
|
||||
# define DO_TEST(_in, _out) \
|
||||
do { \
|
||||
struct testInfo info = { _in, _out }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("VMware VMX-2-XML "_in" -> "_out, \
|
||||
testCompareHelper, &info) < 0) { \
|
||||
ret = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
testCapsInit();
|
||||
|
||||
+20
-20
@@ -225,32 +225,32 @@ mymain(void)
|
||||
if (!(xmlopt = libxlCreateXMLConf()))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
#define DO_TEST_PARSE(name, replace) \
|
||||
do { \
|
||||
struct testInfo info0 = { name, 0, replace }; \
|
||||
if (virTestRun("Xen XL-2-XML Parse " name, \
|
||||
testCompareHelper, &info0) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_PARSE(name, replace) \
|
||||
do { \
|
||||
struct testInfo info0 = { name, 0, replace }; \
|
||||
if (virTestRun("Xen XL-2-XML Parse " name, \
|
||||
testCompareHelper, &info0) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_FORMAT(name, replace) \
|
||||
do { \
|
||||
struct testInfo info1 = { name, 1, replace }; \
|
||||
if (virTestRun("Xen XL-2-XML Format " name, \
|
||||
testCompareHelper, &info1) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FORMAT(name, replace) \
|
||||
do { \
|
||||
struct testInfo info1 = { name, 1, replace }; \
|
||||
if (virTestRun("Xen XL-2-XML Format " name, \
|
||||
testCompareHelper, &info1) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST(name) \
|
||||
do { \
|
||||
DO_TEST_PARSE(name, false); \
|
||||
DO_TEST_FORMAT(name, false); \
|
||||
#define DO_TEST(name) \
|
||||
do { \
|
||||
DO_TEST_PARSE(name, false); \
|
||||
DO_TEST_FORMAT(name, false); \
|
||||
} while (0)
|
||||
|
||||
#define DO_TEST_REPLACE_VARS(name) \
|
||||
do { \
|
||||
DO_TEST_PARSE(name, true); \
|
||||
DO_TEST_FORMAT(name, true); \
|
||||
#define DO_TEST_REPLACE_VARS(name) \
|
||||
do { \
|
||||
DO_TEST_PARSE(name, true); \
|
||||
DO_TEST_FORMAT(name, true); \
|
||||
} while (0)
|
||||
|
||||
DO_TEST_REPLACE_VARS("fullvirt-ovmf");
|
||||
|
||||
+16
-16
@@ -186,28 +186,28 @@ mymain(void)
|
||||
if (!(xmlopt = xenDomainXMLConfInit()))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
#define DO_TEST_PARSE(name) \
|
||||
do { \
|
||||
struct testInfo info0 = { name, 0 }; \
|
||||
if (virTestRun("Xen XM-2-XML Parse " name, \
|
||||
testCompareHelper, &info0) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_PARSE(name) \
|
||||
do { \
|
||||
struct testInfo info0 = { name, 0 }; \
|
||||
if (virTestRun("Xen XM-2-XML Parse " name, \
|
||||
testCompareHelper, &info0) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define DO_TEST_FORMAT(name) \
|
||||
do { \
|
||||
struct testInfo info1 = { name, 1 }; \
|
||||
if (virTestRun("Xen XM-2-XML Format " name, \
|
||||
testCompareHelper, &info1) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST_FORMAT(name) \
|
||||
do { \
|
||||
struct testInfo info1 = { name, 1 }; \
|
||||
if (virTestRun("Xen XM-2-XML Format " name, \
|
||||
testCompareHelper, &info1) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define DO_TEST(name) \
|
||||
do { \
|
||||
DO_TEST_PARSE(name); \
|
||||
DO_TEST_FORMAT(name); \
|
||||
#define DO_TEST(name) \
|
||||
do { \
|
||||
DO_TEST_PARSE(name); \
|
||||
DO_TEST_FORMAT(name); \
|
||||
} while (0)
|
||||
|
||||
DO_TEST("paravirt-new-pvfb");
|
||||
|
||||
@@ -86,13 +86,13 @@ mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
#define DO_TEST(in, out, name) \
|
||||
do { \
|
||||
struct testInfo info = { in, out, name }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("Xen XML-2-SEXPR " in " -> " out, \
|
||||
testCompareHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
#define DO_TEST(in, out, name) \
|
||||
do { \
|
||||
struct testInfo info = { in, out, name }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("Xen XML-2-SEXPR " in " -> " out, \
|
||||
testCompareHelper, &info) < 0) \
|
||||
ret = -1; \
|
||||
} while (0)
|
||||
|
||||
if (!(caps = testXenCapsInit()))
|
||||
|
||||
+8
-8
@@ -199,14 +199,14 @@ mymain(void)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
# define DO_TEST(_in, _out, _version) \
|
||||
do { \
|
||||
struct testInfo info = { _in, _out, _version }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("VMware XML-2-VMX "_in" -> "_out, \
|
||||
testCompareHelper, &info) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
# define DO_TEST(_in, _out, _version) \
|
||||
do { \
|
||||
struct testInfo info = { _in, _out, _version }; \
|
||||
virResetLastError(); \
|
||||
if (virTestRun("VMware XML-2-VMX "_in" -> "_out, \
|
||||
testCompareHelper, &info) < 0) { \
|
||||
result = -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
testCapsInit();
|
||||
|
||||
Reference in New Issue
Block a user