libvir-list-bounces(a)redhat.com wrote on 10/22/2010 01:02:15 PM:
---
tests/qemuxml2argvtest.c | 240 ++++++++++++++++++++++++
+---------------------
1 files changed, 132 insertions(+), 108 deletions(-)
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 551d6c4..4eb3cc6 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
+#include <stdbool.h>
#include <sys/types.h>
#include <fcntl.h>
@@ -26,7 +27,8 @@ static struct qemud_driver driver;
static int testCompareXMLToArgvFiles(const char *xml,
const char *cmd,
unsigned long long extraFlags,
- const char *migrateFrom) {
+ const char *migrateFrom,
+ bool expectError) {
char argvData[MAX_FILE];
char *expectargv = &(argvData[0]);
char *actualargv = NULL;
@@ -38,6 +40,7 @@ static int testCompareXMLToArgvFiles(const char *xml,
virDomainDefPtr vmdef = NULL;
virDomainChrDef monitor_chr;
virConnectPtr conn;
+ char *log = NULL;
if (!(conn = virGetConnect()))
goto fail;
@@ -80,12 +83,28 @@ static int testCompareXMLToArgvFiles(const char
*xml,
}
+ free(virtTestLogContentAndReset());
+
if (qemudBuildCommandLine(conn, &driver,
vmdef, &monitor_chr, 0, flags,
&argv, &qenv,
NULL, NULL, migrateFrom, NULL) < 0)
goto fail;
+ if ((log = virtTestLogContentAndReset()) == NULL)
+ goto fail;
+
+ if (!!strstr(log, ": error :") != expectError) {
+ if (virTestGetDebug())
+ fprintf(stderr, "\n%s", log);
+ goto fail;
+ }
+
+ if (expectError) {
+ /* need to suppress the errors */
+ virResetLastError();
+ }
+
len = 1; /* for trailing newline */
tmp = qenv;
while (*tmp) {
@@ -125,6 +144,7 @@ static int testCompareXMLToArgvFiles(const char
*xml,
ret = 0;
fail:
+ free(log);
free(actualargv);
if (argv) {
tmp = argv;
@@ -152,6 +172,7 @@ struct testInfo {
const char *name;
unsigned long long extraFlags;
const char *migrateFrom;
+ bool expectError;
};
static int testCompareXMLToArgvHelper(const void *data) {
@@ -162,7 +183,8 @@ static int testCompareXMLToArgvHelper(const void
*data) {
abs_srcdir, info->name);
snprintf(args, PATH_MAX,
"%s/qemuxml2argvdata/qemuxml2argv-%s.args",
abs_srcdir, info->name);
- return testCompareXMLToArgvFiles(xml, args, info->extraFlags,
info->migrateFrom);
+ return testCompareXMLToArgvFiles(xml, args, info->extraFlags,
+ info->migrateFrom,
info->expectError);
}
@@ -193,16 +215,18 @@ mymain(int argc, char **argv)
if ((driver.hugepage_path = strdup("/dev/hugepages/libvirt/
qemu")) == NULL)
return EXIT_FAILURE;
-# define DO_TEST_FULL(name, extraFlags, migrateFrom) \
+# define DO_TEST_FULL(name, extraFlags, migrateFrom, expectError) \
do { \
- const struct testInfo info = { name, extraFlags, migrateFrom };
\
+ const struct testInfo info = { \
+ name, extraFlags, migrateFrom, expectError \
+ }; \
if (virtTestRun("QEMU XML-2-ARGV " name, \
1, testCompareXMLToArgvHelper, &info) < 0) \
ret = -1; \
} while (0)
-# define DO_TEST(name, extraFlags) \
- DO_TEST_FULL(name, extraFlags, NULL)
+# define DO_TEST(name, extraFlags, expectError) \
+ DO_TEST_FULL(name, extraFlags, NULL, expectError)
/* Unset or set all envvars here that are copied in
qemudBuildCommandLine
* using ADD_ENV_COPY, otherwise these tests may fail due to
unexpected
@@ -217,175 +241,175 @@ mymain(int argc, char **argv)
unsetenv("QEMU_AUDIO_DRV");
unsetenv("SDL_AUDIODRIVER");
- DO_TEST("minimal", QEMUD_CMD_FLAG_NAME);
- DO_TEST("machine-aliases1", 0);
[...]
look good to me -- ACK
Stefan