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

Reply via email to