For testing hypervisor independent XML handling. Right now it's just
populated with an example test case.
---
tests/Makefile.am | 9 +++
tests/domainschematest | 2 +-
tests/genericxml2xmlindata/generic-disk-virtio.xml | 45 ++++++++++++
.../genericxml2xmloutdata/generic-disk-virtio.xml | 45 ++++++++++++
tests/genericxml2xmltest.c | 83 ++++++++++++++++++++++
5 files changed, 183 insertions(+), 1 deletion(-)
create mode 100644 tests/genericxml2xmlindata/generic-disk-virtio.xml
create mode 100644 tests/genericxml2xmloutdata/generic-disk-virtio.xml
create mode 100644 tests/genericxml2xmltest.c
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 1d57b39..ee16666 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -89,6 +89,8 @@ EXTRA_DIST = \
domainsnapshotxml2xmlin \
domainsnapshotxml2xmlout \
fchostdata \
+ genericxml2xmlindata \
+ genericxml2xmloutdata \
interfaceschemadata \
lxcconf2xmldata \
lxcxml2xmldata \
@@ -334,6 +336,8 @@ test_programs += metadatatest
test_programs += secretxml2xmltest
+test_programs += genericxml2xmltest
+
if WITH_LINUX
test_programs += virusbtest \
virnetdevbandwidthtest \
@@ -800,6 +804,11 @@ secretxml2xmltest_SOURCES = \
testutils.c testutils.h
secretxml2xmltest_LDADD = $(LDADDS)
+genericxml2xmltest_SOURCES = \
+ genericxml2xmltest.c \
+ testutils.c testutils.h
+genericxml2xmltest_LDADD = $(LDADDS)
+
if WITH_STORAGE
storagevolxml2argvtest_SOURCES = \
diff --git a/tests/domainschematest b/tests/domainschematest
index 31ee536..479fd23 100755
--- a/tests/domainschematest
+++ b/tests/domainschematest
@@ -8,7 +8,7 @@ DIRS=""
DIRS="$DIRS domainschemadata qemuxml2argvdata sexpr2xmldata"
DIRS="$DIRS xmconfigdata xml2sexprdata qemuxml2xmloutdata"
DIRS="$DIRS lxcxml2xmldata lxcxml2xmloutdata"
-DIRS="$DIRS bhyvexml2argvdata"
+DIRS="$DIRS bhyvexml2argvdata genericxml2xmlindata genericxml2xmloutdata"
SCHEMA="domain.rng"
check_schema "$DIRS" "$SCHEMA"
diff --git a/tests/genericxml2xmlindata/generic-disk-virtio.xml
b/tests/genericxml2xmlindata/generic-disk-virtio.xml
new file mode 100644
index 0000000..458c55d
--- /dev/null
+++ b/tests/genericxml2xmlindata/generic-disk-virtio.xml
@@ -0,0 +1,45 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ <address type='drive' controller='0' bus='0'
target='0' unit='0'/>
+ </disk>
+ <disk type='block' device='cdrom'>
+ <driver name='qemu' type='raw'/>
+ <source dev='/dev/HostVG/QEMUGuest2'/>
+ <target dev='hdc' bus='ide'/>
+ <readonly/>
+ <address type='drive' controller='0' bus='1'
target='0' unit='0'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source file='/tmp/data.img'/>
+ <target dev='vda' bus='virtio'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source file='/tmp/logs.img'/>
+ <target dev='vdb' bus='virtio'/>
+ </disk>
+ <controller type='usb' index='0'/>
+ <controller type='ide' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
diff --git a/tests/genericxml2xmloutdata/generic-disk-virtio.xml
b/tests/genericxml2xmloutdata/generic-disk-virtio.xml
new file mode 100644
index 0000000..458c55d
--- /dev/null
+++ b/tests/genericxml2xmloutdata/generic-disk-virtio.xml
@@ -0,0 +1,45 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ <address type='drive' controller='0' bus='0'
target='0' unit='0'/>
+ </disk>
+ <disk type='block' device='cdrom'>
+ <driver name='qemu' type='raw'/>
+ <source dev='/dev/HostVG/QEMUGuest2'/>
+ <target dev='hdc' bus='ide'/>
+ <readonly/>
+ <address type='drive' controller='0' bus='1'
target='0' unit='0'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source file='/tmp/data.img'/>
+ <target dev='vda' bus='virtio'/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source file='/tmp/logs.img'/>
+ <target dev='vdb' bus='virtio'/>
+ </disk>
+ <controller type='usb' index='0'/>
+ <controller type='ide' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c
new file mode 100644
index 0000000..7f79896
--- /dev/null
+++ b/tests/genericxml2xmltest.c
@@ -0,0 +1,83 @@
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "testutils.h"
+#include "internal.h"
+#include "virstring.h"
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+static virCapsPtr caps;
+static virDomainXMLOptionPtr xmlopt;
+
+struct testInfo {
+ const char *name;
+ int different;
+ bool inactive_only;
+};
+
+static int
+testCompareXMLToXMLHelper(const void *data)
+{
+ const struct testInfo *info = data;
+ char *xml_in = NULL;
+ char *xml_out = NULL;
+ int ret = -1;
+
+ if (virAsprintf(&xml_in, "%s/genericxml2xmlindata/generic-%s.xml",
+ abs_srcdir, info->name) < 0 ||
+ virAsprintf(&xml_out, "%s/genericxml2xmloutdata/generic-%s.xml",
+ abs_srcdir, info->name) < 0)
+ goto cleanup;
+
+ ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in,
+ info->different ? xml_out : xml_in,
+ !info->inactive_only);
+ cleanup:
+ VIR_FREE(xml_in);
+ VIR_FREE(xml_out);
+ return ret;
+}
+
+
+static int
+mymain(void)
+{
+ int ret = 0;
+
+ if (!(caps = virTestGenericCapsInit()))
+ return EXIT_FAILURE;
+
+ if (!(xmlopt = virTestGenericDomainXMLConfInit()))
+ return EXIT_FAILURE;
+
+#define DO_TEST_FULL(name, is_different, inactive) \
+ do { \
+ const struct testInfo info = {name, is_different, inactive}; \
+ if (virtTestRun("GENERIC XML-2-XML " name, \
+ testCompareXMLToXMLHelper, &info) < 0) \
+ ret = -1; \
+ } while (0)
+
+#define DO_TEST(name) \
+ DO_TEST_FULL(name, 0, false)
+
+#define DO_TEST_DIFFERENT(name) \
+ DO_TEST_FULL(name, 1, false)
+
+ DO_TEST_DIFFERENT("disk-virtio");
+
+ virObjectUnref(caps);
+ virObjectUnref(xmlopt);
+
+ return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIRT_TEST_MAIN(mymain)
--
2.5.0