summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2015-10-14 09:45:42 -0400
committerGuido Günther <agx@sigxcpu.org>2015-10-14 09:45:42 -0400
commita4989de47670012933ab6a4119796d7469a90bfb (patch)
treec1409ee9adb90f6f0423aebb2062bde4492c8661 /tests
parent8264435ca2485b14f0d9c459c075abbcc1defb43 (diff)
New upstream version 1.2.20
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/Makefile.in4
-rw-r--r--tests/domainsnapshotxml2xmltest.c11
-rw-r--r--tests/qemuagenttest.c10
-rw-r--r--tests/qemuargv2xmltest.c12
-rw-r--r--tests/qemucapabilitiesdata/caps_1.2.2-1.caps3
-rw-r--r--tests/qemucapabilitiesdata/caps_1.3.1-1.caps3
-rw-r--r--tests/qemucapabilitiesdata/caps_1.4.2-1.caps3
-rw-r--r--tests/qemucapabilitiesdata/caps_1.5.3-1.caps3
-rw-r--r--tests/qemucapabilitiesdata/caps_1.6.0-1.caps3
-rw-r--r--tests/qemucapabilitiesdata/caps_1.6.50-1.caps3
-rw-r--r--tests/qemucapabilitiesdata/caps_2.1.1-1.caps3
-rw-r--r--tests/qemucapabilitiestest.c9
-rw-r--r--tests/qemucaps2xmltest.c1
-rw-r--r--tests/qemuhelptest.c30
-rw-r--r--tests/qemuhotplugtest.c33
-rw-r--r--tests/qemumonitorjsontest.c21
-rw-r--r--tests/qemumonitortest.c9
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disordered.xml26
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-dimm.xml2
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.args13
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.xml33
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-net-udp.args7
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-net-udp.xml34
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args2
-rw-r--r--tests/qemuxml2argvdata/qemuxml2argv-restore-v1.args2
-rw-r--r--tests/qemuxml2argvtest.c30
-rw-r--r--tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-numa-disordered.xml29
-rw-r--r--tests/qemuxml2xmltest.c14
-rw-r--r--tests/qemuxmlnstest.c17
-rw-r--r--tests/seclabeltest.c2
-rw-r--r--tests/securityselinuxlabeltest.c10
-rw-r--r--tests/securityselinuxtest.c2
-rw-r--r--tests/testutilsqemu.c73
-rw-r--r--tests/testutilsqemu.h7
-rw-r--r--tests/vircapstest.c32
-rw-r--r--tests/virhostdevtest.c2
-rw-r--r--tests/virnetdaemontest.c2
-rw-r--r--tests/virportallocatortest.c2
-rw-r--r--tests/virscsitest.c2
-rw-r--r--tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.vmx6
-rw-r--r--tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.xml24
-rw-r--r--tests/vmx2xmldata/vmx2xml-datacenterpath.vmx2
-rw-r--r--tests/vmx2xmldata/vmx2xml-datacenterpath.xml19
-rw-r--r--tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.vmx85
-rw-r--r--tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.xml35
-rw-r--r--tests/vmx2xmltest.c7
-rw-r--r--tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.vmx14
-rw-r--r--tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.xml14
-rw-r--r--tests/xml2vmxdata/xml2vmx-datacenterpath.vmx10
-rw-r--r--tests/xml2vmxdata/xml2vmx-datacenterpath.xml9
-rw-r--r--tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.vmx25
-rw-r--r--tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.xml35
-rw-r--r--tests/xml2vmxtest.c5
54 files changed, 676 insertions, 119 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index bde7f5baf..4af38fe9c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1020,6 +1020,7 @@ libvirportallocatormock_la_SOURCES = \
virportallocatortest.c
libvirportallocatormock_la_CFLAGS = $(AM_CFLAGS) -DMOCK_HELPER=1
libvirportallocatormock_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
+libvirportallocatormock_la_LIBADD = ../src/libvirt.la
vircgrouptest_SOURCES = \
vircgrouptest.c testutils.h testutils.c
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 6f623a5cf..1c1da9b20 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -476,7 +476,7 @@ libshunload_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$@
@WITH_TESTS_FALSE@am_libshunload_la_rpath =
@WITH_TESTS_TRUE@am_libshunload_la_rpath =
-libvirportallocatormock_la_LIBADD =
+libvirportallocatormock_la_DEPENDENCIES = ../src/libvirt.la
am_libvirportallocatormock_la_OBJECTS = \
libvirportallocatormock_la-virportallocatortest.lo
libvirportallocatormock_la_OBJECTS = \
@@ -3132,7 +3132,6 @@ VGCREATE = @VGCREATE@
VGREMOVE = @VGREMOVE@
VGS = @VGS@
VGSCAN = @VGSCAN@
-VIRSH_LIBS = @VIRSH_LIBS@
VIR_TEST_EXPENSIVE_DEFAULT = @VIR_TEST_EXPENSIVE_DEFAULT@
WARN_CFLAGS = @WARN_CFLAGS@
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
@@ -3786,6 +3785,7 @@ libvirportallocatormock_la_SOURCES = \
libvirportallocatormock_la_CFLAGS = $(AM_CFLAGS) -DMOCK_HELPER=1
libvirportallocatormock_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
+libvirportallocatormock_la_LIBADD = ../src/libvirt.la
vircgrouptest_SOURCES = \
vircgrouptest.c testutils.h testutils.c
diff --git a/tests/domainsnapshotxml2xmltest.c b/tests/domainsnapshotxml2xmltest.c
index 3955a19a3..cd91cfae4 100644
--- a/tests/domainsnapshotxml2xmltest.c
+++ b/tests/domainsnapshotxml2xmltest.c
@@ -152,13 +152,11 @@ mymain(void)
{
int ret = 0;
- if ((driver.caps = testQemuCapsInit()) == NULL)
+ if (qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
- if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver))) {
- virObjectUnref(driver.caps);
- return EXIT_FAILURE;
- }
+ /* TODO: test with format probing disabled too */
+ driver.config->allowDiskFormatProbing = true;
if (VIR_ALLOC(testSnapshotXMLVariableLineRegex) < 0)
goto cleanup;
@@ -227,8 +225,7 @@ mymain(void)
if (testSnapshotXMLVariableLineRegex)
regfree(testSnapshotXMLVariableLineRegex);
VIR_FREE(testSnapshotXMLVariableLineRegex);
- virObjectUnref(driver.caps);
- virObjectUnref(driver.xmlopt);
+ qemuTestDriverFree(&driver);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemuagenttest.c b/tests/qemuagenttest.c
index 52cc8343b..bd66fcb11 100644
--- a/tests/qemuagenttest.c
+++ b/tests/qemuagenttest.c
@@ -908,8 +908,8 @@ testQemuAgentGetInterfaces(const void *data)
static int
mymain(void)
{
+ virQEMUDriver driver;
int ret = 0;
- virDomainXMLOptionPtr xmlopt;
#if !WITH_YAJL
fputs("libvirt not compiled with yajl, skipping this test\n", stderr);
@@ -917,13 +917,13 @@ mymain(void)
#endif
if (virThreadInitialize() < 0 ||
- !(xmlopt = virQEMUDriverCreateXMLConf(NULL)))
+ qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
virEventRegisterDefaultImpl();
-#define DO_TEST(name) \
- if (virtTestRun(# name, testQemuAgent ## name, xmlopt) < 0) \
+#define DO_TEST(name) \
+ if (virtTestRun(# name, testQemuAgent ## name, driver.xmlopt) < 0) \
ret = -1
DO_TEST(FSFreeze);
@@ -938,7 +938,7 @@ mymain(void)
DO_TEST(Timeout); /* Timeout should always be called last */
- virObjectUnref(xmlopt);
+ qemuTestDriverFree(&driver);
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c
index ea8591366..96453e55f 100644
--- a/tests/qemuargv2xmltest.c
+++ b/tests/qemuargv2xmltest.c
@@ -145,15 +145,9 @@ mymain(void)
{
int ret = 0;
- driver.config = virQEMUDriverConfigNew(false);
- if (driver.config == NULL)
+ if (qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
- if ((driver.caps = testQemuCapsInit()) == NULL)
- return EXIT_FAILURE;
-
- if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
- return EXIT_FAILURE;
# define DO_TEST_FULL(name, flags) \
do { \
@@ -298,9 +292,7 @@ mymain(void)
DO_TEST("machine-deakeywrap-off-argv");
DO_TEST("machine-keywrap-none-argv");
- virObjectUnref(driver.config);
- virObjectUnref(driver.caps);
- virObjectUnref(driver.xmlopt);
+ qemuTestDriverFree(&driver);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemucapabilitiesdata/caps_1.2.2-1.caps b/tests/qemucapabilitiesdata/caps_1.2.2-1.caps
index ba166354b..5f179de06 100644
--- a/tests/qemucapabilitiesdata/caps_1.2.2-1.caps
+++ b/tests/qemucapabilitiesdata/caps_1.2.2-1.caps
@@ -123,4 +123,7 @@
<flag name='ioh3420'/>
<flag name='x3130-upstream'/>
<flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
</qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_1.3.1-1.caps b/tests/qemucapabilitiesdata/caps_1.3.1-1.caps
index 51cd6d9b3..dad097a07 100644
--- a/tests/qemucapabilitiesdata/caps_1.3.1-1.caps
+++ b/tests/qemucapabilitiesdata/caps_1.3.1-1.caps
@@ -138,4 +138,7 @@
<flag name='ioh3420'/>
<flag name='x3130-upstream'/>
<flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
</qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_1.4.2-1.caps b/tests/qemucapabilitiesdata/caps_1.4.2-1.caps
index 03d0a3ebb..1f2682ee5 100644
--- a/tests/qemucapabilitiesdata/caps_1.4.2-1.caps
+++ b/tests/qemucapabilitiesdata/caps_1.4.2-1.caps
@@ -139,4 +139,7 @@
<flag name='ioh3420'/>
<flag name='x3130-upstream'/>
<flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
</qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_1.5.3-1.caps b/tests/qemucapabilitiesdata/caps_1.5.3-1.caps
index e2f22e4bb..95f364f36 100644
--- a/tests/qemucapabilitiesdata/caps_1.5.3-1.caps
+++ b/tests/qemucapabilitiesdata/caps_1.5.3-1.caps
@@ -148,4 +148,7 @@
<flag name='ioh3420'/>
<flag name='x3130-upstream'/>
<flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
</qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_1.6.0-1.caps b/tests/qemucapabilitiesdata/caps_1.6.0-1.caps
index 874a0508d..6533a6e6f 100644
--- a/tests/qemucapabilitiesdata/caps_1.6.0-1.caps
+++ b/tests/qemucapabilitiesdata/caps_1.6.0-1.caps
@@ -154,4 +154,7 @@
<flag name='ioh3420'/>
<flag name='x3130-upstream'/>
<flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
</qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_1.6.50-1.caps b/tests/qemucapabilitiesdata/caps_1.6.50-1.caps
index dd3bcda08..b2e775bb7 100644
--- a/tests/qemucapabilitiesdata/caps_1.6.50-1.caps
+++ b/tests/qemucapabilitiesdata/caps_1.6.50-1.caps
@@ -154,4 +154,7 @@
<flag name='ioh3420'/>
<flag name='x3130-upstream'/>
<flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
</qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_2.1.1-1.caps b/tests/qemucapabilitiesdata/caps_2.1.1-1.caps
index 3ee2d6f71..88fe13a7c 100644
--- a/tests/qemucapabilitiesdata/caps_2.1.1-1.caps
+++ b/tests/qemucapabilitiesdata/caps_2.1.1-1.caps
@@ -170,4 +170,7 @@
<flag name='ioh3420'/>
<flag name='x3130-upstream'/>
<flag name='xio3130-downstream'/>
+ <flag name='rtl8139'/>
+ <flag name='e1000'/>
+ <flag name='virtio-net'/>
</qemuCaps>
diff --git a/tests/qemucapabilitiestest.c b/tests/qemucapabilitiestest.c
index 0fbc43c90..99abd02e1 100644
--- a/tests/qemucapabilitiestest.c
+++ b/tests/qemucapabilitiestest.c
@@ -160,7 +160,7 @@ static int
mymain(void)
{
int ret = 0;
- virDomainXMLOptionPtr xmlopt;
+ virQEMUDriver driver;
testQemuData data;
#if !WITH_YAJL
@@ -169,12 +169,12 @@ mymain(void)
#endif
if (virThreadInitialize() < 0 ||
- !(xmlopt = virQEMUDriverCreateXMLConf(NULL)))
+ qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
virEventRegisterDefaultImpl();
- data.xmlopt = xmlopt;
+ data.xmlopt = driver.xmlopt;
#define DO_TEST(name) \
do { \
@@ -191,7 +191,8 @@ mymain(void)
DO_TEST("caps_1.6.50-1");
DO_TEST("caps_2.1.1-1");
- virObjectUnref(xmlopt);
+ qemuTestDriverFree(&driver);
+
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemucaps2xmltest.c b/tests/qemucaps2xmltest.c
index 6a5811c6c..7adde2469 100644
--- a/tests/qemucaps2xmltest.c
+++ b/tests/qemucaps2xmltest.c
@@ -113,6 +113,7 @@ testGetCaps(char *capsData, const testQemuData *data)
error:
virObjectUnref(qemuCaps);
+ virObjectUnref(caps);
return NULL;
}
diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c
index 8f317d4cc..7b78537ca 100644
--- a/tests/qemuhelptest.c
+++ b/tests/qemuhelptest.c
@@ -409,7 +409,10 @@ mymain(void)
QEMU_CAPS_DEVICE_USB_SERIAL,
QEMU_CAPS_DEVICE_USB_NET,
QEMU_CAPS_DEVICE_USB_KBD,
- QEMU_CAPS_DEVICE_PCI_BRIDGE);
+ QEMU_CAPS_DEVICE_PCI_BRIDGE,
+ QEMU_CAPS_DEVICE_RTL8139,
+ QEMU_CAPS_DEVICE_E1000,
+ QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
QEMU_CAPS_VNC_COLON,
QEMU_CAPS_NO_REBOOT,
@@ -524,7 +527,10 @@ mymain(void)
QEMU_CAPS_DEVICE_USB_KBD,
QEMU_CAPS_DEVICE_USB_STORAGE,
QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
- QEMU_CAPS_DEVICE_IVSHMEM);
+ QEMU_CAPS_DEVICE_IVSHMEM,
+ QEMU_CAPS_DEVICE_RTL8139,
+ QEMU_CAPS_DEVICE_E1000,
+ QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
QEMU_CAPS_VNC_COLON,
QEMU_CAPS_NO_REBOOT,
@@ -591,7 +597,10 @@ mymain(void)
QEMU_CAPS_DEVICE_USB_SERIAL,
QEMU_CAPS_DEVICE_USB_NET,
QEMU_CAPS_DEVICE_USB_KBD,
- QEMU_CAPS_DEVICE_PCI_BRIDGE);
+ QEMU_CAPS_DEVICE_PCI_BRIDGE,
+ QEMU_CAPS_DEVICE_RTL8139,
+ QEMU_CAPS_DEVICE_E1000,
+ QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
QEMU_CAPS_VNC_COLON,
QEMU_CAPS_NO_REBOOT,
@@ -666,7 +675,10 @@ mymain(void)
QEMU_CAPS_DEVICE_CIRRUS_VGA,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_USB_KBD,
- QEMU_CAPS_DEVICE_USB_STORAGE);
+ QEMU_CAPS_DEVICE_USB_STORAGE,
+ QEMU_CAPS_DEVICE_RTL8139,
+ QEMU_CAPS_DEVICE_E1000,
+ QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-1.0", 1000000, 0, 0,
QEMU_CAPS_VNC_COLON,
QEMU_CAPS_NO_REBOOT,
@@ -756,7 +768,10 @@ mymain(void)
QEMU_CAPS_DEVICE_IVSHMEM,
QEMU_CAPS_DEVICE_IOH3420,
QEMU_CAPS_DEVICE_X3130_UPSTREAM,
- QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM);
+ QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
+ QEMU_CAPS_DEVICE_RTL8139,
+ QEMU_CAPS_DEVICE_E1000,
+ QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-1.1.0", 1001000, 0, 0,
QEMU_CAPS_VNC_COLON,
QEMU_CAPS_NO_REBOOT,
@@ -859,7 +874,10 @@ mymain(void)
QEMU_CAPS_DEVICE_IVSHMEM,
QEMU_CAPS_DEVICE_IOH3420,
QEMU_CAPS_DEVICE_X3130_UPSTREAM,
- QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM);
+ QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
+ QEMU_CAPS_DEVICE_RTL8139,
+ QEMU_CAPS_DEVICE_E1000,
+ QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST_FULL("qemu-1.2.0", 1002000, 0, 0, VIR_ERR_CONFIG_UNSUPPORTED,
QEMU_CAPS_LAST);
DO_TEST_FULL("qemu-kvm-1.2.0", 1002000, 1, 0, VIR_ERR_CONFIG_UNSUPPORTED,
diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c
index 368a5e7bf..2135b5a9c 100644
--- a/tests/qemuhotplugtest.c
+++ b/tests/qemuhotplugtest.c
@@ -57,7 +57,7 @@ static int
qemuHotplugCreateObjects(virDomainXMLOptionPtr xmlopt,
virDomainObjPtr *vm,
const char *domxml,
- bool event)
+ bool event, const char *testname)
{
int ret = -1;
qemuDomainObjPrivatePtr priv = NULL;
@@ -65,12 +65,6 @@ qemuHotplugCreateObjects(virDomainXMLOptionPtr xmlopt,
if (!(*vm = virDomainObjNew(xmlopt)))
goto cleanup;
- if (!((*vm)->def = virDomainDefParseString(domxml,
- driver.caps,
- driver.xmlopt,
- VIR_DOMAIN_DEF_PARSE_INACTIVE)))
- goto cleanup;
-
priv = (*vm)->privateData;
if (!(priv->qemuCaps = virQEMUCapsNew()))
@@ -85,6 +79,17 @@ qemuHotplugCreateObjects(virDomainXMLOptionPtr xmlopt,
if (event)
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_DEL_EVENT);
+ ret = qemuTestCapsCacheInsert(driver.qemuCapsCache, testname,
+ priv->qemuCaps);
+ if (ret < 0)
+ goto cleanup;
+
+ if (!((*vm)->def = virDomainDefParseString(domxml,
+ driver.caps,
+ driver.xmlopt,
+ VIR_DOMAIN_DEF_PARSE_INACTIVE)))
+ goto cleanup;
+
if (qemuDomainAssignAddresses((*vm)->def, priv->qemuCaps, *vm) < 0)
goto cleanup;
@@ -243,7 +248,8 @@ testQemuHotplug(const void *data)
vm = test->vm;
} else {
if (qemuHotplugCreateObjects(driver.xmlopt, &vm, domain_xml,
- test->deviceDeletedEvent) < 0)
+ test->deviceDeletedEvent,
+ test->domain_filename) < 0)
goto cleanup;
}
@@ -338,14 +344,11 @@ mymain(void)
#endif
if (virThreadInitialize() < 0 ||
- !(driver.caps = testQemuCapsInit()) ||
- !(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
+ qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
virEventRegisterDefaultImpl();
- if (!(driver.config = virQEMUDriverConfigNew(false)))
- return EXIT_FAILURE;
VIR_FREE(driver.config->spiceListen);
VIR_FREE(driver.config->vncListen);
/* some dummy values from 'config file' */
@@ -361,7 +364,7 @@ mymain(void)
if (!driver.lockManager)
return EXIT_FAILURE;
- if (!(mgr = virSecurityManagerNew("none", "qemu", false, false, false)))
+ if (!(mgr = virSecurityManagerNew("none", "qemu", false, false, false, true)))
return EXIT_FAILURE;
if (!(driver.securityManager = virSecurityManagerNewStack(mgr)))
return EXIT_FAILURE;
@@ -486,9 +489,7 @@ mymain(void)
"device_del", QMP_DEVICE_DELETED("scsi0-0-0-5") QMP_OK,
"human-monitor-command", HMP(""));
- virObjectUnref(driver.caps);
- virObjectUnref(driver.xmlopt);
- virObjectUnref(driver.config);
+ qemuTestDriverFree(&driver);
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
index ded04234f..46d4e1ed9 100644
--- a/tests/qemumonitorjsontest.c
+++ b/tests/qemumonitorjsontest.c
@@ -1311,7 +1311,7 @@ testQemuMonitorJSONqemuMonitorJSONGetVirtType(const void *data)
virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data;
qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt);
int ret = -1;
- int virtType;
+ virDomainVirtType virtType;
if (!test)
return -1;
@@ -2238,7 +2238,7 @@ static int
mymain(void)
{
int ret = 0;
- virDomainXMLOptionPtr xmlopt;
+ virQEMUDriver driver;
testQemuMonitorJSONSimpleFuncData simpleFunc;
#if !WITH_YAJL
@@ -2247,29 +2247,30 @@ mymain(void)
#endif
if (virThreadInitialize() < 0 ||
- !(xmlopt = virQEMUDriverCreateXMLConf(NULL)))
+ qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
virEventRegisterDefaultImpl();
-#define DO_TEST(name) \
- if (virtTestRun(# name, testQemuMonitorJSON ## name, xmlopt) < 0) \
+#define DO_TEST(name) \
+ if (virtTestRun(# name, testQemuMonitorJSON ## name, driver.xmlopt) < 0) \
ret = -1
#define DO_TEST_SIMPLE(CMD, FNC, ...) \
simpleFunc = (testQemuMonitorJSONSimpleFuncData) {.cmd = CMD, .func = FNC, \
- .xmlopt = xmlopt, __VA_ARGS__ }; \
+ .xmlopt = driver.xmlopt, __VA_ARGS__ }; \
if (virtTestRun(# FNC, testQemuMonitorJSONSimpleFunc, &simpleFunc) < 0) \
ret = -1
#define DO_TEST_GEN(name, ...) \
- simpleFunc = (testQemuMonitorJSONSimpleFuncData) {.xmlopt = xmlopt, __VA_ARGS__ }; \
- if (virtTestRun(# name, testQemuMonitorJSON ## name, &simpleFunc) < 0) \
+ simpleFunc = (testQemuMonitorJSONSimpleFuncData) {.xmlopt = driver.xmlopt, \
+ __VA_ARGS__ }; \
+ if (virtTestRun(# name, testQemuMonitorJSON ## name, &simpleFunc) < 0) \
ret = -1
#define DO_TEST_CPU_DATA(name) \
do { \
- struct testCPUData data = { name, xmlopt }; \
+ struct testCPUData data = { name, driver.xmlopt }; \
const char *label = "GetCPUData(" name ")"; \
if (virtTestRun(label, testQemuMonitorJSONGetCPUData, &data) < 0) \
ret = -1; \
@@ -2347,7 +2348,7 @@ mymain(void)
DO_TEST_CPU_DATA("host");
DO_TEST_CPU_DATA("full");
- virObjectUnref(xmlopt);
+ qemuTestDriverFree(&driver);
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemumonitortest.c b/tests/qemumonitortest.c
index 12308f9c3..324021a2f 100644
--- a/tests/qemumonitortest.c
+++ b/tests/qemumonitortest.c
@@ -14,6 +14,7 @@
# include "qemu/qemu_monitor.h"
# include "qemu/qemu_monitor_text.h"
# include "qemumonitortestutils.h"
+# include "testutilsqemu.h"
# define VIR_FROM_THIS VIR_FROM_NONE
@@ -164,11 +165,11 @@ testMonitorTextBlockInfo(const void *opaque)
static int
mymain(void)
{
- virDomainXMLOptionPtr xmlopt;
+ virQEMUDriver driver;
int result = 0;
if (virThreadInitialize() < 0 ||
- !(xmlopt = virQEMUDriverCreateXMLConf(NULL)))
+ qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
virEventRegisterDefaultImpl();
@@ -176,7 +177,7 @@ mymain(void)
# define DO_TEST(_name) \
do { \
if (virtTestRun("qemu monitor "#_name, test##_name, \
- xmlopt) < 0) { \
+ driver.xmlopt) < 0) { \
result = -1; \
} \
} while (0)
@@ -185,7 +186,7 @@ mymain(void)
DO_TEST(UnescapeArg);
DO_TEST(MonitorTextBlockInfo);
- virObjectUnref(xmlopt);
+ qemuTestDriverFree(&driver);
return result == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disordered.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disordered.xml
new file mode 100644
index 000000000..ad3160741
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disordered.xml
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>328650</memory>
+ <currentMemory unit='KiB'>328650</currentMemory>
+ <vcpu placement='static'>16</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='network'/>
+ </os>
+ <cpu>
+ <topology sockets='2' cores='4' threads='2'/>
+ <numa>
+ <cell id='0' cpus='0-5' memory='109550' unit='KiB'/>
+ <cell id='2' cpus='6-10' memory='109550' unit='KiB'/>
+ <cell id='1' cpus='11-15' memory='109550' unit='KiB'/>
+ </numa>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-dimm.xml b/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-dimm.xml
index 3f468ecb7..fbcac841c 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-dimm.xml
+++ b/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-dimm.xml
@@ -36,7 +36,7 @@
<memballoon model='virtio'/>
<memory model='dimm'>
<target>
- <size unit='KiB'>524287</size>
+ <size unit='KiB'>523264</size>
<node>0</node>
</target>
</memory>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.args b/tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.args
new file mode 100644
index 000000000..4659a65fd
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.args
@@ -0,0 +1,13 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/kvm -S -M pc -m 14338 -smp 32 \
+-object memory-backend-ram,id=ram-node0,size=20482048,host-nodes=3,\
+policy=preferred \
+-numa node,nodeid=0,cpus=0,memdev=ram-node0 \
+-object memory-backend-ram,id=ram-node1,size=675907584,host-nodes=0-7,\
+policy=bind \
+-numa node,nodeid=1,cpus=1-27,cpus=29,memdev=ram-node1 \
+-object memory-backend-ram,id=ram-node2,size=24578457600,host-nodes=1-2,\
+host-nodes=5,host-nodes=7,policy=bind \
+-numa node,nodeid=2,cpus=28,cpus=30-31,memdev=ram-node2 \
+-nographic -monitor unix:/tmp/test-monitor,server,nowait \
+-no-acpi -boot c -usb -net none -serial none -parallel none -incoming stdio
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.xml b/tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.xml
new file mode 100644
index 000000000..4fbb21076
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-migrate-numa-unaligned.xml
@@ -0,0 +1,33 @@
+<domain type='qemu'>
+ <name>QEMUGuest</name>
+ <uuid>9f4b6512-e73a-4a25-93e8-5307802821ce</uuid>
+ <memory unit='KiB'>14682468</memory>
+ <currentMemory unit='KiB'>14682468</currentMemory>
+ <vcpu placement='static'>32</vcpu>
+ <numatune>
+ <memnode cellid='0' mode='preferred' nodeset='3'/>
+ <memory mode='strict' nodeset='0-7'/>
+ <memnode cellid='2' mode='strict' nodeset='1-2,5-7,^6'/>
+ </numatune>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <cpu>
+ <numa>
+ <cell id='0' cpus='0' memory='20002' unit='KiB'/>
+ <cell id='1' cpus='1-27,29' memory='660066' unit='KiB'/>
+ <cell id='2' cpus='28,30-31' memory='24002400' unit='KiB'/>
+ </numa>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/kvm</emulator>
+ <controller type='usb' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-net-udp.args b/tests/qemuxml2argvdata/qemuxml2argv-net-udp.args
new file mode 100644
index 000000000..daf06c24e
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-net-udp.args
@@ -0,0 +1,7 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/qemu -S -M \
+pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
+-no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 \
+-net nic,macaddr=52:54:00:8c:b9:05,vlan=0,model=rtl8139 \
+-net socket,udp=192.168.10.1:5555,localaddr=192.168.10.1:5556,\
+vlan=0 -serial none -parallel none
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-net-udp.xml b/tests/qemuxml2argvdata/qemuxml2argv-net-udp.xml
new file mode 100644
index 000000000..c19107dba
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-net-udp.xml
@@ -0,0 +1,34 @@
+<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'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='ide' index='0'/>
+ <controller type='usb' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <interface type='udp'>
+ <mac address='52:54:00:8c:b9:05'/>
+ <source address='192.168.10.1' port='5555'>
+ <local address='192.168.10.1' port='5556'/>
+ </source>
+ <model type='rtl8139'/>
+ </interface>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args
index 64df406e1..305e92438 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args
@@ -1,7 +1,7 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test \
QEMU_AUDIO_DRV=none /usr/bin/qemu-system-ppc64 -S -M pseries \
-cpu host,compat=power7 \
--m 214 -smp 4 -nographic -nodefconfig -nodefaults \
+-m 256 -smp 4 -nographic -nodefconfig -nodefaults \
-chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -usb \
-chardev pty,id=charserial0 \
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-restore-v1.args b/tests/qemuxml2argvdata/qemuxml2argv-restore-v1.args
index 5c677027c..458c015d3 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-restore-v1.args
+++ b/tests/qemuxml2argvdata/qemuxml2argv-restore-v1.args
@@ -1,5 +1,5 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
/usr/bin/qemu -S -M \
-pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
+pc -m 213 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait \
-no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel \
none -incoming stdio
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index c2482e612..ae6777931 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -423,6 +423,11 @@ testCompareXMLToArgvHelper(const void *data)
if (virQEMUCapsGet(info->extraFlags, QEMU_CAPS_ENABLE_FIPS))
flags |= FLAG_FIPS;
+ result = qemuTestCapsCacheInsert(driver.qemuCapsCache, info->name,
+ info->extraFlags);
+ if (result < 0)
+ goto cleanup;
+
result = testCompareXMLToArgvFiles(xml, args, info->extraFlags,
info->migrateFrom, info->migrateFd,
flags);
@@ -483,8 +488,7 @@ mymain(void)
return EXIT_FAILURE;
}
- driver.config = virQEMUDriverConfigNew(false);
- if (driver.config == NULL)
+ if (qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
driver.privileged = true;
@@ -499,10 +503,6 @@ mymain(void)
if (VIR_STRDUP_QUIET(driver.config->spiceTLSx509certdir, "/etc/pki/libvirt-spice") < 0)
return EXIT_FAILURE;
- if ((driver.caps = testQemuCapsInit()) == NULL)
- return EXIT_FAILURE;
- if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
- return EXIT_FAILURE;
VIR_FREE(driver.config->stateDir);
if (VIR_STRDUP_QUIET(driver.config->stateDir, "/nowhere") < 0)
return EXIT_FAILURE;
@@ -553,16 +553,19 @@ mymain(void)
FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_ERROR, \
__VA_ARGS__)
+# define DO_TEST_LINUX(name, ...) \
+ DO_TEST_LINUX_FULL(name, NULL, -1, 0, __VA_ARGS__)
+
# ifdef __linux__
/* This is a macro that invokes test only on Linux. It's
* meant to be called in those cases where qemuxml2argvmock
* 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(name, ...) \
- DO_TEST_FULL(name, NULL, -1, 0, __VA_ARGS__)
+# define DO_TEST_LINUX_FULL(name, ...) \
+ DO_TEST_FULL(name, __VA_ARGS__)
# else /* __linux__ */
-# define DO_TEST_LINUX(name, ...) \
+# define DO_TEST_LINUX_FULL(name, ...) \
do { \
const char *tmp ATTRIBUTE_UNUSED = name; \
} while (0)
@@ -1029,6 +1032,7 @@ mymain(void)
DO_TEST("net-client", NONE);
DO_TEST("net-server", NONE);
DO_TEST("net-mcast", NONE);
+ DO_TEST("net-udp", NONE);
DO_TEST("net-hostdev",
QEMU_CAPS_PCIDEVICE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
DO_TEST("net-hostdev-multidomain",
@@ -1270,6 +1274,10 @@ mymain(void)
DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0,
QEMU_CAPS_MIGRATE_QEMU_TCP);
+ DO_TEST_LINUX_FULL("migrate-numa-unaligned", "stdio", 7, 0,
+ QEMU_CAPS_MIGRATE_KVM_STDIO, QEMU_CAPS_NUMA,
+ QEMU_CAPS_OBJECT_MEMORY_RAM);
+
DO_TEST("qemu-ns", NONE);
DO_TEST("smp", QEMU_CAPS_SMP_TOPOLOGY);
@@ -1760,9 +1768,7 @@ mymain(void)
QEMU_CAPS_MACHINE_OPT, QEMU_CAPS_DRIVE, QEMU_CAPS_VIRTIO_SCSI,
QEMU_CAPS_DEVICE, QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390);
- virObjectUnref(driver.config);
- virObjectUnref(driver.caps);
- virObjectUnref(driver.xmlopt);
+ qemuTestDriverFree(&driver);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-numa-disordered.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-numa-disordered.xml
new file mode 100644
index 000000000..0a76f12e2
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-numa-disordered.xml
@@ -0,0 +1,29 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>328650</memory>
+ <currentMemory unit='KiB'>328650</currentMemory>
+ <vcpu placement='static'>16</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='network'/>
+ </os>
+ <cpu>
+ <topology sockets='2' cores='4' threads='2'/>
+ <numa>
+ <cell id='0' cpus='0-5' memory='109550' unit='KiB'/>
+ <cell id='1' cpus='11-15' memory='109550' unit='KiB'/>
+ <cell id='2' cpus='6-10' memory='109550' unit='KiB'/>
+ </numa>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <controller type='usb' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 5c1c2e9b8..eae153c5e 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -180,8 +180,7 @@ testCompareStatusXMLToXMLFiles(const void *opaque)
driver.caps, driver.xmlopt,
VIR_DOMAIN_DEF_PARSE_STATUS |
VIR_DOMAIN_DEF_PARSE_ACTUAL_NET |
- VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES |
- VIR_DOMAIN_DEF_PARSE_CLOCK_ADJUST))) {
+ VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES))) {
fprintf(stderr, "Failed to parse domain status XML:\n%s", source);
goto cleanup;
}
@@ -302,11 +301,11 @@ mymain(void)
int ret = 0;
struct testInfo info;
- if ((driver.caps = testQemuCapsInit()) == NULL)
+ if (qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
- if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
- return EXIT_FAILURE;
+ /* TODO: test with format probing disabled too */
+ driver.config->allowDiskFormatProbing = true;
# define DO_TEST_FULL(name, is_different, when) \
do { \
@@ -608,6 +607,7 @@ mymain(void)
DO_TEST_DIFFERENT("cpu-numa1");
DO_TEST_DIFFERENT("cpu-numa2");
DO_TEST_DIFFERENT("cpu-numa-no-memory-element");
+ DO_TEST_DIFFERENT("cpu-numa-disordered");
DO_TEST("cpu-numa-disjoint");
DO_TEST("cpu-numa-memshared");
@@ -628,9 +628,9 @@ mymain(void)
DO_TEST("memory-hotplug");
DO_TEST("memory-hotplug-nonuma");
DO_TEST("memory-hotplug-dimm");
+ DO_TEST("net-udp");
- virObjectUnref(driver.caps);
- virObjectUnref(driver.xmlopt);
+ qemuTestDriverFree(&driver);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/qemuxmlnstest.c b/tests/qemuxmlnstest.c
index a68e76201..65bf1d30f 100644
--- a/tests/qemuxmlnstest.c
+++ b/tests/qemuxmlnstest.c
@@ -179,6 +179,12 @@ testCompareXMLToArgvHelper(const void *data)
abs_srcdir, info->name) < 0)
goto cleanup;
+ qemuTestCapsName = info->name;
+ result = qemuTestCapsCacheInsert(driver.qemuCapsCache, info->name,
+ info->extraFlags);
+ if (result < 0)
+ goto cleanup;
+
result = testCompareXMLToArgvFiles(xml, args, info->extraFlags,
info->migrateFrom, info->migrateFd,
info->json, info->expectError);
@@ -201,15 +207,12 @@ mymain(void)
if (!abs_top_srcdir)
abs_top_srcdir = abs_srcdir "/..";
- if (!(driver.config = virQEMUDriverConfigNew(false)))
+ if (qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
+
VIR_FREE(driver.config->libDir);
if (VIR_STRDUP_QUIET(driver.config->libDir, "/tmp") < 0)
return EXIT_FAILURE;
- if ((driver.caps = testQemuCapsInit()) == NULL)
- return EXIT_FAILURE;
- if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
- return EXIT_FAILURE;
# define DO_TEST_FULL(name, migrateFrom, migrateFd, expectError, ...) \
do { \
@@ -251,9 +254,7 @@ mymain(void)
DO_TEST("qemu-ns-commandline-ns0", false, NONE);
DO_TEST("qemu-ns-commandline-ns1", false, NONE);
- virObjectUnref(driver.config);
- virObjectUnref(driver.caps);
- virObjectUnref(driver.xmlopt);
+ qemuTestDriverFree(&driver);
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/seclabeltest.c b/tests/seclabeltest.c
index 51765c9ec..93ddcbbdd 100644
--- a/tests/seclabeltest.c
+++ b/tests/seclabeltest.c
@@ -17,7 +17,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
if (virThreadInitialize() < 0)
return EXIT_FAILURE;
- mgr = virSecurityManagerNew(NULL, "QEMU", false, true, false);
+ mgr = virSecurityManagerNew(NULL, "QEMU", false, true, false, false);
if (mgr == NULL) {
fprintf(stderr, "Failed to start security driver");
return EXIT_FAILURE;
diff --git a/tests/securityselinuxlabeltest.c b/tests/securityselinuxlabeltest.c
index 85fad370b..4b8fa6f25 100644
--- a/tests/securityselinuxlabeltest.c
+++ b/tests/securityselinuxlabeltest.c
@@ -46,7 +46,7 @@
VIR_LOG_INIT("tests.securityselinuxlabeltest");
static virCapsPtr caps;
-static virDomainXMLOptionPtr xmlopt;
+static virQEMUDriver driver;
static virSecurityManagerPtr mgr;
@@ -189,7 +189,7 @@ testSELinuxLoadDef(const char *testname)
abs_srcdir, testname) < 0)
goto cleanup;
- if (!(def = virDomainDefParseFile(xmlfile, caps, xmlopt, 0)))
+ if (!(def = virDomainDefParseFile(xmlfile, caps, driver.xmlopt, 0)))
goto cleanup;
for (i = 0; i < def->ndisks; i++) {
@@ -351,7 +351,7 @@ mymain(void)
if (!rc)
return EXIT_AM_SKIP;
- if (!(mgr = virSecurityManagerNew("selinux", "QEMU", false, true, false))) {
+ if (!(mgr = virSecurityManagerNew("selinux", "QEMU", false, true, false, true))) {
virErrorPtr err = virGetLastError();
VIR_TEST_VERBOSE("Unable to initialize security driver: %s\n",
err->message);
@@ -361,7 +361,7 @@ mymain(void)
if ((caps = testQemuCapsInit()) == NULL)
return EXIT_FAILURE;
- if (!(xmlopt = virQEMUDriverCreateXMLConf(NULL)))
+ if (qemuTestDriverInit(&driver) < 0)
return EXIT_FAILURE;
#define DO_TEST_LABELING(name) \
@@ -375,6 +375,8 @@ mymain(void)
DO_TEST_LABELING("chardev");
DO_TEST_LABELING("nfs");
+ qemuTestDriverFree(&driver);
+
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/tests/securityselinuxtest.c b/tests/securityselinuxtest.c
index 38ab70e6a..3a7862f42 100644
--- a/tests/securityselinuxtest.c
+++ b/tests/securityselinuxtest.c
@@ -272,7 +272,7 @@ mymain(void)
int ret = 0;
virSecurityManagerPtr mgr;
- if (!(mgr = virSecurityManagerNew("selinux", "QEMU", false, true, false))) {
+ if (!(mgr = virSecurityManagerNew("selinux", "QEMU", false, true, false, true))) {
virErrorPtr err = virGetLastError();
fprintf(stderr, "Unable to initialize security driver: %s\n",
err->message);
diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c
index a2f429909..2f2be125e 100644
--- a/tests/testutilsqemu.c
+++ b/tests/testutilsqemu.c
@@ -8,6 +8,8 @@
# include "cpu_conf.h"
# include "qemu/qemu_driver.h"
# include "qemu/qemu_domain.h"
+# define __QEMU_CAPSRIV_H_ALLOW__
+# include "qemu/qemu_capspriv.h"
# include "virstring.h"
# define VIR_FROM_THIS VIR_FROM_QEMU
@@ -526,4 +528,75 @@ qemuTestParseCapabilities(const char *capsFile)
xmlXPathFreeContext(ctxt);
return NULL;
}
+
+void qemuTestDriverFree(virQEMUDriver *driver)
+{
+ virMutexDestroy(&driver->lock);
+ virQEMUCapsCacheFree(driver->qemuCapsCache);
+ virObjectUnref(driver->xmlopt);
+ virObjectUnref(driver->caps);
+ virObjectUnref(driver->config);
+}
+
+int qemuTestCapsCacheInsert(virQEMUCapsCachePtr cache, const char *binary,
+ virQEMUCapsPtr caps)
+{
+ int ret;
+
+ if (caps) {
+ /* Our caps were created artificially, so we don't want
+ * virQEMUCapsCacheFree() to attempt to deallocate them */
+ virObjectRef(caps);
+ } else {
+ caps = virQEMUCapsNew();
+ if (!caps)
+ return -ENOMEM;
+ }
+
+ /* We can have repeating names for our test data sets,
+ * so make sure there's no old copy */
+ virHashRemoveEntry(cache->binaries, binary);
+
+ ret = virHashAddEntry(cache->binaries, binary, caps);
+ if (ret < 0)
+ virObjectUnref(caps);
+ else
+ qemuTestCapsName = binary;
+
+ return ret;
+}
+
+int qemuTestDriverInit(virQEMUDriver *driver)
+{
+ if (virMutexInit(&driver->lock) < 0)
+ return -1;
+
+ driver->config = virQEMUDriverConfigNew(false);
+ if (!driver->config)
+ goto error;
+
+ driver->caps = testQemuCapsInit();
+ if (!driver->caps)
+ goto error;
+
+ /* Using /dev/null for libDir and cacheDir automatically produces errors
+ * upon attempt to use any of them */
+ driver->qemuCapsCache = virQEMUCapsCacheNew("/dev/null", "/dev/null", 0, 0);
+ if (!driver->qemuCapsCache)
+ goto error;
+
+ driver->xmlopt = virQEMUDriverCreateXMLConf(driver);
+ if (!driver->xmlopt)
+ goto error;
+
+ if (qemuTestCapsCacheInsert(driver->qemuCapsCache, "empty", NULL) < 0)
+ goto error;
+
+ return 0;
+
+ error:
+ qemuTestDriverFree(driver);
+ return -1;
+}
+
#endif
diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h
index 0ec5dadd2..1d5dfc517 100644
--- a/tests/testutilsqemu.h
+++ b/tests/testutilsqemu.h
@@ -16,4 +16,11 @@ extern virCPUDefPtr cpuHaswell;
void testQemuCapsSetCPU(virCapsPtr caps,
virCPUDefPtr hostCPU);
+int qemuTestDriverInit(virQEMUDriver *driver);
+void qemuTestDriverFree(virQEMUDriver *driver);
+int qemuTestCapsCacheInsert(virQEMUCapsCachePtr cache, const char *binary,
+ virQEMUCapsPtr caps);
+
+/* This variable is actually defined in src/qemu/qemu_capabilities.c */
+extern const char *qemuTestCapsName;
#endif
diff --git a/tests/vircapstest.c b/tests/vircapstest.c
index 3b4165408..acb0c038d 100644
--- a/tests/vircapstest.c
+++ b/tests/vircapstest.c
@@ -223,39 +223,39 @@ test_virCapsDomainDataLookupQEMU(const void *data ATTRIBUTE_UNUSED)
}
/* Checking each parameter individually */
- CAPSCOMP(-1, VIR_ARCH_NONE, -1, NULL, NULL,
+ CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, NULL,
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_X86_64,
VIR_DOMAIN_VIRT_QEMU, "/usr/bin/qemu-system-x86_64", "pc-0.11");
- CAPSCOMP(VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_NONE, -1, NULL, NULL,
+ CAPSCOMP(VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, NULL,
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_X86_64,
VIR_DOMAIN_VIRT_QEMU, "/usr/bin/qemu-system-x86_64", "pc-0.11");
- CAPSCOMP(-1, VIR_ARCH_AARCH64, -1, NULL, NULL,
+ CAPSCOMP(-1, VIR_ARCH_AARCH64, VIR_DOMAIN_VIRT_NONE, NULL, NULL,
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_AARCH64,
VIR_DOMAIN_VIRT_QEMU, "/usr/bin/qemu-system-aarch64", "virt");
CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_KVM, NULL, NULL,
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_X86_64,
VIR_DOMAIN_VIRT_KVM, "/usr/bin/kvm", "pc");
- CAPSCOMP(-1, VIR_ARCH_NONE, -1, "/usr/bin/qemu-system-ppc64", NULL,
+ CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, "/usr/bin/qemu-system-ppc64", NULL,
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_PPC64,
VIR_DOMAIN_VIRT_QEMU, "/usr/bin/qemu-system-ppc64", "pseries");
- CAPSCOMP(-1, VIR_ARCH_NONE, -1, NULL, "s390-virtio",
+ CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, "s390-virtio",
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_S390X,
VIR_DOMAIN_VIRT_QEMU, "/usr/bin/qemu-system-s390x",
"s390-virtio");
- CAPSCOMP(-1, VIR_ARCH_NONE, -1, NULL, "pseries",
+ CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, "pseries",
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_PPC64,
VIR_DOMAIN_VIRT_QEMU, "/usr/bin/qemu-system-ppc64", "pseries");
- CAPSCOMP(-1, VIR_ARCH_PPC64LE, -1, NULL, "pseries",
+ CAPSCOMP(-1, VIR_ARCH_PPC64LE, VIR_DOMAIN_VIRT_NONE, NULL, "pseries",
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_PPC64LE,
VIR_DOMAIN_VIRT_QEMU, "/usr/bin/qemu-system-ppc64", "pseries");
- CAPS_EXPECT_ERR(VIR_DOMAIN_OSTYPE_LINUX, VIR_ARCH_NONE, -1, NULL, NULL);
- CAPS_EXPECT_ERR(-1, VIR_ARCH_PPC64LE, -1, NULL, "pc");
- CAPS_EXPECT_ERR(-1, VIR_ARCH_MIPS, -1, NULL, NULL);
+ CAPS_EXPECT_ERR(VIR_DOMAIN_OSTYPE_LINUX, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, NULL);
+ CAPS_EXPECT_ERR(-1, VIR_ARCH_PPC64LE, VIR_DOMAIN_VIRT_NONE, NULL, "pc");
+ CAPS_EXPECT_ERR(-1, VIR_ARCH_MIPS, VIR_DOMAIN_VIRT_NONE, NULL, NULL);
CAPS_EXPECT_ERR(-1, VIR_ARCH_AARCH64, VIR_DOMAIN_VIRT_KVM,
"/usr/bin/qemu-system-aarch64", NULL);
- CAPS_EXPECT_ERR(-1, VIR_ARCH_NONE, -1,
+ CAPS_EXPECT_ERR(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE,
"/usr/bin/qemu-system-aarch64", "pc");
CAPS_EXPECT_ERR(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_VMWARE, NULL, "pc");
@@ -277,14 +277,14 @@ test_virCapsDomainDataLookupXen(const void *data ATTRIBUTE_UNUSED)
goto out;
}
- CAPSCOMP(-1, VIR_ARCH_NONE, -1, NULL, NULL,
+ CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, NULL,
VIR_DOMAIN_OSTYPE_HVM, VIR_ARCH_I686, VIR_DOMAIN_VIRT_XEN,
"/usr/lib/xen/bin/qemu-dm", "xenfv");
- CAPSCOMP(VIR_DOMAIN_OSTYPE_XEN, VIR_ARCH_NONE, -1, NULL, NULL,
+ CAPSCOMP(VIR_DOMAIN_OSTYPE_XEN, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, NULL,
VIR_DOMAIN_OSTYPE_XEN, VIR_ARCH_I686, VIR_DOMAIN_VIRT_XEN,
"/usr/lib/xen/bin/qemu-dm", "xenpv");
- CAPS_EXPECT_ERR(VIR_DOMAIN_OSTYPE_XEN, VIR_ARCH_NONE, -1, NULL, "xenfv");
+ CAPS_EXPECT_ERR(VIR_DOMAIN_OSTYPE_XEN, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, "xenfv");
ret = 0;
out:
@@ -305,10 +305,10 @@ test_virCapsDomainDataLookupLXC(const void *data ATTRIBUTE_UNUSED)
goto out;
}
- CAPSCOMP(-1, VIR_ARCH_NONE, -1, NULL, NULL,
+ CAPSCOMP(-1, VIR_ARCH_NONE, VIR_DOMAIN_VIRT_NONE, NULL, NULL,
VIR_DOMAIN_OSTYPE_EXE, VIR_ARCH_X86_64,
VIR_DOMAIN_VIRT_LXC, "/usr/libexec/libvirt_lxc", NULL);
- CAPSCOMP(-1, VIR_ARCH_X86_64, -1, NULL, NULL,
+ CAPSCOMP(-1, VIR_ARCH_X86_64, VIR_DOMAIN_VIRT_NONE, NULL, NULL,
VIR_DOMAIN_OSTYPE_EXE, VIR_ARCH_X86_64,
VIR_DOMAIN_VIRT_LXC, "/usr/libexec/libvirt_lxc", NULL);
diff --git a/tests/virhostdevtest.c b/tests/virhostdevtest.c
index 1e93819ce..065b825a5 100644
--- a/tests/virhostdevtest.c
+++ b/tests/virhostdevtest.c
@@ -65,7 +65,7 @@ myCleanup(void)
}
if (mgr) {
- if (mgr->stateDir && !getenv("LIBVIRT_SKIP_CLEANUP"))
+ if (!getenv("LIBVIRT_SKIP_CLEANUP"))
virFileDeleteTree(mgr->stateDir);
virObjectUnref(mgr->activePCIHostdevs);
diff --git a/tests/virnetdaemontest.c b/tests/virnetdaemontest.c
index fb8a6c0c0..24cbd5453 100644
--- a/tests/virnetdaemontest.c
+++ b/tests/virnetdaemontest.c
@@ -125,6 +125,8 @@ testCreateServer(const char *host, int family)
virObjectUnref(cln2);
virObjectUnref(svc1);
virObjectUnref(svc2);
+ virObjectUnref(sk1);
+ virObjectUnref(sk2);
return srv;
error:
diff --git a/tests/virportallocatortest.c b/tests/virportallocatortest.c
index 1125b0aee..58b215599 100644
--- a/tests/virportallocatortest.c
+++ b/tests/virportallocatortest.c
@@ -49,7 +49,7 @@ static void init_syms(void)
realsocket = dlsym(RTLD_NEXT, "socket");
if (!realsocket) {
- VIR_TEST_DEBUG("Unable to find 'socket' symbol\n");
+ fprintf(stderr, "Unable to find 'socket' symbol\n");
abort();
}
diff --git a/tests/virscsitest.c b/tests/virscsitest.c
index a86ca28f4..88286f17b 100644
--- a/tests/virscsitest.c
+++ b/tests/virscsitest.c
@@ -241,7 +241,7 @@ mymain(void)
ret = -1;
cleanup:
- if (tmpdir && getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
+ if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
virFileDeleteTree(tmpdir);
VIR_FREE(virscsi_prefix);
return ret;
diff --git a/tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.vmx b/tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.vmx
new file mode 100644
index 000000000..fb7ea724a
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.vmx
@@ -0,0 +1,6 @@
+config.version = "8"
+virtualHW.version = "4"
+scsi0.present = "true"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "scsi-passthru"
+scsi0:0.fileName = "/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0"
diff --git a/tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.xml b/tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.xml
new file mode 100644
index 000000000..d3b382a42
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-cdrom-scsi-passthru.xml
@@ -0,0 +1,24 @@
+<domain type='vmware'>
+ <uuid>00000000-0000-0000-0000-000000000000</uuid>
+ <memory unit='KiB'>32768</memory>
+ <currentMemory unit='KiB'>32768</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <disk type='block' device='lun'>
+ <source dev='/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0'/>
+ <target dev='sda' bus='scsi'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='scsi' index='0'/>
+ <video>
+ <model type='vmvga' vram='4096'/>
+ </video>
+ </devices>
+</domain>
diff --git a/tests/vmx2xmldata/vmx2xml-datacenterpath.vmx b/tests/vmx2xmldata/vmx2xml-datacenterpath.vmx
new file mode 100644
index 000000000..a8e5db374
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-datacenterpath.vmx
@@ -0,0 +1,2 @@
+config.version = "8"
+virtualHW.version = "4"
diff --git a/tests/vmx2xmldata/vmx2xml-datacenterpath.xml b/tests/vmx2xmldata/vmx2xml-datacenterpath.xml
new file mode 100644
index 000000000..a690c0feb
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-datacenterpath.xml
@@ -0,0 +1,19 @@
+<domain type='vmware' xmlns:vmware='http://libvirt.org/schemas/domain/vmware/1.0'>
+ <uuid>00000000-0000-0000-0000-000000000000</uuid>
+ <memory unit='KiB'>32768</memory>
+ <currentMemory unit='KiB'>32768</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <video>
+ <model type='vmvga' vram='4096'/>
+ </video>
+ </devices>
+ <vmware:datacenterpath>folder1/folder2/datacenter1</vmware:datacenterpath>
+</domain>
diff --git a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.vmx b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.vmx
new file mode 100644
index 000000000..f9da706c4
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.vmx
@@ -0,0 +1,85 @@
+.encoding = "UTF-8"
+config.version = "8"
+virtualHW.version = "8"
+pciBridge0.present = "TRUE"
+pciBridge4.present = "TRUE"
+pciBridge4.virtualDev = "pcieRootPort"
+pciBridge4.functions = "8"
+pciBridge5.present = "TRUE"
+pciBridge5.virtualDev = "pcieRootPort"
+pciBridge5.functions = "8"
+pciBridge6.present = "TRUE"
+pciBridge6.virtualDev = "pcieRootPort"
+pciBridge6.functions = "8"
+pciBridge7.present = "TRUE"
+pciBridge7.virtualDev = "pcieRootPort"
+pciBridge7.functions = "8"
+vmci0.present = "TRUE"
+hpet0.present = "TRUE"
+nvram = "esx-rhel6-mini.nvram"
+virtualHW.productCompatibility = "hosted"
+powerType.powerOff = "soft"
+powerType.powerOn = "hard"
+powerType.suspend = "hard"
+powerType.reset = "soft"
+displayName = "esx-rhel6-mini-with-scsi-device"
+extendedConfigFile = "esx-rhel6-mini.vmxf"
+floppy0.present = "TRUE"
+scsi0.present = "TRUE"
+scsi0.sharedBus = "none"
+scsi0.virtualDev = "pvscsi"
+memsize = "2048"
+scsi0:0.present = "TRUE"
+scsi0:0.fileName = "esx-rhel6-mini.vmdk"
+scsi0:0.deviceType = "scsi-hardDisk"
+ide1:0.present = "TRUE"
+ide1:0.clientDevice = "TRUE"
+ide1:0.deviceType = "cdrom-raw"
+ide1:0.startConnected = "FALSE"
+floppy0.startConnected = "FALSE"
+floppy0.fileName = ""
+floppy0.clientDevice = "TRUE"
+ethernet0.present = "TRUE"
+ethernet0.virtualDev = "vmxnet3"
+ethernet0.networkName = "VM Network"
+ethernet0.addressType = "vpx"
+guestOS = "rhel6-64"
+uuid.location = "56 4d 91 76 62 1f 02 39-f5 ad 3a 00 23 71 95 3b"
+uuid.bios = "56 4d 91 76 62 1f 02 39-f5 ad 3a 00 23 71 95 3b"
+vc.uuid = "52 40 95 33 33 a2 56 c5-36 ce 80 d6 05 f8 ec f4"
+scsi0.pciSlotNumber = "160"
+ethernet0.generatedAddress = "00:50:56:9f:08:51"
+ethernet0.pciSlotNumber = "192"
+svga.vramSize = "8388608"
+vmci0.id = "594646331"
+vmci0.pciSlotNumber = "32"
+tools.syncTime = "FALSE"
+cleanShutdown = "TRUE"
+replay.supported = "FALSE"
+sched.swap.derivedName = "/vmfs/volumes/4f59a359-4cc3fa06-cac0-4437e66df86c/esx-rhel6-mini/esx-rhel6-mini-f62c1180.vswp"
+replay.filename = ""
+scsi0:0.redo = ""
+pciBridge0.pciSlotNumber = "17"
+pciBridge4.pciSlotNumber = "21"
+pciBridge5.pciSlotNumber = "22"
+pciBridge6.pciSlotNumber = "23"
+pciBridge7.pciSlotNumber = "24"
+scsi0.sasWWID = "50 05 05 66 62 1f 02 30"
+ethernet0.generatedAddressOffset = "0"
+hostCPUID.0 = "0000000d756e65476c65746e49656e69"
+hostCPUID.1 = "000206a70010080017bae3f7bfebfbff"
+hostCPUID.80000001 = "00000000000000000000000128100800"
+guestCPUID.0 = "0000000d756e65476c65746e49656e69"
+guestCPUID.1 = "000206a700010800969822030fabfbff"
+guestCPUID.80000001 = "00000000000000000000000128100800"
+userCPUID.0 = "0000000d756e65476c65746e49656e69"
+userCPUID.1 = "000206a700100800169822030fabfbff"
+userCPUID.80000001 = "00000000000000000000000128100800"
+evcCompatibilityMode = "FALSE"
+vmotion.checkpointFBSize = "8388608"
+softPowerOff = "TRUE"
+scsi0:1.present = "TRUE"
+scsi0:1.deviceType = "scsi-passthru"
+scsi0:1.fileName = "/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0"
+scsi0:1.allowGuestConnectionControl = "FALSE"
+scsi0:3.present = "FALSE"
diff --git a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.xml b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.xml
new file mode 100644
index 000000000..5180a99f8
--- /dev/null
+++ b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.xml
@@ -0,0 +1,35 @@
+<domain type='vmware'>
+ <name>esx-rhel6-mini-with-scsi-device</name>
+ <uuid>564d9176-621f-0239-f5ad-3a002371953b</uuid>
+ <memory unit='KiB'>2097152</memory>
+ <currentMemory unit='KiB'>2097152</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <disk type='file' device='disk'>
+ <source file='[datastore] directory/esx-rhel6-mini.vmdk'/>
+ <target dev='sda' bus='scsi'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <disk type='block' device='lun'>
+ <source dev='/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0'/>
+ <target dev='sdb' bus='scsi'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='1'/>
+ </disk>
+ <controller type='scsi' index='0' model='vmpvscsi'/>
+ <interface type='bridge'>
+ <mac address='00:50:56:9f:08:51'/>
+ <source bridge='VM Network'/>
+ <model type='vmxnet3'/>
+ </interface>
+ <video>
+ <model type='vmvga' vram='8192'/>
+ </video>
+ </devices>
+</domain>
diff --git a/tests/vmx2xmltest.c b/tests/vmx2xmltest.c
index d3e33e634..2b14804de 100644
--- a/tests/vmx2xmltest.c
+++ b/tests/vmx2xmltest.c
@@ -201,6 +201,7 @@ mymain(void)
ctx.parseFileName = testParseVMXFileName;
ctx.formatFileName = NULL;
ctx.autodetectSCSIControllerModel = NULL;
+ ctx.datacenterPath = NULL;
DO_TEST("case-insensitive-1", "case-insensitive-1");
DO_TEST("case-insensitive-2", "case-insensitive-2");
@@ -221,6 +222,7 @@ mymain(void)
DO_TEST("cdrom-scsi-device", "cdrom-scsi-device");
DO_TEST("cdrom-scsi-raw-device", "cdrom-scsi-raw-device");
DO_TEST("cdrom-scsi-raw-auto-detect", "cdrom-scsi-raw-auto-detect");
+ DO_TEST("cdrom-scsi-passthru", "cdrom-scsi-passthru");
DO_TEST("cdrom-ide-file", "cdrom-ide-file");
DO_TEST("cdrom-ide-device", "cdrom-ide-device");
DO_TEST("cdrom-ide-raw-device", "cdrom-ide-raw-device");
@@ -261,6 +263,7 @@ mymain(void)
DO_TEST("esx-in-the-wild-4", "esx-in-the-wild-4");
DO_TEST("esx-in-the-wild-5", "esx-in-the-wild-5");
DO_TEST("esx-in-the-wild-6", "esx-in-the-wild-6");
+ DO_TEST("esx-in-the-wild-7", "esx-in-the-wild-7");
DO_TEST("gsx-in-the-wild-1", "gsx-in-the-wild-1");
DO_TEST("gsx-in-the-wild-2", "gsx-in-the-wild-2");
@@ -278,6 +281,10 @@ mymain(void)
DO_TEST("svga", "svga");
+ ctx.datacenterPath = "folder1/folder2/datacenter1";
+
+ DO_TEST("datacenterpath", "datacenterpath");
+
virObjectUnref(caps);
virObjectUnref(xmlopt);
diff --git a/tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.vmx b/tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.vmx
new file mode 100644
index 000000000..be2f089fa
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.vmx
@@ -0,0 +1,14 @@
+.encoding = "UTF-8"
+config.version = "8"
+virtualHW.version = "4"
+guestOS = "other"
+uuid.bios = "56 4d 9b ef ac d9 b4 e0-c8 f0 ae a8 b9 10 35 15"
+displayName = "cdrom-scsi-passthru"
+memsize = "4"
+numvcpus = "1"
+scsi0.present = "true"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "scsi-passthru"
+scsi0:0.fileName = "/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0"
+floppy0.present = "false"
+floppy1.present = "false"
diff --git a/tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.xml b/tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.xml
new file mode 100644
index 000000000..0bf36962a
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-cdrom-scsi-passthru.xml
@@ -0,0 +1,14 @@
+<domain type='vmware'>
+ <name>cdrom-scsi-passthru</name>
+ <uuid>564d9bef-acd9-b4e0-c8f0-aea8b9103515</uuid>
+ <memory unit='KiB'>4096</memory>
+ <os>
+ <type>hvm</type>
+ </os>
+ <devices>
+ <disk type='block' device='lun'>
+ <source dev='/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0'/>
+ <target dev='sda' bus='scsi'/>
+ </disk>
+ </devices>
+</domain>
diff --git a/tests/xml2vmxdata/xml2vmx-datacenterpath.vmx b/tests/xml2vmxdata/xml2vmx-datacenterpath.vmx
new file mode 100644
index 000000000..59bde0342
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-datacenterpath.vmx
@@ -0,0 +1,10 @@
+.encoding = "UTF-8"
+config.version = "8"
+virtualHW.version = "4"
+guestOS = "other"
+uuid.bios = "56 4d 9b ef ac d9 b4 e0-c8 f0 ae a8 b9 10 35 15"
+displayName = "datacenterpath"
+memsize = "4"
+numvcpus = "1"
+floppy0.present = "false"
+floppy1.present = "false"
diff --git a/tests/xml2vmxdata/xml2vmx-datacenterpath.xml b/tests/xml2vmxdata/xml2vmx-datacenterpath.xml
new file mode 100644
index 000000000..048e13d27
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-datacenterpath.xml
@@ -0,0 +1,9 @@
+<domain type='vmware' xmlns:vmware='http://libvirt.org/schemas/domain/vmware/1.0'>
+ <name>datacenterpath</name>
+ <uuid>564d9bef-acd9-b4e0-c8f0-aea8b9103515</uuid>
+ <memory unit='KiB'>4096</memory>
+ <os>
+ <type>hvm</type>
+ </os>
+ <vmware:datacenterpath>folder1/folder2/datacenter1</vmware:datacenterpath>
+</domain>
diff --git a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.vmx b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.vmx
new file mode 100644
index 000000000..2eedd358b
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.vmx
@@ -0,0 +1,25 @@
+.encoding = "UTF-8"
+config.version = "8"
+virtualHW.version = "4"
+guestOS = "other-64"
+uuid.bios = "56 4d 91 76 62 1f 02 39-f5 ad 3a 00 23 71 95 3b"
+displayName = "esx-rhel6-mini-with-scsi-device"
+memsize = "2048"
+numvcpus = "1"
+scsi0.present = "true"
+scsi0.virtualDev = "pvscsi"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "scsi-hardDisk"
+scsi0:0.fileName = "/vmfs/volumes/datastore/directory/esx-rhel6-mini.vmdk"
+scsi0:1.present = "true"
+scsi0:1.deviceType = "scsi-passthru"
+scsi0:1.fileName = "/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0"
+floppy0.present = "false"
+floppy1.present = "false"
+ethernet0.present = "true"
+ethernet0.virtualDev = "vmxnet3"
+ethernet0.networkName = "VM Network"
+ethernet0.connectionType = "bridged"
+ethernet0.addressType = "vpx"
+ethernet0.generatedAddress = "00:50:56:9f:08:51"
+svga.vramSize = "8388608"
diff --git a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.xml b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.xml
new file mode 100644
index 000000000..5180a99f8
--- /dev/null
+++ b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-7.xml
@@ -0,0 +1,35 @@
+<domain type='vmware'>
+ <name>esx-rhel6-mini-with-scsi-device</name>
+ <uuid>564d9176-621f-0239-f5ad-3a002371953b</uuid>
+ <memory unit='KiB'>2097152</memory>
+ <currentMemory unit='KiB'>2097152</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <disk type='file' device='disk'>
+ <source file='[datastore] directory/esx-rhel6-mini.vmdk'/>
+ <target dev='sda' bus='scsi'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <disk type='block' device='lun'>
+ <source dev='/vmfs/devices/cdrom/mpx.vmhba32:C0:T0:L0'/>
+ <target dev='sdb' bus='scsi'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='1'/>
+ </disk>
+ <controller type='scsi' index='0' model='vmpvscsi'/>
+ <interface type='bridge'>
+ <mac address='00:50:56:9f:08:51'/>
+ <source bridge='VM Network'/>
+ <model type='vmxnet3'/>
+ </interface>
+ <video>
+ <model type='vmvga' vram='8192'/>
+ </video>
+ </devices>
+</domain>
diff --git a/tests/xml2vmxtest.c b/tests/xml2vmxtest.c
index 357f1e60d..32bad5fc9 100644
--- a/tests/xml2vmxtest.c
+++ b/tests/xml2vmxtest.c
@@ -221,6 +221,7 @@ mymain(void)
ctx.parseFileName = NULL;
ctx.formatFileName = testFormatVMXFileName;
ctx.autodetectSCSIControllerModel = testAutodetectSCSIControllerModel;
+ ctx.datacenterPath = NULL;
DO_TEST("minimal", "minimal", 4);
DO_TEST("minimal-64bit", "minimal-64bit", 4);
@@ -237,6 +238,7 @@ mymain(void)
DO_TEST("cdrom-scsi-device", "cdrom-scsi-device", 4);
DO_TEST("cdrom-scsi-raw-device", "cdrom-scsi-raw-device", 4);
DO_TEST("cdrom-scsi-raw-auto-detect", "cdrom-scsi-raw-auto-detect", 4);
+ DO_TEST("cdrom-scsi-passthru", "cdrom-scsi-passthru", 4);
DO_TEST("cdrom-ide-file", "cdrom-ide-file", 4);
DO_TEST("cdrom-ide-device", "cdrom-ide-device", 4);
DO_TEST("cdrom-ide-raw-device", "cdrom-ide-raw-device", 4);
@@ -274,6 +276,7 @@ mymain(void)
DO_TEST("esx-in-the-wild-4", "esx-in-the-wild-4", 4);
DO_TEST("esx-in-the-wild-5", "esx-in-the-wild-5", 4);
DO_TEST("esx-in-the-wild-6", "esx-in-the-wild-6", 4);
+ DO_TEST("esx-in-the-wild-7", "esx-in-the-wild-7", 4);
DO_TEST("gsx-in-the-wild-1", "gsx-in-the-wild-1", 4);
DO_TEST("gsx-in-the-wild-2", "gsx-in-the-wild-2", 4);
@@ -291,6 +294,8 @@ mymain(void)
DO_TEST("svga", "svga", 4);
+ DO_TEST("datacenterpath", "datacenterpath", 4);
+
virObjectUnref(caps);
virObjectUnref(xmlopt);