diff --git a/test/Makefile b/test/Makefile index 37330cf8..6777f4af 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,7 +1,10 @@ all: test -test: test_snapshot +test: test_snapshot test_ovf test_snapshot: run_snapshot_tests.pl ./run_snapshot_tests.pl ./test_get_replicatable_volumes.pl + +test_ovf: run_ovf_tests.pl + ./run_ovf_tests.pl diff --git a/test/ovf_manifests/Win10-Liz-disk1.vmdk b/test/ovf_manifests/Win10-Liz-disk1.vmdk new file mode 100644 index 00000000..662354a3 Binary files /dev/null and b/test/ovf_manifests/Win10-Liz-disk1.vmdk differ diff --git a/test/ovf_manifests/Win10-Liz.ovf b/test/ovf_manifests/Win10-Liz.ovf new file mode 100755 index 00000000..46642c04 --- /dev/null +++ b/test/ovf_manifests/Win10-Liz.ovf @@ -0,0 +1,142 @@ + + + + + + + + Virtual disk information + + + + The list of logical networks + + The bridged network + + + + A virtual machine + Win10-Liz + + The kind of installed guest operating system + + + Virtual hardware requirements + + Virtual Hardware Family + 0 + Win10-Liz + vmx-11 + + + hertz * 10^6 + Number of Virtual CPUs + 4 virtual CPU(s) + 1 + 3 + 4 + + + byte * 2^20 + Memory Size + 6144MB of memory + 2 + 4 + 6144 + + + 0 + SATA Controller + sataController0 + 3 + vmware.sata.ahci + 20 + + + 0 + USB Controller (XHCI) + usb3 + 4 + vmware.usb.xhci + 23 + + + 0 + USB Controller (EHCI) + usb + 5 + vmware.usb.ehci + 23 + + + + 0 + SCSI Controller + scsiController0 + 6 + lsilogicsas + 6 + + + true + serial0 + 7 + 21 + + + + 0 + disk0 + ovf:/disk/vmdisk1 + 8 + 6 + 17 + + + 2 + true + bridged + E1000e ethernet adapter on "bridged" + ethernet0 + 9 + E1000e + 10 + + + + false + sound + 10 + vmware.soundcard.hdaudio + 1 + + + false + video + 11 + 24 + + + + false + vmci + 12 + vmware.vmci + 1 + + + 1 + false + cdrom0 + 13 + 3 + 15 + + + + + + + + + \ No newline at end of file diff --git a/test/ovf_manifests/Win_2008_R2_two-disks.ovf b/test/ovf_manifests/Win_2008_R2_two-disks.ovf new file mode 100755 index 00000000..a563aabb --- /dev/null +++ b/test/ovf_manifests/Win_2008_R2_two-disks.ovf @@ -0,0 +1,145 @@ + + + + + + + + + Virtual disk information + + + + + The list of logical networks + + The bridged network + + + + A virtual machine + Win_2008-R2x64 + + The kind of installed guest operating system + + + Virtual hardware requirements + + Virtual Hardware Family + 0 + Win_2008-R2x64 + vmx-11 + + + hertz * 10^6 + Number of Virtual CPUs + 1 virtual CPU(s) + 1 + 3 + 1 + + + byte * 2^20 + Memory Size + 2048MB of memory + 2 + 4 + 2048 + + + 0 + SATA Controller + sataController0 + 3 + vmware.sata.ahci + 20 + + + 0 + USB Controller (EHCI) + usb + 4 + vmware.usb.ehci + 23 + + + + 0 + SCSI Controller + scsiController0 + 5 + lsilogicsas + 6 + + + true + serial0 + 6 + 21 + + + + 0 + disk0 + ovf:/disk/vmdisk1 + 7 + 5 + 17 + + + 1 + disk1 + ovf:/disk/vmdisk2 + 8 + 5 + 17 + + + 2 + true + bridged + E1000 ethernet adapter on "bridged" + ethernet0 + 9 + E1000 + 10 + + + + false + sound + 10 + vmware.soundcard.hdaudio + 1 + + + false + video + 11 + 24 + + + + false + vmci + 12 + vmware.vmci + 1 + + + 1 + false + cdrom0 + 13 + 3 + 15 + + + + + + + + + + diff --git a/test/ovf_manifests/disk1.vmdk b/test/ovf_manifests/disk1.vmdk new file mode 100644 index 00000000..86606023 Binary files /dev/null and b/test/ovf_manifests/disk1.vmdk differ diff --git a/test/ovf_manifests/disk2.vmdk b/test/ovf_manifests/disk2.vmdk new file mode 100644 index 00000000..c4634513 Binary files /dev/null and b/test/ovf_manifests/disk2.vmdk differ diff --git a/test/run_ovf_tests.pl b/test/run_ovf_tests.pl new file mode 100755 index 00000000..b9e48256 --- /dev/null +++ b/test/run_ovf_tests.pl @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use lib qw(..); # prepend .. to @INC so we use the local version of PVE packages + +use FindBin '$Bin'; +use PVE::QemuServer::OVF; +use Test::More; + +use Data::Dumper; + +my $test_manifests = join ('/', $Bin, 'ovf_manifests'); + +my $win2008 = PVE::QemuServer::OVF::parse_ovf("$test_manifests/Win_2008_R2_two-disks.ovf"); +my $win10 = PVE::QemuServer::OVF::parse_ovf("$test_manifests/Win10-Liz.ovf"); + +print "testing disks\n"; + +is($win2008->{disks}->[0]->{disk_address}, 'scsi0', 'multidisk vm has the correct first disk controller'); +is($win2008->{disks}->[0]->{backing_file}, "$test_manifests/disk1.vmdk", 'multidisk vm has the correct first disk backing device'); +is($win2008->{disks}->[0]->{virtual_size}, 2048, 'multidisk vm has the correct first disk size'); + +is($win2008->{disks}->[1]->{disk_address}, 'scsi1', 'multidisk vm has the correct second disk controller'); +is($win2008->{disks}->[1]->{backing_file}, "$test_manifests/disk2.vmdk", 'multidisk vm has the correct second disk backing device'); +is($win2008->{disks}->[1]->{virtual_size}, 2048, 'multidisk vm has the correct second disk size'); + +is($win10->{disks}->[0]->{disk_address}, 'scsi0', 'single disk vm has the correct disk controller'); +is($win10->{disks}->[0]->{backing_file}, "$test_manifests/Win10-Liz-disk1.vmdk", 'single disk vm has the correct disk backing device'); +is($win10->{disks}->[0]->{virtual_size}, 2048, 'single disk vm has the correct size'); + +print "\ntesting vm.conf extraction\n"; + +is($win2008->{qm}->{name}, 'Win2008-R2x64', 'win2008 VM name is correct'); +is($win2008->{qm}->{memory}, '2048', 'win2008 VM memory is correct'); +is($win2008->{qm}->{cores}, '1', 'win2008 VM cores are correct'); + +is($win10->{qm}->{name}, 'Win10-Liz', 'win10 VM name is correct'); +is($win10->{qm}->{memory}, '6144', 'win10 VM memory is correct'); +is($win10->{qm}->{cores}, '4', 'win10 VM cores are correct'); + +done_testing();