qemuhotplugtest: Fix mem-leaking testcases

While running qemuhotplugtest, it was found that valgrind pointed out
the following memory leak:

==7906== 5 bytes in 1 blocks are definitely lost in loss record 7 of 121
==7906==    at 0x4A069EE: malloc (vg_replace_malloc.c:270)
==7906==    by 0x3E782A754D: xmlStrndup (in /usr/lib64/libxml2.so.2.7.6)
==7906==    by 0x4CDAE03: virDomainDeviceInfoParseXML.isra.32 (domain_conf.c:3685)
==7906==    by 0x4CE3BB9: virDomainNetDefParseXML (domain_conf.c:6707)
==7906==    by 0x4CFBA08: virDomainDefParseXML (domain_conf.c:12235)
==7906==    by 0x4CFBC1E: virDomainDefParseNode (domain_conf.c:13039)
==7906==    by 0x4CFBD95: virDomainDefParse (domain_conf.c:12981)
==7906==    by 0x41FEB4: testQemuHotplug (qemuhotplugtest.c:66)
==7906==    by 0x420F41: virtTestRun (testutils.c:201)
==7906==    by 0x41F287: mymain (qemuhotplugtest.c:422)
==7906==    by 0x4216BD: virtTestMain (testutils.c:784)
==7906==    by 0x3E6CE1ED1C: (below main) (libc-start.c:226)
...and 10 more.

Problem is, since 20745748 we do both, parse <alias/> elements from
XML files and call qemuAssignDeviceAliases(). While generating runtime
info for domain at runtime is just fine in the test, we can parse just
inactive XML and remove all <alias/>-es from the XML files.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Nehal J Wani 2014-03-19 04:38:12 +05:30 committed by Michal Privoznik
parent eeb1e80e7f
commit 0ab0f7e3b7
4 changed files with 11 additions and 58 deletions

View File

@ -67,7 +67,7 @@ qemuHotplugCreateObjects(virDomainXMLOptionPtr xmlopt,
driver.caps, driver.caps,
driver.xmlopt, driver.xmlopt,
QEMU_EXPECTED_VIRT_TYPES, QEMU_EXPECTED_VIRT_TYPES,
0))) VIR_DOMAIN_XML_INACTIVE)))
goto cleanup; goto cleanup;
priv = (*vm)->privateData; priv = (*vm)->privateData;

View File

@ -1,4 +1,4 @@
<domain type='kvm' id='2'> <domain type='kvm'>
<name>f17</name> <name>f17</name>
<uuid>a1cd52eb-d37f-4717-fc6e-972f0774f4c9</uuid> <uuid>a1cd52eb-d37f-4717-fc6e-972f0774f4c9</uuid>
<memory unit='KiB'>1048576</memory> <memory unit='KiB'>1048576</memory>
@ -30,7 +30,6 @@
<driver name='qemu' type='qcow2' cache='none'/> <driver name='qemu' type='qcow2' cache='none'/>
<source file='/var/lib/libvirt/images/f17.qcow2'/> <source file='/var/lib/libvirt/images/f17.qcow2'/>
<target dev='vda' bus='virtio'/> <target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk> </disk>
<disk type='file' device='cdrom'> <disk type='file' device='cdrom'>
@ -38,22 +37,16 @@
<source file='/home/user/tmp/Fedora-17-x86_64-Live-KDE.iso'/> <source file='/home/user/tmp/Fedora-17-x86_64-Live-KDE.iso'/>
<target dev='hdc' bus='ide'/> <target dev='hdc' bus='ide'/>
<readonly/> <readonly/>
<alias name='ide0-1-0'/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk> </disk>
<controller type='ide' index='0'> <controller type='ide' index='0'>
<alias name='ide0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller> </controller>
<controller type='usb' index='0'> <controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller> </controller>
<controller type='pci' index='0' model='pci-root'> <controller type='pci' index='0' model='pci-root'/>
<alias name='pci.0'/>
</controller>
<controller type='virtio-serial' index='0'> <controller type='virtio-serial' index='0'>
<alias name='virtio-serial0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</controller> </controller>
<interface type='network'> <interface type='network'>
@ -63,62 +56,45 @@
<inbound average='4000' peak='8000' floor='200' burst='1024'/> <inbound average='4000' peak='8000' floor='200' burst='1024'/>
<outbound average='4000' peak='8000' burst='1024'/> <outbound average='4000' peak='8000' burst='1024'/>
</bandwidth> </bandwidth>
<target dev='vnet0'/>
<model type='virtio'/> <model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface> </interface>
<serial type='pty'> <serial type='pty'>
<source path='/dev/pts/22'/>
<target type='isa-serial' port='0'/> <target type='isa-serial' port='0'/>
<alias name='serial0'/>
</serial> </serial>
<serial type='pty'> <serial type='pty'>
<source path='/dev/pts/25'/>
<target port='0'/> <target port='0'/>
<alias name='serial1'/>
</serial> </serial>
<serial type='tcp'> <serial type='tcp'>
<source mode='bind' host='0.0.0.0' service='2445'/> <source mode='bind' host='0.0.0.0' service='2445'/>
<protocol type='raw'/> <protocol type='raw'/>
<target port='1'/> <target port='1'/>
<alias name='serial2'/>
</serial> </serial>
<console type='pty' tty='/dev/pts/22'> <console type='pty'>
<source path='/dev/pts/22'/>
<target type='serial' port='0'/> <target type='serial' port='0'/>
<alias name='serial0'/>
</console> </console>
<console type='pty'> <console type='pty'>
<source path='/dev/pts/26'/>
<target type='virtio' port='1'/> <target type='virtio' port='1'/>
<alias name='console1'/>
</console> </console>
<channel type='unix'> <channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/f17x86_64.agent'/> <source mode='bind' path='/var/lib/libvirt/qemu/f17x86_64.agent'/>
<target type='virtio' name='org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0'/>
<alias name='channel0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/> <address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel> </channel>
<input type='tablet' bus='usb'> <input type='tablet' bus='usb'/>
<alias name='input0'/>
</input>
<input type='mouse' bus='ps2'/> <input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/> <input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/> <listen type='address' address='0.0.0.0'/>
</graphics> </graphics>
<sound model='ich6'> <sound model='ich6'>
<alias name='sound0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound> </sound>
<video> <video>
<model type='cirrus' vram='9216' heads='1'/> <model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video> </video>
<memballoon model='virtio'> <memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon> </memballoon>
</devices> </devices>

