[virt-tools-list] [PATCH 2/2 V2] test: Add a test for converting ovf+compressed files.

Cole Robinson crobinso at redhat.com
Fri Mar 4 21:32:54 UTC 2016


On 03/04/2016 02:58 AM, Lin Ma wrote:
> Signed-off-by: Lin Ma <lma at suse.com>
> ---
>  I'm not familiar with how to write a test, If there is anything wrong,
>  Please forgive me and let me know.
> 
>  .../ovf2libvirt_gzip_ovf_directory.libvirt         |  79 ++++++++++++++
>  .../ovf_input/ovf_directory/test_gzip.ovf          | 121 +++++++++++++++++++++
>  .../ovf_directory/test_gzip.ovf-disk1.vmdk.gz      | Bin 0 -> 114 bytes
>  3 files changed, 200 insertions(+)
>  create mode 100644 tests/virtconv-files/libvirt_output/ovf2libvirt_gzip_ovf_directory.libvirt
>  create mode 100644 tests/virtconv-files/ovf_input/ovf_directory/test_gzip.ovf
>  create mode 100644 tests/virtconv-files/ovf_input/ovf_directory/test_gzip.ovf-disk1.vmdk.gz
> 
> diff --git a/tests/virtconv-files/libvirt_output/ovf2libvirt_gzip_ovf_directory.libvirt b/tests/virtconv-files/libvirt_output/ovf2libvirt_gzip_ovf_directory.libvirt
> new file mode 100644
> index 0000000..b74f415
> --- /dev/null
> +++ b/tests/virtconv-files/libvirt_output/ovf2libvirt_gzip_ovf_directory.libvirt
> @@ -0,0 +1,79 @@
> +<domain type='kvm'>
> +  <name>test_gzip.ovf</name>
> +  <uuid>00000000-1111-2222-3333-444444444444</uuid>
> +  <memory unit='KiB'>4194304</memory>
> +  <currentMemory unit='KiB'>4194304</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <resource>
> +    <partition>/machine</partition>
> +  </resource>
> +  <os>
> +    <type arch='x86_64'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <features>
> +    <acpi/>
> +    <apic/>
> +    <vmport state='off'/>
> +  </features>
> +  <cpu mode='custom' match='exact'>
> +    <model fallback='allow'>Haswell-noTSX</model>
> +  </cpu>
> +  <clock offset='utc'>
> +    <timer name='rtc' tickpolicy='catchup'/>
> +    <timer name='pit' tickpolicy='delay'/>
> +    <timer name='hpet' present='no'/>
> +  </clock>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>restart</on_crash>
> +  <pm>
> +    <suspend-to-mem enabled='no'/>
> +    <suspend-to-disk enabled='no'/>
> +  </pm>
> +  <devices>
> +    <emulator>/usr/bin/qemu-kvm</emulator>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/var/lib/libvirt/images/test_gzip.ovf-disk1.vmdk.raw'/>
> +      <backingStore/>
> +      <target dev='sda' bus='scsi'/>
> +      <alias name='scsi0-0-0'/>
> +    </disk>
> +    <controller type="usb" index="0" model="ich9-ehci1"/>
> +    <controller type="usb" index="0" model="ich9-uhci1">
> +      <master startport="0"/>
> +    </controller>
> +    <controller type="usb" index="0" model="ich9-uhci2">
> +      <master startport="2"/>
> +    </controller>
> +    <controller type="usb" index="0" model="ich9-uhci3">
> +      <master startport="4"/>
> +    </controller>
> +    <controller type='scsi' index='0'>
> +      <alias name='scsi0'/>
> +    </controller>
> +    <interface type='network'>
> +      <mac address='52:54:00:a9:14:45'/>
> +      <source network='default' bridge='virbr0'/>
> +      <model type='e1000'/>
> +    </interface>
> +    <input type="mouse" bus="ps2"/>
> +    <graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
> +      <image compression="off"/>
> +    </graphics>
> +    <console type="pty"/>
> +    <channel type="spicevmc">
> +      <target type="virtio" name="com.redhat.spice.0"/>
> +    </channel>
> +    <sound model="ich6"/>
> +    <video>
> +      <model type="qxl"/>
> +    </video>
> +    <redirdev bus='usb' type='spicevmc/'>
> +    <redirdev bus='usb' type='spicevmc'/>
> +  </devices>
> +</domain>
> +
> +
> +Copying test_gzip.ovf-disk1.vmdk to /var/lib/libvirt/images/test_gzip.ovf-disk1.vmdk.raw
> diff --git a/tests/virtconv-files/ovf_input/ovf_directory/test_gzip.ovf b/tests/virtconv-files/ovf_input/ovf_directory/test_gzip.ovf
> new file mode 100644
> index 0000000..a6fdfff
> --- /dev/null
> +++ b/tests/virtconv-files/ovf_input/ovf_directory/test_gzip.ovf
> @@ -0,0 +1,121 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--Generated by VMware ovftool 3.0.1 (build-801290), UTC time: 2015-04-24T07:28:57.485693Z-->
> +<Envelope vmw:buildId="build-801290" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> +  <References>
> +    <File ovf:compression="gzip" ovf:href="test_gzip.ovf-disk1.vmdk.gz" ovf:id="file1" ovf:size="848847459"/>
> +  </References>
> +  <DiskSection>
> +    <Info>Virtual disk information</Info>
> +    <Disk ovf:capacity="20" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="1587937280"/>
> +  </DiskSection>
> +  <NetworkSection>
> +    <Info>The list of logical networks</Info>
> +    <Network ovf:name="bridged">
> +      <Description>The bridged network</Description>
> +    </Network>
> +  </NetworkSection>
> +  <VirtualSystem ovf:id="vm">
> +    <Info>A virtual machine</Info>
> +    <Name>test_gzip.ovf</Name>
> +    <OperatingSystemSection ovf:id="85" ovf:version="11" vmw:osType="sles11_64Guest">
> +      <Info>The kind of installed guest operating system</Info>
> +    </OperatingSystemSection>
> +    <VirtualHardwareSection>
> +      <Info>Virtual hardware requirements</Info>
> +      <System>
> +        <vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
> +        <vssd:InstanceID>0</vssd:InstanceID>
> +        <vssd:VirtualSystemIdentifier>test_gzip.ovf</vssd:VirtualSystemIdentifier>
> +        <vssd:VirtualSystemType>vmx-04</vssd:VirtualSystemType>
> +      </System>
> +      <Item>
> +        <rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
> +        <rasd:Description>Number of Virtual CPUs</rasd:Description>
> +        <rasd:ElementName>1 virtual CPU(s)</rasd:ElementName>
> +        <rasd:InstanceID>1</rasd:InstanceID>
> +        <rasd:ResourceType>3</rasd:ResourceType>
> +        <rasd:VirtualQuantity>1</rasd:VirtualQuantity>
> +      </Item>
> +      <Item>
> +        <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
> +        <rasd:Description>Memory Size</rasd:Description>
> +        <rasd:ElementName>4096MB of memory</rasd:ElementName>
> +        <rasd:InstanceID>2</rasd:InstanceID>
> +        <rasd:ResourceType>4</rasd:ResourceType>
> +        <rasd:VirtualQuantity>4096</rasd:VirtualQuantity>
> +      </Item>
> +      <Item ovf:required="false">
> +        <rasd:Address>0</rasd:Address>
> +        <rasd:Description>USB Controller (EHCI)</rasd:Description>
> +        <rasd:ElementName>usb</rasd:ElementName>
> +        <rasd:InstanceID>3</rasd:InstanceID>
> +        <rasd:ResourceSubType>vmware.usb.ehci</rasd:ResourceSubType>
> +        <rasd:ResourceType>23</rasd:ResourceType>
> +        <vmw:Config ovf:required="false" vmw:key="ehciEnabled" vmw:value="false"/>
> +      </Item>
> +      <Item>
> +        <rasd:Address>0</rasd:Address>
> +        <rasd:Description>SCSI Controller</rasd:Description>
> +        <rasd:ElementName>scsiController0</rasd:ElementName>
> +        <rasd:InstanceID>4</rasd:InstanceID>
> +        <rasd:ResourceSubType>lsilogic</rasd:ResourceSubType>
> +        <rasd:ResourceType>6</rasd:ResourceType>
> +      </Item>
> +      <Item>
> +        <rasd:Address>0</rasd:Address>
> +        <rasd:Description>IDE Controller</rasd:Description>
> +        <rasd:ElementName>ideController0</rasd:ElementName>
> +        <rasd:InstanceID>5</rasd:InstanceID>
> +        <rasd:ResourceType>5</rasd:ResourceType>
> +      </Item>
> +      <Item ovf:required="false">
> +        <rasd:AddressOnParent>0</rasd:AddressOnParent>
> +        <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
> +        <rasd:Description>Floppy Drive</rasd:Description>
> +        <rasd:ElementName>floppy0</rasd:ElementName>
> +        <rasd:InstanceID>6</rasd:InstanceID>
> +        <rasd:ResourceType>14</rasd:ResourceType>
> +      </Item>
> +      <Item ovf:required="false">
> +        <rasd:AddressOnParent>0</rasd:AddressOnParent>
> +        <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
> +        <rasd:ElementName>cdrom1</rasd:ElementName>
> +        <rasd:InstanceID>7</rasd:InstanceID>
> +        <rasd:Parent>5</rasd:Parent>
> +        <rasd:ResourceType>15</rasd:ResourceType>
> +      </Item>
> +      <Item>
> +        <rasd:AddressOnParent>0</rasd:AddressOnParent>
> +        <rasd:ElementName>disk1</rasd:ElementName>
> +        <rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
> +        <rasd:InstanceID>8</rasd:InstanceID>
> +        <rasd:Parent>4</rasd:Parent>
> +        <rasd:ResourceType>17</rasd:ResourceType>
> +      </Item>
> +      <Item>
> +        <rasd:AddressOnParent>2</rasd:AddressOnParent>
> +        <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
> +        <rasd:Connection>bridged</rasd:Connection>
> +        <rasd:Description>E1000 ethernet adapter on "bridged"</rasd:Description>
> +        <rasd:ElementName>ethernet0</rasd:ElementName>
> +        <rasd:InstanceID>9</rasd:InstanceID>
> +        <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
> +        <rasd:ResourceType>10</rasd:ResourceType>
> +      </Item>
> +      <Item ovf:required="false">
> +        <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
> +        <rasd:ElementName>video</rasd:ElementName>
> +        <rasd:InstanceID>10</rasd:InstanceID>
> +        <rasd:ResourceType>24</rasd:ResourceType>
> +      </Item>
> +      <Item ovf:required="false">
> +        <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
> +        <rasd:ElementName>vmci</rasd:ElementName>
> +        <rasd:InstanceID>11</rasd:InstanceID>
> +        <rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType>
> +        <rasd:ResourceType>1</rasd:ResourceType>
> +      </Item>
> +      <vmw:Config ovf:required="false" vmw:key="tools.syncTimeWithHost" vmw:value="true"/>
> +    </VirtualHardwareSection>
> +  </VirtualSystem>
> +</Envelope>
> diff --git a/tests/virtconv-files/ovf_input/ovf_directory/test_gzip.ovf-disk1.vmdk.gz b/tests/virtconv-files/ovf_input/ovf_directory/test_gzip.ovf-disk1.vmdk.gz
> new file mode 100644
> index 0000000000000000000000000000000000000000..21f1dbd7fd81a14ec15de54ab0034bb2ad6ac3e6
> GIT binary patch
> literal 114
> zcmb2|=HO72z8S{CT#{N`5}#g`S)i9+mZqDMS)6UCSC*TS&G7buAtM6=!=VLV{d0Nw
> eI~)=ZG%zx=@kkgX5YO1d&-12BwTr=kfdK%~iy$We
> 
> literal 0
> HcmV?d00001
> 


