diff options
author | Guido Günther <agx@sigxcpu.org> | 2015-10-14 09:45:42 -0400 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2015-10-14 09:45:42 -0400 |
commit | a4989de47670012933ab6a4119796d7469a90bfb (patch) | |
tree | c1409ee9adb90f6f0423aebb2062bde4492c8661 /tests | |
parent | 8264435ca2485b14f0d9c459c075abbcc1defb43 (diff) |
New upstream version 1.2.20
Diffstat (limited to 'tests')
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); |