mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 11:35:19 +00:00
qemu*xml2*test: Invoke tests from a function
Refactor the code so that the test macros invoke a helper function with no additional steps. This change prevents regressions in compilation time when adding extra steps for the tests, which happen when the test macro gets too complicated. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
aecd5085db
commit
3b04d48192
@ -811,18 +811,6 @@ testCompareXMLToArgv(const void *data)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
testInfoSetPaths(testQemuInfo *info,
|
|
||||||
const char *suffix)
|
|
||||||
{
|
|
||||||
info->infile = g_strdup_printf("%s/qemuxml2argvdata/%s.xml",
|
|
||||||
abs_srcdir, info->name);
|
|
||||||
info->outfile = g_strdup_printf("%s/qemuxml2argvdata/%s%s.args",
|
|
||||||
abs_srcdir, info->name, suffix ? suffix : "");
|
|
||||||
info->errfile = g_strdup_printf("%s/qemuxml2argvdata/%s%s.err",
|
|
||||||
abs_srcdir, info->name, suffix ? suffix : "");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
testConfXMLCheck(GHashTable *existingTestCases)
|
testConfXMLCheck(GHashTable *existingTestCases)
|
||||||
@ -870,6 +858,32 @@ testConfXMLEnumerate(GHashTable *existingTestCases)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
testRun(const char *name,
|
||||||
|
const char *suffix,
|
||||||
|
int *ret,
|
||||||
|
struct testQemuConf *testConf,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
g_autofree char *testname = g_strdup_printf("QEMU XML-2-ARGV %s%s", name, suffix);
|
||||||
|
g_autoptr(testQemuInfo) info = g_new0(testQemuInfo, 1);
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
info->name = name;
|
||||||
|
info->conf = testConf;
|
||||||
|
|
||||||
|
va_start(ap, testConf);
|
||||||
|
testQemuInfoSetArgs(info, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
info->infile = g_strdup_printf("%s/qemuxml2argvdata/%s.xml", abs_srcdir, info->name);
|
||||||
|
info->outfile = g_strdup_printf("%s/qemuxml2argvdata/%s%s.args", abs_srcdir, info->name, suffix);
|
||||||
|
info->errfile = g_strdup_printf("%s/qemuxml2argvdata/%s%s.err", abs_srcdir, info->name, suffix);
|
||||||
|
|
||||||
|
virTestRunLog(ret, testname, testCompareXMLToArgv, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
mymain(void)
|
mymain(void)
|
||||||
{
|
{
|
||||||
@ -940,15 +954,7 @@ mymain(void)
|
|||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
# define DO_TEST_FULL(_name, _suffix, ...) \
|
# define DO_TEST_FULL(_name, _suffix, ...) \
|
||||||
do { \
|
testRun(_name, _suffix, &ret, &testConf, __VA_ARGS__);
|
||||||
static testQemuInfo info = { \
|
|
||||||
.name = _name, \
|
|
||||||
}; \
|
|
||||||
testQemuInfoSetArgs(&info, &testConf, __VA_ARGS__); \
|
|
||||||
testInfoSetPaths(&info, _suffix); \
|
|
||||||
virTestRunLog(&ret, "QEMU XML-2-ARGV " _name _suffix, testCompareXMLToArgv, &info); \
|
|
||||||
testQemuInfoClear(&info); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
# define DO_TEST_CAPS_INTERNAL(name, arch, ver, ...) \
|
# define DO_TEST_CAPS_INTERNAL(name, arch, ver, ...) \
|
||||||
DO_TEST_FULL(name, "." arch "-" ver, \
|
DO_TEST_FULL(name, "." arch "-" ver, \
|
||||||
|
@ -107,6 +107,34 @@ testInfoSetPaths(testQemuInfo *info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
testRun(const char *name,
|
||||||
|
const char *suffix,
|
||||||
|
struct testQemuConf *testConf,
|
||||||
|
int *ret,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
g_autofree char *name_active = g_strdup_printf("QEMU XML-2-XML-active %s", name);
|
||||||
|
g_autofree char *name_inactive = g_strdup_printf("QEMU XML-2-XML-inactive %s", name);
|
||||||
|
g_autoptr(testQemuInfo) info = g_new0(testQemuInfo, 1);
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
info->name = name;
|
||||||
|
info->conf = testConf;
|
||||||
|
|
||||||
|
va_start(ap, ret);
|
||||||
|
testQemuInfoSetArgs(info, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
|
||||||
|
testInfoSetPaths(info, suffix, "inactive");
|
||||||
|
virTestRunLog(ret, name_inactive, testXML2XMLInactive, info);
|
||||||
|
|
||||||
|
testInfoSetPaths(info, suffix, "active");
|
||||||
|
virTestRunLog(ret, name_active, testXML2XMLActive, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
mymain(void)
|
mymain(void)
|
||||||
{
|
{
|
||||||
@ -147,22 +175,9 @@ mymain(void)
|
|||||||
virSetConnectStorage(conn);
|
virSetConnectStorage(conn);
|
||||||
|
|
||||||
#define DO_TEST_CAPS_INTERNAL(_name, arch, ver, ...) \
|
#define DO_TEST_CAPS_INTERNAL(_name, arch, ver, ...) \
|
||||||
do { \
|
testRun(_name, "." arch "-" ver, &testConf, &ret, \
|
||||||
static testQemuInfo info = { \
|
ARG_CAPS_ARCH, arch, ARG_CAPS_VER, ver, \
|
||||||
.name = _name, \
|
__VA_ARGS__, ARG_END);
|
||||||
}; \
|
|
||||||
testQemuInfoSetArgs(&info, &testConf, \
|
|
||||||
ARG_CAPS_ARCH, arch, \
|
|
||||||
ARG_CAPS_VER, ver, \
|
|
||||||
__VA_ARGS__, ARG_END); \
|
|
||||||
\
|
|
||||||
testInfoSetPaths(&info, "." arch "-" ver, "inactive"); \
|
|
||||||
virTestRunLog(&ret, "QEMU XML-2-XML-inactive " _name, testXML2XMLInactive, &info); \
|
|
||||||
\
|
|
||||||
testInfoSetPaths(&info, "." arch "-" ver, "active"); \
|
|
||||||
virTestRunLog(&ret, "QEMU XML-2-XML-active " _name, testXML2XMLActive, &info); \
|
|
||||||
testQemuInfoClear(&info); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ...) \
|
#define DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ...) \
|
||||||
DO_TEST_CAPS_INTERNAL(name, arch, "latest", __VA_ARGS__)
|
DO_TEST_CAPS_INTERNAL(name, arch, "latest", __VA_ARGS__)
|
||||||
|
@ -60,11 +60,30 @@ testCompareStatusXMLToXMLFiles(const void *opaque)
|
|||||||
|
|
||||||
static const char *statusPath = abs_srcdir "/qemustatusxml2xmldata/";
|
static const char *statusPath = abs_srcdir "/qemustatusxml2xmldata/";
|
||||||
|
|
||||||
static void
|
|
||||||
testInfoSetStatusPaths(testQemuInfo *info)
|
static int
|
||||||
|
testRunStatus(const char *name,
|
||||||
|
struct testQemuConf *testConf,
|
||||||
|
...)
|
||||||
{
|
{
|
||||||
|
g_autofree char *testname = g_strdup_printf("QEMU status XML-2-XML %s", name);
|
||||||
|
g_autoptr(testQemuInfo) info = g_new0(testQemuInfo, 1);
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
info->name = name;
|
||||||
|
info->conf = testConf;
|
||||||
|
|
||||||
|
va_start(ap, testConf);
|
||||||
|
testQemuInfoSetArgs(info, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
info->infile = g_strdup_printf("%s%s-in.xml", statusPath, info->name);
|
info->infile = g_strdup_printf("%s%s-in.xml", statusPath, info->name);
|
||||||
info->outfile = g_strdup_printf("%s%s-out.xml", statusPath, info->name);
|
info->outfile = g_strdup_printf("%s%s-out.xml", statusPath, info->name);
|
||||||
|
|
||||||
|
if (virTestRun(testname, testCompareStatusXMLToXMLFiles, info) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -90,20 +109,10 @@ mymain(void)
|
|||||||
|
|
||||||
#define DO_TEST_STATUS(_name) \
|
#define DO_TEST_STATUS(_name) \
|
||||||
do { \
|
do { \
|
||||||
static testQemuInfo info = { \
|
if (testRunStatus(_name, &testConf, ARG_END) < 0) \
|
||||||
.name = _name, \
|
|
||||||
}; \
|
|
||||||
testQemuInfoSetArgs(&info, &testConf, ARG_END); \
|
|
||||||
testInfoSetStatusPaths(&info); \
|
|
||||||
\
|
|
||||||
if (virTestRun("QEMU status XML-2-XML " _name, \
|
|
||||||
testCompareStatusXMLToXMLFiles, &info) < 0) \
|
|
||||||
ret = -1; \
|
ret = -1; \
|
||||||
\
|
|
||||||
testQemuInfoClear(&info); \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
DO_TEST_STATUS("blockjob-mirror");
|
DO_TEST_STATUS("blockjob-mirror");
|
||||||
DO_TEST_STATUS("vcpus-multi");
|
DO_TEST_STATUS("vcpus-multi");
|
||||||
DO_TEST_STATUS("modern");
|
DO_TEST_STATUS("modern");
|
||||||
|
@ -624,16 +624,13 @@ testQemuCapsIterate(const char *suffix,
|
|||||||
|
|
||||||
void
|
void
|
||||||
testQemuInfoSetArgs(testQemuInfo *info,
|
testQemuInfoSetArgs(testQemuInfo *info,
|
||||||
struct testQemuConf *conf, ...)
|
va_list argptr)
|
||||||
{
|
{
|
||||||
va_list argptr;
|
|
||||||
testQemuInfoArgName argname;
|
testQemuInfoArgName argname;
|
||||||
int flag;
|
int flag;
|
||||||
|
|
||||||
info->conf = conf;
|
|
||||||
info->args.newargs = true;
|
info->args.newargs = true;
|
||||||
|
|
||||||
va_start(argptr, conf);
|
|
||||||
while ((argname = va_arg(argptr, testQemuInfoArgName)) != ARG_END) {
|
while ((argname = va_arg(argptr, testQemuInfoArgName)) != ARG_END) {
|
||||||
switch (argname) {
|
switch (argname) {
|
||||||
case ARG_QEMU_CAPS:
|
case ARG_QEMU_CAPS:
|
||||||
@ -748,8 +745,6 @@ testQemuInfoSetArgs(testQemuInfo *info,
|
|||||||
if (info->args.invalidarg)
|
if (info->args.invalidarg)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
va_end(argptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -959,7 +954,7 @@ testQemuInfoInitArgs(testQemuInfo *info)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
testQemuInfoClear(testQemuInfo *info)
|
testQemuInfoFree(testQemuInfo *info)
|
||||||
{
|
{
|
||||||
VIR_FREE(info->infile);
|
VIR_FREE(info->infile);
|
||||||
VIR_FREE(info->outfile);
|
VIR_FREE(info->outfile);
|
||||||
@ -970,6 +965,7 @@ testQemuInfoClear(testQemuInfo *info)
|
|||||||
g_clear_pointer(&info->args.fds, g_hash_table_unref);
|
g_clear_pointer(&info->args.fds, g_hash_table_unref);
|
||||||
g_clear_object(&info->nbdkitCaps);
|
g_clear_object(&info->nbdkitCaps);
|
||||||
g_clear_pointer(&info->args.fakeNbdkitCaps, virBitmapFree);
|
g_clear_pointer(&info->args.fakeNbdkitCaps, virBitmapFree);
|
||||||
|
g_free(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -115,6 +115,8 @@ struct _testQemuInfo {
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _testQemuInfo testQemuInfo;
|
typedef struct _testQemuInfo testQemuInfo;
|
||||||
|
void testQemuInfoFree(testQemuInfo *info);
|
||||||
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(testQemuInfo, testQemuInfoFree);
|
||||||
|
|
||||||
virDomainXMLOption *testQemuXMLConfInit(void);
|
virDomainXMLOption *testQemuXMLConfInit(void);
|
||||||
|
|
||||||
@ -153,10 +155,8 @@ int testQemuCapsIterate(const char *suffix,
|
|||||||
void *opaque);
|
void *opaque);
|
||||||
|
|
||||||
void testQemuInfoSetArgs(testQemuInfo *info,
|
void testQemuInfoSetArgs(testQemuInfo *info,
|
||||||
struct testQemuConf *conf,
|
va_list argptr);
|
||||||
...);
|
|
||||||
int testQemuInfoInitArgs(testQemuInfo *info);
|
int testQemuInfoInitArgs(testQemuInfo *info);
|
||||||
void testQemuInfoClear(testQemuInfo *info);
|
|
||||||
|
|
||||||
int testQemuPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
|
int testQemuPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
|
||||||
virDomainChrSourceDef *chardev,
|
virDomainChrSourceDef *chardev,
|
||||||
|
Loading…
Reference in New Issue
Block a user