On my machine this test case errors with:

AssertionError: Conversion outputs did not match.
---
/home/crobinso/src/virt-manager/tests/virtconv-files/libvirt_output/ovf2libvirt_ovf_directory.libvirt
+++ Generated Output
@@ -1,8 +1,8 @@
 <domain type="kvm">
-  <name>CentOS-6.4-i386-Gnome.ovf</name>
+  <name>test_gzip.ovf</name>
   <uuid>00000000-1111-2222-3333-444444444444</uuid>
-  <memory>524288</memory>
-  <currentMemory>524288</currentMemory>
+  <memory>4194304</memory>
+  <currentMemory>4194304</currentMemory>
   <vcpu>1</vcpu>
   <os>
     <type arch="x86_64">hvm</type>
@@ -32,8 +32,8 @@
     <emulator>/usr/bin/qemu-kvm</emulator>
     <disk type="file" device="disk">
       <driver name="qemu"/>
-      <source file="/var/lib/libvirt/images/CentOS-6.4-i386-Gnome-disk1"/>
-      <target dev="hda" bus="ide"/>
+      <source file="/var/lib/libvirt/images/test_gzip.ovf-disk1.vmdk"/>
+      <target dev="sda" bus="scsi"/>
     </disk>
     <controller type="usb" index="0" model="ich9-ehci1"/>
     <controller type="usb" index="0" model="ich9-uhci1">
@@ -68,4 +68,4 @@
 </domain>


-Copying CentOS-6.4-i386-Gnome-disk1.vmdk to
/var/lib/libvirt/images/CentOS-6.4-i386-Gnome-disk1
+Copying test_gzip.ovf-disk1.vmdk.gz to
/var/lib/libvirt/images/test_gzip.ovf-disk1.vmdk


And even after using --regenerate-output, --coverage doesn't report that the
new code is actually tested, so I'm not sure how this is supposed to work.

- Cole




More information about the virt-tools-list mailing list