2008-01-29 18:15:54 +00:00
|
|
|
#include <config.h>
|
2006-08-24 21:46:28 +00:00
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <unistd.h>
|
2007-11-26 12:03:34 +00:00
|
|
|
|
Wed Dec 5 13:48:00 UTC 2007 Richard W.M. Jones <rjones@redhat.com>
* python/libvir.c, python/libvirt_wrap.h, qemud/qemud.c,
qemud/remote.c, src/internal.h, src/openvz_conf.c,
src/openvz_driver.c, src/proxy_internal.h, src/qemu_conf.c,
src/qemu_driver.c, src/remote_internal.h, src/test.h, src/util.c,
src/xen_unified.c, src/xen_unified.h, tests/nodeinfotest.c,
tests/qemuxml2argvtest.c, tests/qemuxml2xmltest.c, tests/reconnect.c,
tests/sexpr2xmltest.c, tests/virshtest.c, tests/xencapstest.c,
tests/xmconfigtest.c, tests/xml2sexprtest.c:
Change #include <> to #include "" for local includes.
Removed many includes from src/internal.h and put them in
the C files which actually use them.
Removed <ansidecl.h> - unused.
Added a comment around __func__.
Removed a clashing redefinition of VERSION symbol.
All limits (PATH_MAX etc) now done in src/internal.h, so we
don't need to include those headers in other files.
2007-12-05 13:56:22 +00:00
|
|
|
#include "internal.h"
|
2006-08-24 21:46:28 +00:00
|
|
|
#include "xml.h"
|
|
|
|
#include "testutils.h"
|
|
|
|
|
|
|
|
static char *progname;
|
2007-11-14 10:35:58 +00:00
|
|
|
static char *abs_top_srcdir;
|
2006-08-24 21:46:28 +00:00
|
|
|
#define MAX_FILE 4096
|
|
|
|
|
|
|
|
static int testFilterLine(char *buffer,
|
2008-04-10 16:54:54 +00:00
|
|
|
const char *toRemove) {
|
2006-08-24 21:46:28 +00:00
|
|
|
char *start;
|
|
|
|
char *end;
|
|
|
|
|
|
|
|
if (!(start = strstr(buffer, toRemove)))
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
if (!(end = strstr(start+1, "\n"))) {
|
|
|
|
*start = '\0';
|
|
|
|
} else {
|
|
|
|
memmove(start, end, strlen(end)+1);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2007-11-14 10:35:58 +00:00
|
|
|
static int testCompareOutput(const char *expect_rel, const char *filter,
|
|
|
|
const char *const argv[]) {
|
2006-08-24 21:46:28 +00:00
|
|
|
char expectData[MAX_FILE];
|
|
|
|
char actualData[MAX_FILE];
|
|
|
|
char *expectPtr = &(expectData[0]);
|
|
|
|
char *actualPtr = &(actualData[0]);
|
2007-11-14 10:35:58 +00:00
|
|
|
char expect[PATH_MAX];
|
|
|
|
|
|
|
|
snprintf(expect, sizeof expect - 1, "%s/tests/%s", abs_top_srcdir, expect_rel);
|
2006-08-24 21:46:28 +00:00
|
|
|
|
|
|
|
if (virtTestLoadFile(expect, &expectPtr, MAX_FILE) < 0)
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
if (virtTestCaptureProgramOutput(argv, &actualPtr, MAX_FILE) < 0)
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
if (filter)
|
|
|
|
if (testFilterLine(actualData, filter) < 0)
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
if (getenv("DEBUG_TESTS")) {
|
2006-09-14 15:34:50 +00:00
|
|
|
printf("Expect %d '%s'\n", (int)strlen(expectData), expectData);
|
|
|
|
printf("Actual %d '%s'\n", (int)strlen(actualData), actualData);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
if (strcmp(expectData, actualData))
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#define VIRSH_DEFAULT "../src/virsh", \
|
|
|
|
"--connect", \
|
|
|
|
"test:///default"
|
|
|
|
|
|
|
|
static char *custom_uri;
|
|
|
|
|
|
|
|
#define VIRSH_CUSTOM "../src/virsh", \
|
|
|
|
"--connect", \
|
|
|
|
custom_uri
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareListDefault(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_DEFAULT,
|
|
|
|
"list",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/list-default.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareListCustom(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"list",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/list-custom.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareNodeinfoDefault(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_DEFAULT,
|
|
|
|
"nodeinfo",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/nodeinfo-default.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareNodeinfoCustom(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"nodeinfo",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/nodeinfo-custom.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDominfoByID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"dominfo",
|
2007-01-26 13:10:28 +00:00
|
|
|
"2",
|
2006-08-24 21:46:28 +00:00
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/dominfo-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
"\nCPU time:",
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDominfoByUUID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"dominfo",
|
|
|
|
"ef861801-45b9-11cb-88e3-afbfe5370493",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/dominfo-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
"\nCPU time:",
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDominfoByName(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"dominfo",
|
|
|
|
"fc4",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/dominfo-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
"\nCPU time:",
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomuuidByID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domuuid",
|
2007-01-26 13:10:28 +00:00
|
|
|
"2",
|
2006-08-24 21:46:28 +00:00
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domuuid-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomuuidByName(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domuuid",
|
|
|
|
"fc4",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domuuid-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomidByName(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domid",
|
|
|
|
"fc4",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domid-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomidByUUID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domid",
|
|
|
|
"ef861801-45b9-11cb-88e3-afbfe5370493",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domid-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomnameByID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domname",
|
2007-01-26 13:10:28 +00:00
|
|
|
"2",
|
2006-08-24 21:46:28 +00:00
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domname-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomnameByUUID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domname",
|
|
|
|
"ef861801-45b9-11cb-88e3-afbfe5370493",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domname-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomstateByID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domstate",
|
2007-01-26 13:10:28 +00:00
|
|
|
"2",
|
2006-08-24 21:46:28 +00:00
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domstate-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomstateByUUID(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domstate",
|
|
|
|
"ef861801-45b9-11cb-88e3-afbfe5370493",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domstate-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
2007-07-18 21:08:22 +00:00
|
|
|
static int testCompareDomstateByName(const void *data ATTRIBUTE_UNUSED) {
|
2006-08-24 21:46:28 +00:00
|
|
|
const char *const argv[] = {
|
|
|
|
VIRSH_CUSTOM,
|
|
|
|
"domstate",
|
|
|
|
"fc4",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
return testCompareOutput("virshdata/domstate-fc4.txt",
|
2008-04-10 16:54:54 +00:00
|
|
|
NULL,
|
|
|
|
argv);
|
2006-08-24 21:46:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
main(int argc, char **argv)
|
|
|
|
{
|
|
|
|
int ret = 0;
|
|
|
|
char buffer[PATH_MAX];
|
|
|
|
|
2007-11-14 10:35:58 +00:00
|
|
|
abs_top_srcdir = getenv("abs_top_srcdir");
|
|
|
|
if (!abs_top_srcdir)
|
2006-08-24 21:46:28 +00:00
|
|
|
return 1;
|
|
|
|
|
2007-11-14 10:35:58 +00:00
|
|
|
snprintf(buffer, PATH_MAX-1, "test://%s/docs/testnode.xml", abs_top_srcdir);
|
2006-08-24 21:46:28 +00:00
|
|
|
buffer[PATH_MAX-1] = '\0';
|
|
|
|
progname = argv[0];
|
|
|
|
custom_uri = buffer;
|
2008-02-05 19:27:37 +00:00
|
|
|
|
2006-08-24 21:46:28 +00:00
|
|
|
if (argc > 1) {
|
2008-02-05 19:27:37 +00:00
|
|
|
fprintf(stderr, "Usage: %s\n", progname);
|
2006-08-24 21:46:28 +00:00
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
2008-02-05 19:27:37 +00:00
|
|
|
|
2006-08-24 21:46:28 +00:00
|
|
|
if (virtTestRun("virsh list (default)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareListDefault, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh list (custom)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareListCustom, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh nodeinfo (default)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareNodeinfoDefault, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh nodeinfo (custom)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareNodeinfoCustom, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh dominfo (by id)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDominfoByID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh dominfo (by uuid)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDominfoByUUID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh dominfo (by name)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDominfoByName, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domid (by name)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomidByName, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domid (by uuid)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomidByUUID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domuuid (by id)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomuuidByID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domuuid (by name)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomuuidByName, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domname (by id)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomnameByID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domname (by uuid)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomnameByUUID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domstate (by id)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomstateByID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domstate (by uuid)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomstateByUUID, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
if (virtTestRun("virsh domstate (by name)",
|
2008-04-10 16:54:54 +00:00
|
|
|
1, testCompareDomstateByName, NULL) != 0)
|
2006-08-24 21:46:28 +00:00
|
|
|
ret = -1;
|
|
|
|
|
|
|
|
exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
|
|
|
|
}
|