View File

@ -1,5 +1,4 @@
<console type='pty'> <console type='pty'>
<source path='/dev/pts/26'/> <source path='/dev/pts/26'/>
<target type='virtio' port='1'/> <target type='virtio' port='1'/>
<alias name='console1'/>
</console> </console>

View File

@ -1,4 +1,4 @@
<domain type='kvm' id='2'> <domain type='kvm'>
<name>f17</name> <name>f17</name>
<uuid>a1cd52eb-d37f-4717-fc6e-972f0774f4c9</uuid> <uuid>a1cd52eb-d37f-4717-fc6e-972f0774f4c9</uuid>
<memory unit='KiB'>1048576</memory> <memory unit='KiB'>1048576</memory>
@ -30,7 +30,6 @@
<driver name='qemu' type='qcow2' cache='none'/> <driver name='qemu' type='qcow2' cache='none'/>
<source file='/var/lib/libvirt/images/f17.qcow2'/> <source file='/var/lib/libvirt/images/f17.qcow2'/>
<target dev='vda' bus='virtio'/> <target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk> </disk>
<disk type='file' device='cdrom'> <disk type='file' device='cdrom'>
@ -38,22 +37,16 @@
<source file='/home/user/tmp/Fedora-17-x86_64-Live-KDE.iso'/> <source file='/home/user/tmp/Fedora-17-x86_64-Live-KDE.iso'/>
<target dev='hdc' bus='ide'/> <target dev='hdc' bus='ide'/>
<readonly/> <readonly/>
<alias name='ide0-1-0'/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk> </disk>
<controller type='ide' index='0'> <controller type='ide' index='0'>
<alias name='ide0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller> </controller>
<controller type='usb' index='0'> <controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller> </controller>
<controller type='pci' index='0' model='pci-root'> <controller type='pci' index='0' model='pci-root'/>
<alias name='pci.0'/>
</controller>
<controller type='virtio-serial' index='0'> <controller type='virtio-serial' index='0'>
<alias name='virtio-serial0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</controller> </controller>
<interface type='network'> <interface type='network'>
@ -63,57 +56,42 @@
<inbound average='4000' peak='8000' floor='200' burst='1024'/> <inbound average='4000' peak='8000' floor='200' burst='1024'/>
<outbound average='4000' peak='8000' burst='1024'/> <outbound average='4000' peak='8000' burst='1024'/>
</bandwidth> </bandwidth>
<target dev='vnet0'/>
<model type='virtio'/> <model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface> </interface>
<serial type='pty'> <serial type='pty'>
<source path='/dev/pts/22'/>
<target type='isa-serial' port='0'/> <target type='isa-serial' port='0'/>
<alias name='serial0'/>
</serial> </serial>
<serial type='pty'> <serial type='pty'>
<source path='/dev/pts/25'/>
<target port='0'/> <target port='0'/>
<alias name='serial1'/>
</serial> </serial>
<serial type='tcp'> <serial type='tcp'>
<source mode='bind' host='0.0.0.0' service='2445'/> <source mode='bind' host='0.0.0.0' service='2445'/>
<protocol type='raw'/> <protocol type='raw'/>
<target port='1'/> <target port='1'/>
<alias name='serial2'/>
</serial> </serial>
<console type='pty' tty='/dev/pts/22'> <console type='pty'>
<source path='/dev/pts/22'/>
<target type='serial' port='0'/> <target type='serial' port='0'/>
<alias name='serial0'/>
</console> </console>
<channel type='unix'> <channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/f17x86_64.agent'/> <source mode='bind' path='/var/lib/libvirt/qemu/f17x86_64.agent'/>
<target type='virtio' name='org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0'/>
<alias name='channel0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/> <address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel> </channel>
<input type='tablet' bus='usb'> <input type='tablet' bus='usb'/>
<alias name='input0'/>
</input>
<input type='mouse' bus='ps2'/> <input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/> <input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/> <listen type='address' address='0.0.0.0'/>
</graphics> </graphics>
<sound model='ich6'> <sound model='ich6'>
<alias name='sound0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound> </sound>
<video> <video>
<model type='cirrus' vram='9216' heads='1'/> <model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video> </video>
<memballoon model='virtio'> <memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon> </memballoon>
</devices> </devices>