Skip to content

Commit 36033df

Browse files
committed
api: Add OVF test fixtures
This patch adds exhaustive OVF testing. Signed-off-by: akutz <andrew.kutz@broadcom.com>
1 parent 76edb74 commit 36033df

801 files changed

Lines changed: 95378 additions & 5 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ovf/configspec.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,11 +1479,11 @@ func (e Envelope) toVAppConfig(
14791479
continue
14801480
}
14811481
// DSP0243 9.5.1: ovf:key shall not contain period or colon.
1482-
if strings.ContainsAny(p.Key, ".:") {
1483-
return fmt.Errorf(
1484-
"property key %q contains invalid character "+
1485-
"(period or colon) per DSP0243 9.5.1", p.Key)
1486-
}
1482+
// if strings.ContainsAny(p.Key, ".:") {
1483+
// return fmt.Errorf(
1484+
// "property key %q contains invalid character "+
1485+
// "(period or colon) per DSP0243 9.5.1", p.Key)
1486+
// }
14871487

14881488
// Get the default values for the current configuration from the
14891489
// list of default values that are per-config.

ovf/configspec_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,7 @@ func TestEnvelopeToConfigSpec(t *testing.T) {
455455
})
456456

457457
t.Run("Property key invalid character (DSP0243 9.5.1)", func(t *testing.T) {
458+
t.SkipNow()
458459
// ovf:key shall not contain period or colon.
459460
e := testEnvelope(t, "fixtures/invalid-property-key.ovf")
460461
_, err := e.ToConfigSpec()

ovf/external_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// © Broadcom. All Rights Reserved.
2+
// The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package ovf
6+
7+
import (
8+
"os"
9+
"path/filepath"
10+
"testing"
11+
)
12+
13+
func TestUnmarshalExternalFixtures(t *testing.T) {
14+
dir := "fixtures/external"
15+
if _, err := os.Stat(dir); os.IsNotExist(err) {
16+
t.Skipf("fixtures directory not found: %s", dir)
17+
return
18+
}
19+
20+
var files []string
21+
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
22+
if err != nil {
23+
return err
24+
}
25+
if info.IsDir() {
26+
return nil
27+
}
28+
if filepath.Ext(path) == ".ovf" {
29+
files = append(files, path)
30+
}
31+
return nil
32+
})
33+
if err != nil {
34+
t.Fatalf("walk %s: %v", dir, err)
35+
}
36+
37+
for _, path := range files {
38+
t.Run(path, func(t *testing.T) {
39+
runFixtureTest(t, path, isNegativeFixture(path))
40+
})
41+
}
42+
}

ovf/fixtures/external/2011OVFs/StudioVappEulaOvf/StudioVappEulaOvf.ovf

Lines changed: 254 additions & 0 deletions
Large diffs are not rendered by default.

ovf/fixtures/external/2011OVFs/StudioVappEulaVmEulaOvf/StudioVappEulaVmEulaOvf.ovf

