Maor Lipchuk has uploaded a new change for review. Change subject: core: Add test for import unregistered VM ......................................................................
core: Add test for import unregistered VM Adding a test for ImportVmTemplateFromConfigurationCommand to test import process of unregistered VM Template. Change-Id: I22337555906ea24201137ed4d4600fc4c7ff7478 Signed-off-by: Maor Lipchuk <[email protected]> --- A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmTemplateFromConfigurationCommandTest.java 1 file changed, 144 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/29999/1 diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmTemplateFromConfigurationCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmTemplateFromConfigurationCommandTest.java new file mode 100644 index 0000000..bd04a51 --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmTemplateFromConfigurationCommandTest.java @@ -0,0 +1,144 @@ +package org.ovirt.engine.core.bll; + +import static org.junit.Assert.assertFalse; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; +import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.ovirt.engine.core.common.action.ImportVmTemplateParameters; +import org.ovirt.engine.core.common.businessentities.DisplayType; +import org.ovirt.engine.core.common.businessentities.OvfEntityData; +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VmEntityType; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.osinfo.OsRepository; +import org.ovirt.engine.core.common.utils.SimpleDependecyInjector; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.core.dao.UnregisteredOVFDataDAO; +import org.ovirt.engine.core.utils.MockConfigRule; +import org.ovirt.engine.core.utils.RandomUtilsSeedingRule; + +@RunWith(MockitoJUnitRunner.class) +public class ImportVmTemplateFromConfigurationCommandTest { + Guid vmTemplateId = Guid.newGuid(); + Guid storageDomainId = Guid.newGuid(); + Guid storagePoolId = Guid.newGuid(); + Guid clusterId = Guid.newGuid(); + VDSGroup vdsGroup; + + ImportVmTemplateFromConfigurationCommand<ImportVmTemplateParameters> cmd; + + @ClassRule + public static MockConfigRule mcr = new MockConfigRule( + mockConfig(ConfigValues.VirtIoScsiEnabled, Version.v3_2.toString(), false) + ); + + @Rule + public RandomUtilsSeedingRule rusr = new RandomUtilsSeedingRule(); + + @Mock + OsRepository osRepository; + + @Mock + UnregisteredOVFDataDAO unregisteredOVFDataDao; + + @Before + public void setUp() { + // init the injector with the osRepository instance + SimpleDependecyInjector.getInstance().bind(OsRepository.class, osRepository); + + final int osId = 0; + + Map<Integer, Map<Version, List<DisplayType>>> displayTypeMap = new HashMap<>(); + displayTypeMap.put(osId, new HashMap<Version, List<DisplayType>>()); + displayTypeMap.get(osId).put(null, Arrays.asList(DisplayType.qxl)); + when(osRepository.getDisplayTypes()).thenReturn(displayTypeMap); + setupTest(); + } + + @Test + public void testImportVMFromConfigurationWhenVMTemplateDoesNotExists() { + initCommand(null); + assertFalse(cmd.canDoAction()); + Assert.assertTrue(cmd.getReturnValue() + .getCanDoActionMessages() + .contains(VdcBllMessages.ACTION_TYPE_FAILED_UNSUPPORTED_OVF.toString())); + } + + + @Test + public void testImportVMFromConfigurationXMLCouldNotGetParsed() { + OvfEntityData ovfEntity = getOvfEntityData(); + ovfEntity.setOvfData("This is not a valid XML"); + initCommand(ovfEntity); + when(unregisteredOVFDataDao.getByEntityIdAndStorageDomain(vmTemplateId, storageDomainId)).thenReturn(ovfEntity); + assertFalse(cmd.canDoAction()); + Assert.assertTrue(cmd.getReturnValue() + .getCanDoActionMessages() + .contains(VdcBllMessages.ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED.toString())); + } + + protected ImportVmTemplateParameters createParametersWhenImagesExistOnTargetStorageDomain() { + ImportVmTemplateParameters params = new ImportVmTemplateParameters(); + params.setContainerId(vmTemplateId); + params.setStorageDomainId(storageDomainId); + params.setVdsGroupId(clusterId); + params.setImagesExistOnTargetStorageDomain(true); + return params; + } + + private void initCommand(OvfEntityData resultOvfEntityData) { + ImportVmTemplateParameters parameters = createParametersWhenImagesExistOnTargetStorageDomain(); + when(unregisteredOVFDataDao.getByEntityIdAndStorageDomain(vmTemplateId, storageDomainId)).thenReturn(resultOvfEntityData); + cmd = spy(new ImportVmTemplateFromConfigurationCommand<ImportVmTemplateParameters>(parameters) { + // Overridden here and not during spying, since it's called in the constructor + @SuppressWarnings("synthetic-access") + @Override + protected UnregisteredOVFDataDAO getUnregisteredOVFDataDao() { + return unregisteredOVFDataDao; + } + + public VDSGroup getVdsGroup() { + return vdsGroup; + } + }); + } + + private OvfEntityData getOvfEntityData() { + OvfEntityData ovfEntity = new OvfEntityData(); + ovfEntity.setEntityId(vmTemplateId); + ovfEntity.setEntityType(VmEntityType.TEMPLATE); + ovfEntity.setEntityName("Some VM Template"); + ovfEntity.setOvfData(getVmTemplateOvfDataXmlString()); + return ovfEntity; + } + + private void setVdsGroup() { + vdsGroup = new VDSGroup(); + vdsGroup.setId(clusterId); + vdsGroup.setStoragePoolId(storagePoolId); + } + + private String getVmTemplateOvfDataXmlString() { + return "<?xml version='1.0' encoding='UTF-8'?><ovf:Envelope xmlns:ovf=\"http://schemas.dmtf.org/ovf/envelope/1/\" xmlns:rasd=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData\" xmlns:vssd=\"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ovf:version=\"3.5.0.0\"><References><File ovf:href=\"1107554f-ce13-44c0-bcf5-8a6f8837bc6c/3bb151be-7503-4511-820d-68eb52409c1d\" ovf:id=\"3bb151be-7503-4511-820d-68eb52409c1d\" ovf:size=\"1073741824\" ovf:description=\"Active VM\"/></References><Section xsi:type=\"ovf:NetworkSection_Type\"><Info>List of networks</Info><Network ovf:name=\"Network 1\"/></Section><Section xsi:type=\"ovf:DiskSection_Type\"><Info>List of Virtual Disks</Info><Disk ovf:diskId=\"3bb151be-7503-4511-820d-68eb52409c1d\" ovf:size=\"1\" ovf:actual_size=\"0\" ovf:vm_snapshot_id=\"e80cbc53-233d-4748-95bf-2499b34afda6\" ovf:parentRef=\"\" ovf! :fileRef=\"1107554f-ce13-44c0-bcf5-8a6f8837bc6c/3bb151be-7503-4511-820d-68eb52409c1d\" ovf:format=\"http://www.vmware.com/specifications/vmdk.html#sparse\" ovf:volume-format=\"RAW\" ovf:volume-type=\"Sparse\" ovf:disk-interface=\"VirtIO\" ovf:boot=\"true\" ovf:disk-alias=\"Test_Disk1\" ovf:wipe-after-delete=\"false\"/></Section><Content ovf:id=\"out\" xsi:type=\"ovf:VirtualSystem_Type\"><Description></Description><CreationDate>2014/07/09 12:16:35</CreationDate><ExportDate>2014/07/09 12:18:19</ExportDate><DeleteProtected>false</DeleteProtected><SsoMethod>guest_agent</SsoMethod><IsSmartcardEnabled>false</IsSmartcardEnabled><TimeZone>Etc/GMT</TimeZone><default_boot_sequence>0</default_boot_sequence><Generation>2</Generation><VmType>1</VmType><MinAllocatedMem>1024</MinAllocatedMem><IsStateless>false</IsStateless><IsRunAndPause>false</IsRunAndPause><AutoStartup>false</AutoStartup><Priority>1</Priority><CreatedByUserId>fdfc627c-d875-11e0-90f0-83df133b58cc</CreatedByUserId><IsBoot! MenuEnabled>false</IsBootMenuEnabled><IsSpiceFileTransferEnabled>true</IsSpiceFileTransferEnabled><IsSpiceCopyPasteEnabled>true</IsSpiceCopyPasteEnabled><Name>Test</Name><TemplateId>00000000-0000-0000-0000-000000000000</TemplateId><TemplateName>Blank</TemplateName><IsInitilized>false</IsInitilized><Origin>3</Origin><DefaultDisplayType>1</DefaultDisplayType><TrustedService>false</TrustedService><OriginalTemplateId>00000000-0000-0000-0000-000000000000</OriginalTemplateId><OriginalTemplateName>Blank</OriginalTemplateName><UseLatestVersion>false</UseLatestVersion><Section ovf:id=\"2d3f2c0d-efe8-4428-aea7-16cc648dfef3\" ovf:required=\"false\" xsi:type=\"ovf:OperatingSystemSection_Type\"><Info>Guest Operating System</Info><Description>other</Description></Section><Section xsi:type=\"ovf:VirtualHardwareSection_Type\"><Info>1 CPU, 1024 Memeory</Info><System><vssd:VirtualSystemType>ENGINE 3.5.0.0</vssd:VirtualSystemType></System><Item><rasd:Caption>1 virtual cpu</rasd:Caption><rasd:D escription>Number of virtual CPU</rasd:Description><rasd:InstanceId>1<! /rasd:InstanceId><rasd:ResourceType>3</rasd:ResourceType><rasd:num_of_sockets>1</rasd:num_of_sockets><rasd:cpu_per_socket>1</rasd:cpu_per_socket></Item><Item><rasd:Caption>1024 MB of memory</rasd:Caption><rasd:Description>Memory Size</rasd:Description><rasd:InstanceId>2</rasd:InstanceId><rasd:ResourceType>4</rasd:ResourceType><rasd:AllocationUnits>MegaBytes</rasd:AllocationUnits><rasd:VirtualQuantity>1024</rasd:VirtualQuantity></Item><Item><rasd:Caption>Test_Disk1</rasd:Caption><rasd:InstanceId>3bb151be-7503-4511-820d-68eb52409c1d</rasd:InstanceId><rasd:ResourceType>17</rasd:ResourceType><rasd:HostResource>1107554f-ce13-44c0-bcf5-8a6f8837bc6c/3bb151be-7503-4511-820d-68eb52409c1d</rasd:HostResource><rasd:Parent>00000000-0000-0000-0000-000000000000</rasd:Parent><rasd:Template>00000000-0000-0000-0000-000000000000</rasd:Template><rasd:ApplicationList></rasd:ApplicationList><rasd:StorageId>3bf14d11-db1d-461b-b2c4-66499e243f38</rasd:StorageId><rasd:StoragePoolId>64c894a2-05c6-4bb! 8-bb2d-2672224becae</rasd:StoragePoolId><rasd:CreationDate>2014/07/09 12:16:47</rasd:CreationDate><rasd:LastModified>1970/01/01 00:00:00</rasd:LastModified><rasd:last_modified_date>2014/07/09 12:18:19</rasd:last_modified_date></Item><Item><rasd:Caption>USB Controller</rasd:Caption><rasd:InstanceId>3</rasd:InstanceId><rasd:ResourceType>23</rasd:ResourceType><rasd:UsbPolicy>DISABLED</rasd:UsbPolicy></Item></Section><Section xsi:type=\"ovf:SnapshotsSection_Type\"><Snapshot ovf:id=\"e80cbc53-233d-4748-95bf-2499b34afda6\"><Type>ACTIVE</Type><Description>Active VM</Description><CreationDate>2014/07/09 12:16:35</CreationDate></Snapshot></Section></Content></ovf:Envelope>"; + } + + private void setupTest() { + setVdsGroup(); + } +} -- To view, visit http://gerrit.ovirt.org/29999 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I22337555906ea24201137ed4d4600fc4c7ff7478 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Maor Lipchuk <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