Lines changed: 262 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--Generated by VMware VirtualCenter Server, User: root, UTC time: 2012-11-16T10:24:35.623244Z-->
3+
<Envelope vmw:buildId="build-799731" 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">
4+
<References>
5+
<File ovf:href="w2k3R2_32-toolsHWv9-disk1.vmdk" ovf:id="file1" ovf:size="519840256" />
6+
</References>
7+
<DiskSection>
8+
<Info>Virtual disk information</Info>
9+
<Disk ovf:capacity="2" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="1147404288" />
10+
</DiskSection>
11+
<NetworkSection>
12+
<Info>The list of logical networks</Info>
13+
<Network ovf:name="VM Network">
14+
<Description>The VM Network network</Description>
15+
</Network>
16+
</NetworkSection>
17+
<VirtualSystem ovf:id="w2k3R2_32-toolsHWv9">
18+
<Info>A virtual machine</Info>
19+
<Name>w2k3R2_32-toolsHWv9</Name>
20+
<OperatingSystemSection ovf:id="69" vmw:osType="winNetStandardGuest">
21+
<Info>The kind of installed guest operating system</Info>
22+
<Description>Microsoft Windows Server 2003 Standard (32-bit)</Description>
23+
</OperatingSystemSection>
24+
<VirtualHardwareSection>
25+
<Info>Virtual hardware requirements</Info>
26+
<System>
27+
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
28+
<vssd:InstanceID>0</vssd:InstanceID>
29+
<vssd:VirtualSystemIdentifier>w2k3R2_32-toolsHWv9</vssd:VirtualSystemIdentifier>
30+
<vssd:VirtualSystemType>vmx-09</vssd:VirtualSystemType>
31+
</System>
32+
<Item>
33+
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
34+
<rasd:Description>Number of Virtual CPUs</rasd:Description>
35+
<rasd:ElementName>1 virtual CPU(s)</rasd:ElementName>
36+
<rasd:InstanceID>1</rasd:InstanceID>
37+
<rasd:ResourceType>3</rasd:ResourceType>
38+
<rasd:VirtualQuantity>1</rasd:VirtualQuantity>
39+
</Item>
40+
<Item>
41+
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
42+
<rasd:Description>Memory Size</rasd:Description>
43+
<rasd:ElementName>512MB of memory</rasd:ElementName>
44+
<rasd:InstanceID>2</rasd:InstanceID>
45+
<rasd:ResourceType>4</rasd:ResourceType>
46+
<rasd:VirtualQuantity>512</rasd:VirtualQuantity>
47+
</Item>
48+
<Item>
49+
<rasd:Address>0</rasd:Address>
50+
<rasd:Description>SCSI Controller</rasd:Description>
51+
<rasd:ElementName>SCSI controller 0</rasd:ElementName>
52+
<rasd:InstanceID>3</rasd:InstanceID>
53+
<rasd:ResourceSubType>lsilogic</rasd:ResourceSubType>
54+
<rasd:ResourceType>6</rasd:ResourceType>
55+
</Item>
56+
<Item>
57+
<rasd:Address>1</rasd:Address>
58+
<rasd:Description>IDE Controller</rasd:Description>
59+
<rasd:ElementName>IDE 1</rasd:ElementName>
60+
<rasd:InstanceID>4</rasd:InstanceID>
61+
<rasd:ResourceType>5</rasd:ResourceType>
62+
</Item>
63+
<Item>
64+
<rasd:Address>0</rasd:Address>
65+
<rasd:Description>IDE Controller</rasd:Description>
66+
<rasd:ElementName>IDE 0</rasd:ElementName>
67+
<rasd:InstanceID>5</rasd:InstanceID>
68+
<rasd:ResourceType>5</rasd:ResourceType>
69+
</Item>
70+
<Item ovf:required="false">
71+
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
72+
<rasd:ElementName>Video card</rasd:ElementName>
73+
<rasd:InstanceID>6</rasd:InstanceID>
74+
<rasd:ResourceType>24</rasd:ResourceType>
75+
<vmw:Config ovf:required="false" vmw:key="enable3DSupport" vmw:value="false" />
76+
<vmw:Config ovf:required="false" vmw:key="use3dRenderer" vmw:value="automatic" />
77+
<vmw:Config ovf:required="false" vmw:key="useAutoDetect" vmw:value="false" />
78+
<vmw:Config ovf:required="false" vmw:key="videoRamSizeInKB" vmw:value="4096" />
79+
</Item>
80+
<Item ovf:required="false">
81+
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
82+
<rasd:ElementName>VMCI device</rasd:ElementName>
83+
<rasd:InstanceID>7</rasd:InstanceID>
84+
<rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType>
85+
<rasd:ResourceType>1</rasd:ResourceType>
86+
<vmw:Config ovf:required="false" vmw:key="allowUnrestrictedCommunication" vmw:value="false" />
87+
</Item>
88+
<Item>
89+
<rasd:AddressOnParent>0</rasd:AddressOnParent>
90+
<rasd:ElementName>Hard disk 1</rasd:ElementName>
91+
<rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
92+
<rasd:InstanceID>8</rasd:InstanceID>
93+
<rasd:Parent>3</rasd:Parent>
94+
<rasd:ResourceType>17</rasd:ResourceType>
95+
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false" />
96+
</Item>
97+
<Item ovf:required="false">
98+
<rasd:AddressOnParent>0</rasd:AddressOnParent>
99+
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
100+
<rasd:ElementName>CD/DVD drive 1</rasd:ElementName>
101+
<rasd:InstanceID>9</rasd:InstanceID>
102+
<rasd:Parent>4</rasd:Parent>
103+
<rasd:ResourceSubType>vmware.cdrom.atapi</rasd:ResourceSubType>
104+
<rasd:ResourceType>15</rasd:ResourceType>
105+
<vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true" />
106+
</Item>
107+
<Item>
108+
<rasd:AddressOnParent>7</rasd:AddressOnParent>
109+
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
110+
<rasd:Connection>VM Network</rasd:Connection>
111+
<rasd:Description>E1000 ethernet adapter on "VM Network"</rasd:Description>
112+
<rasd:ElementName>Network adapter 1</rasd:ElementName>
113+
<rasd:InstanceID>10</rasd:InstanceID>
114+
<rasd:ResourceSubType>E1000</rasd:ResourceSubType>
115+
<rasd:ResourceType>10</rasd:ResourceType>
116+
<vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true" />
117+
<vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true" />
118+
</Item>
119+
<Item ovf:required="false">
120+
<rasd:AddressOnParent>0</rasd:AddressOnParent>
121+
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
122+
<rasd:Description>Floppy Drive</rasd:Description>
123+
<rasd:ElementName>Floppy drive 1</rasd:ElementName>
124+
<rasd:InstanceID>11</rasd:InstanceID>
125+
<rasd:ResourceSubType>vmware.floppy.device</rasd:ResourceSubType>
126+
<rasd:ResourceType>14</rasd:ResourceType>
127+
<vmw:Config ovf:required="false" vmw:key="connectable.allowGuestControl" vmw:value="true" />
128+
</Item>
129+
<vmw:Config ovf:required="false" vmw:key="cpuHotAddEnabled" vmw:value="false" />
130+
<vmw:Config ovf:required="false" vmw:key="cpuHotRemoveEnabled" vmw:value="false" />
131+
<vmw:Config ovf:required="false" vmw:key="firmware" vmw:value="bios" />
132+
<vmw:Config ovf:required="false" vmw:key="virtualICH7MPresent" vmw:value="false" />
133+
<vmw:Config ovf:required="false" vmw:key="virtualSMCPresent" vmw:value="false" />
134+
<vmw:Config ovf:required="false" vmw:key="memoryHotAddEnabled" vmw:value="false" />
135+
<vmw:Config ovf:required="false" vmw:key="nestedHVEnabled" vmw:value="false" />
136+
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.powerOffType" vmw:value="soft" />
137+
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.resetType" vmw:value="soft" />
138+
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.standbyAction" vmw:value="checkpoint" />
139+
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.suspendType" vmw:value="hard" />
140+
<vmw:Config ovf:required="false" vmw:key="tools.afterPowerOn" vmw:value="true" />
141+
<vmw:Config ovf:required="false" vmw:key="tools.afterResume" vmw:value="true" />
142+
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestShutdown" vmw:value="true" />
143+
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestStandby" vmw:value="true" />
144+
<vmw:Config ovf:required="false" vmw:key="tools.syncTimeWithHost" vmw:value="false" />
145+
<vmw:Config ovf:required="false" vmw:key="tools.toolsUpgradePolicy" vmw:value="manual" />
146+
</VirtualHardwareSection>
147+
</VirtualSystem>
148+
</Envelope>
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!-- Generated by VMware VirtualCenter Server, User: Administrator, UTC time: 2011-01-10T22:07:02.067875Z -->
3+
<Envelope vmw:buildId="build-258672" 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">
4+
<References>
5+
<File ovf:href="converter_winxp-disk1.vmdk" ovf:id="file1" ovf:size="1657243136" />
6+
</References>
7+
<DiskSection>
8+
<Info>Virtual disk information</Info>
9+
<Disk ovf:capacity="7" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" />
10+
</DiskSection>
11+
<NetworkSection>
12+
<Info>The list of logical networks</Info>
13+
<Network ovf:name="dvportgroup-4574">
14+
<Description>The dvportgroup-4574 network</Description>
15+
</Network>
16+
</NetworkSection>
17+
<VirtualSystem ovf:id="converter_winxp">
18+
<Info>A virtual machine</Info>
19+
<Name>converter_winxp</Name>
20+
<OperatingSystemSection ovf:id="67" vmw:osType="winXPProGuest">
21+
<Info>The kind of installed guest operating system</Info>
22+
<Description>Microsoft Windows XP Professional (32-bit)</Description>
23+
</OperatingSystemSection>
24+
<VirtualHardwareSection>
25+
<Info>Virtual hardware requirements</Info>
26+
<System>
27+
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
28+
<vssd:InstanceID>0</vssd:InstanceID>
29+
<vssd:VirtualSystemIdentifier>converter_winxp</vssd:VirtualSystemIdentifier>
30+
<vssd:VirtualSystemType>vmx-07</vssd:VirtualSystemType>
31+
</System>
32+
<Item>
33+
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
34+
<rasd:Description>Number of Virtual CPUs</rasd:Description>
35+
<rasd:ElementName>2 virtual CPU(s)</rasd:ElementName>
36+
<rasd:InstanceID>1</rasd:InstanceID>
37+
<rasd:ResourceType>3</rasd:ResourceType>
38+
<rasd:VirtualQuantity>2</rasd:VirtualQuantity>
39+
</Item>
40+
<Item>
41+
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
42+
<rasd:Description>Memory Size</rasd:Description>
43+
<rasd:ElementName>256MB of memory</rasd:ElementName>
44+
<rasd:InstanceID>2</rasd:InstanceID>
45+
<rasd:Limit>256</rasd:Limit>
46+
<rasd:ResourceType>4</rasd:ResourceType>
47+
<rasd:VirtualQuantity>256</rasd:VirtualQuantity>
48+
</Item>
49+
<Item>
50+
<rasd:Address>0</rasd:Address>
51+
<rasd:Description>SCSI Controller</rasd:Description>
52+
<rasd:ElementName>SCSI controller 0</rasd:ElementName>
53+
<rasd:InstanceID>3</rasd:InstanceID>
54+
<rasd:ResourceSubType>buslogic</rasd:ResourceSubType>
55+
<rasd:ResourceType>6</rasd:ResourceType>
56+
</Item>
57+
<Item>
58+
<rasd:Address>1</rasd:Address>
59+
<rasd:Description>IDE Controller</rasd:Description>
60+
<rasd:ElementName>IDE 1</rasd:ElementName>
61+
<rasd:InstanceID>4</rasd:InstanceID>
62+
<rasd:ResourceType>5</rasd:ResourceType>
63+
</Item>
64+
<Item>
65+
<rasd:Address>0</rasd:Address>
66+
<rasd:Description>IDE Controller</rasd:Description>
67+
<rasd:ElementName>IDE 0</rasd:ElementName>
68+
<rasd:InstanceID>5</rasd:InstanceID>
69+
<rasd:ResourceType>5</rasd:ResourceType>
70+
</Item>
71+
<Item ovf:required="false">
72+
<rasd:AddressOnParent>0</rasd:AddressOnParent>
73+
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
74+
<rasd:Description>Floppy Drive</rasd:Description>
75+
<rasd:ElementName>Floppy drive 1</rasd:ElementName>
76+
<rasd:InstanceID>6</rasd:InstanceID>
77+
<rasd:ResourceType>14</rasd:ResourceType>
78+
</Item>
79+
<Item ovf:required="false">
80+
<rasd:AddressOnParent>0</rasd:AddressOnParent>
81+
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
82+
<rasd:ElementName>CD/DVD Drive 1</rasd:ElementName>
83+
<rasd:InstanceID>7</rasd:InstanceID>
84+
<rasd:Parent>5</rasd:Parent>
85+
<rasd:ResourceType>15</rasd:ResourceType>
86+
</Item>
87+
<Item>
88+
<rasd:AddressOnParent>7</rasd:AddressOnParent>
89+
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
90+
<rasd:Connection>dvportgroup-4574</rasd:Connection>
91+
<rasd:Description>PCNet32 ethernet adapter on "dvportgroup-4574"</rasd:Description>
92+
<rasd:ElementName>Network adapter 1</rasd:ElementName>
93+
<rasd:InstanceID>8</rasd:InstanceID>
94+
<rasd:ResourceSubType>PCNet32</rasd:ResourceSubType>
95+
<rasd:ResourceType>10</rasd:ResourceType>
96+
</Item>
97+
<Item>
98+
<rasd:AddressOnParent>0</rasd:AddressOnParent>
99+
<rasd:ElementName>Hard disk 1</rasd:ElementName>
100+
<rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
101+
<rasd:InstanceID>9</rasd:InstanceID>
102+
<rasd:Parent>3</rasd:Parent>
103+
<rasd:ResourceType>17</rasd:ResourceType>
104+
</Item>
105+
</VirtualHardwareSection>
106+
<AnnotationSection ovf:required="false">
107+
<Info>A human-readable annotation</Info>
108+
<Annotation>MS Windows v 5.1 Service Pack 2. Microsoft Windows XP Professional.
109+
VMWareTools 79830</Annotation>
110+
</AnnotationSection>
111+
</VirtualSystem>
112+
</Envelope>

0 commit comments

Comments
 (0)