add junit for VfModuleCustomizationToVduMapper 93/56293/2
authorLukasz Muszkieta <lukasz.muszkieta@nokia.com>
Thu, 12 Jul 2018 15:23:33 +0000 (17:23 +0200)
committerLukasz Muszkieta <lukasz.muszkieta@nokia.com>
Fri, 13 Jul 2018 08:56:29 +0000 (10:56 +0200)
Change-Id: Ia63f7ababdb7f51a89da4713ae29c1297e7bd746
Issue-ID: SO-718
Signed-off-by: Lukasz Muszkieta <lukasz.muszkieta@nokia.com>
adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java
adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java
adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java [new file with mode: 0644]
mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatEnvironment.java
mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatFiles.java

index 394d13d..7696f3b 100644 (file)
@@ -20,6 +20,9 @@
 \r
 package org.openecomp.mso.adapters.vdu;\r
 \r
+import java.util.Arrays;\r
+import java.util.Objects;\r
+\r
 public class VduArtifact {\r
        \r
        // Enumerate the types of artifacts permitted.  This may need to be a variable string\r
@@ -59,6 +62,19 @@ public class VduArtifact {
        }\r
        public void setType(ArtifactType type) {\r
                this.type = type;\r
-       }       \r
-       \r
+       }\r
+\r
+       @Override\r
+       public boolean equals(Object o) {\r
+               if (this == o) {\r
+                       return true;\r
+               }\r
+               if (o == null || getClass() != o.getClass()) {\r
+                       return false;\r
+               }\r
+               VduArtifact that = (VduArtifact) o;\r
+               return Objects.equals(name, that.name) &&\r
+                               Arrays.equals(content, that.content) &&\r
+                               type == that.type;\r
+       }\r
 }
\ No newline at end of file
index b04f3c3..d26d3f6 100644 (file)
@@ -20,7 +20,6 @@
 
 package org.openecomp.mso.adapters.vdu.mapper;
 
-import java.sql.SQLException;
 import java.util.List;
 import java.util.Map;
 import org.openecomp.mso.adapters.vdu.VduArtifact;
@@ -39,11 +38,10 @@ public class VfModuleCustomizationToVduMapper {
 
        private static MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
 
-       public VduModelInfo mapVfModuleCustomizationToVdu(VfModuleCustomization vfModuleCustom) throws SQLException {
-               CatalogDatabase db = CatalogDatabase.getInstance();
+       public VduModelInfo mapVfModuleCustomizationToVdu(VfModuleCustomization vfModuleCustom) {
                VduModelInfo vduModel = new VduModelInfo();
                vduModel.setModelCustomizationUUID(vfModuleCustom.getModelCustomizationUuid());
-               try {
+               try (CatalogDatabase db = CatalogDatabase.getInstance()) {
                        // Map the cloud templates, attached files, and environment file
                        mapCloudTemplates(
                                        db.getHeatTemplateByArtifactUuid(vfModuleCustom.getVfModule().getHeatTemplateArtifactUUId()),
@@ -51,22 +49,14 @@ public class VfModuleCustomizationToVduMapper {
                        mapCloudFiles(vfModuleCustom, vduModel);
                        mapEnvironment(db.getHeatEnvironmentByArtifactUuid(vfModuleCustom.getHeatEnvironmentArtifactUuid()),
                                        vduModel);
-               } catch (SQLException e) {
-                       LOGGER.debug("unhandled exception in mapVfModuleCustomizationToVdu", e);
-                       throw new SQLException("Exception during mapVfModuleCustomizationToVdu " + e.getMessage());
-               } finally {
-                       // Make sure DB session is closed
-                       db.close();
                }
-
                return vduModel;
        }
 
-       public VduModelInfo mapVfModuleCustVolumeToVdu(VfModuleCustomization vfModuleCustom) throws SQLException {
-               CatalogDatabase db = CatalogDatabase.getInstance();
+       public VduModelInfo mapVfModuleCustVolumeToVdu(VfModuleCustomization vfModuleCustom) {
                VduModelInfo vduModel = new VduModelInfo();
                vduModel.setModelCustomizationUUID(vfModuleCustom.getModelCustomizationUuid());
-               try {
+               try (CatalogDatabase db = CatalogDatabase.getInstance()) {
                        // Map the cloud templates, attached files, and environment file
                        mapCloudTemplates(
                                        db.getHeatTemplateByArtifactUuid(vfModuleCustom.getVfModule().getVolHeatTemplateArtifactUUId()),
@@ -74,29 +64,20 @@ public class VfModuleCustomizationToVduMapper {
                        mapCloudFiles(vfModuleCustom, vduModel);
                        mapEnvironment(db.getHeatEnvironmentByArtifactUuid(vfModuleCustom.getVolEnvironmentArtifactUuid()),
                                        vduModel);
-               } catch (SQLException e) {
-                       LOGGER.debug("unhandled exception in mapVfModuleCustVolumeToVdu", e);
-                       throw new SQLException("Exception during mapVfModuleCustVolumeToVdu " + e.getMessage());
-               } finally {
-                       // Make sure DB session is closed
-                       db.close();
                }
-
                return vduModel;
        }
 
-       private void mapCloudTemplates(HeatTemplate heatTemplate, VduModelInfo vduModel) throws SQLException {
+       private void mapCloudTemplates(HeatTemplate heatTemplate, VduModelInfo vduModel) {
                // TODO: These catalog objects will be refactored to be
                // non-Heat-specific
-               CatalogDatabase db = CatalogDatabase.getInstance();
-               try {
+               try (CatalogDatabase db = CatalogDatabase.getInstance()) {
                        List<VduArtifact> vduArtifacts = vduModel.getArtifacts();
 
                        // Main template. Also set the VDU timeout based on the main
                        // template.
                        vduArtifacts.add(mapHeatTemplateToVduArtifact(heatTemplate, ArtifactType.MAIN_TEMPLATE));
                        vduModel.setTimeoutMinutes(heatTemplate.getTimeoutMinutes());
-                       
                        // Nested templates
                        Map<String,Object> nestedTemplates = db.getNestedTemplates(heatTemplate.getArtifactUuid());
                        if (nestedTemplates != null) {
@@ -106,13 +87,9 @@ public class VfModuleCustomizationToVduMapper {
                                        vduArtifacts.add(vduArtifact);
                                }
                        }
-                       
                } catch (IllegalArgumentException e) {
                        LOGGER.debug("unhandled exception in mapCloudTemplates", e);
                        throw new IllegalArgumentException("Exception during mapCloudTemplates " + e.getMessage());
-               } finally {
-                       // Make sure DB session is closed
-                       db.close();
                }
        }
 
@@ -124,26 +101,20 @@ public class VfModuleCustomizationToVduMapper {
                return vduArtifact;
        }
 
-       private void mapCloudFiles(VfModuleCustomization vfModuleCustom, VduModelInfo vduModel) throws SQLException {
+       private void mapCloudFiles(VfModuleCustomization vfModuleCustom, VduModelInfo vduModel) {
                // TODO: These catalog objects will be refactored to be
                // non-Heat-specific
-               CatalogDatabase db = CatalogDatabase.getInstance();
-
-               try{
+               try (CatalogDatabase db = CatalogDatabase.getInstance()) {
                        Map <String, HeatFiles> heatFiles = db.getHeatFilesForVfModule(vfModuleCustom.getVfModuleModelUuid());
                        if (heatFiles != null) {
                                for (HeatFiles heatFile: heatFiles.values()) {
-                                       mapCloudFileToVduArtifact(heatFile, ArtifactType.TEXT_FILE);
+                                       vduModel.getArtifacts().add(mapCloudFileToVduArtifact(heatFile, ArtifactType.TEXT_FILE));
                                }
                        }
                } catch (IllegalArgumentException e) {
                        LOGGER.debug("unhandled exception in mapCloudFiles", e);
                        throw new IllegalArgumentException("Exception during mapCloudFiles " + e.getMessage());
-               } finally {
-                       // Make sure DB session is closed
-                       db.close();
                }
-               
        }
 
        private VduArtifact mapCloudFileToVduArtifact(HeatFiles heatFile, ArtifactType artifactType) {
diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java
new file mode 100644 (file)
index 0000000..ffa6bcd
--- /dev/null
@@ -0,0 +1,158 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.adapters.vdu.mapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.openecomp.mso.adapters.vdu.VduArtifact;
+import org.openecomp.mso.adapters.vdu.VduArtifact.ArtifactType;
+import org.openecomp.mso.adapters.vdu.VduModelInfo;
+import org.openecomp.mso.db.catalog.CatalogDatabase;
+import org.openecomp.mso.db.catalog.beans.HeatEnvironment;
+import org.openecomp.mso.db.catalog.beans.HeatFiles;
+import org.openecomp.mso.db.catalog.beans.HeatTemplate;
+import org.openecomp.mso.db.catalog.beans.VfModule;
+import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({CatalogDatabase.class})
+public class VfModuleCustomizationToVduMapperTest {
+
+    private static final String HEAT_TEMPLATE_ARTIFACT_UUID = "testHeatTemplate";
+    private static final String VF_MODULE_MODEL_UUID = "vfModuleUuid";
+    private static final String HEAT_ENV_ARTIFACT_UUID = "heatEnvArtifactUuid";
+    private static final String MAIN_TEMPLATE_NAME = "testTempName";
+    private static final String MAIN_TEMPLATE_BODY = "testTempBody";
+    private static final String NESTED_TEMPLATE_KEY = "testKey";
+    private static final String NESTED_TEMPLATE_VALUE = "nestedTemplateTest";
+    private static final String HEAT_FILE_NAME = "heatFileName";
+    private static final String HEAT_FILE_BODY = "heatFileBodyTest";
+    private static final String HEAT_ENV_NAME = "heatEnvName";
+    private static final String HEAT_ENV = "heatEnv";
+    private static final String VOL_HEAT_TEMPLATE_ARTIFACT = "volEnvArtifact";
+    private static final String VOL_ENV_ARTIFACT_UUID = "volEnvArtifactUuid";
+
+    private VfModuleCustomizationToVduMapper testedObject;
+    private CatalogDatabase catalogDatabaseMock;
+
+    @Before
+    public void init() {
+        PowerMockito.mockStatic(CatalogDatabase.class);
+        catalogDatabaseMock = mock(CatalogDatabase.class);
+        testedObject = new VfModuleCustomizationToVduMapper();
+        PowerMockito.when(CatalogDatabase.getInstance()).thenReturn(catalogDatabaseMock);
+        when(catalogDatabaseMock.getNestedTemplates(HEAT_TEMPLATE_ARTIFACT_UUID)).thenReturn(createNestedTemplates());
+        when(catalogDatabaseMock.getHeatFilesForVfModule(VF_MODULE_MODEL_UUID)).thenReturn(createHeatFileMap());
+    }
+
+    @Test
+    public void mapVfModuleCustomizationToVdu_successful() {
+        when(catalogDatabaseMock.getHeatTemplateByArtifactUuid(HEAT_TEMPLATE_ARTIFACT_UUID))
+                .thenReturn(createHeatTemplate());
+        when(catalogDatabaseMock.getHeatEnvironmentByArtifactUuid(HEAT_ENV_ARTIFACT_UUID))
+                .thenReturn(createHeatEnvironment());
+        VduModelInfo result = testedObject.mapVfModuleCustomizationToVdu(createVfModuleCustomization());
+        assertThat(result.getArtifacts()).containsExactly(createExpectedResultArray());
+    }
+
+    @Test
+    public void mapVfModuleCustVolumeToVdu_successful() {
+        when(catalogDatabaseMock.getHeatTemplateByArtifactUuid(VOL_HEAT_TEMPLATE_ARTIFACT))
+                .thenReturn(createHeatTemplate());
+        when(catalogDatabaseMock.getHeatEnvironmentByArtifactUuid(VOL_ENV_ARTIFACT_UUID))
+                .thenReturn(createHeatEnvironment());
+        VduModelInfo result = testedObject.mapVfModuleCustVolumeToVdu(createVfModuleCustomization());
+        assertThat(result.getArtifacts()).containsExactly(createExpectedResultArray());
+    }
+
+    private VfModuleCustomization createVfModuleCustomization() {
+        VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
+        VfModule vfModule = new VfModule();
+        vfModule.setHeatTemplateArtifactUUId(HEAT_TEMPLATE_ARTIFACT_UUID);
+        vfModule.setVolHeatTemplateArtifactUUId(VOL_HEAT_TEMPLATE_ARTIFACT);
+        vfModuleCustomization.setVfModule(vfModule);
+        vfModuleCustomization.setVfModuleModelUuid(VF_MODULE_MODEL_UUID);
+        vfModuleCustomization.setHeatEnvironmentArtifactUuid(HEAT_ENV_ARTIFACT_UUID);
+        vfModuleCustomization.setVolEnvironmentArtifactUuid(VOL_ENV_ARTIFACT_UUID);
+        return vfModuleCustomization;
+    }
+
+    private HeatTemplate createHeatTemplate() {
+        HeatTemplate heatTemplate = new HeatTemplate();
+        heatTemplate.setTemplateName(MAIN_TEMPLATE_NAME);
+        heatTemplate.setTemplateBody(MAIN_TEMPLATE_BODY);
+        heatTemplate.setArtifactUuid(HEAT_TEMPLATE_ARTIFACT_UUID);
+        return heatTemplate;
+    }
+
+    private Map<String, Object> createNestedTemplates() {
+        Map<String, Object> map = new HashMap<>();
+        map.put(NESTED_TEMPLATE_KEY, NESTED_TEMPLATE_VALUE);
+        return map;
+    }
+
+    private Map<String, HeatFiles> createHeatFileMap() {
+        HeatFiles heatFiles = new HeatFiles();
+        heatFiles.setFileName(HEAT_FILE_NAME);
+        heatFiles.setFileBody(HEAT_FILE_BODY);
+        Map<String, HeatFiles> map = new HashMap<>();
+        map.put("heatFileKey", heatFiles);
+        return map;
+    }
+
+    private HeatEnvironment createHeatEnvironment() {
+        HeatEnvironment heatEnvironment = new HeatEnvironment();
+        heatEnvironment.setName(HEAT_ENV_NAME);
+        heatEnvironment.setEnvironment(HEAT_ENV);
+        return heatEnvironment;
+    }
+
+
+    private VduArtifact[] createExpectedResultArray() {
+        VduArtifact[] vduArtifactsArray = new VduArtifact[4];
+        vduArtifactsArray[0] = new VduArtifact(MAIN_TEMPLATE_NAME, MAIN_TEMPLATE_BODY.getBytes(),
+                ArtifactType.MAIN_TEMPLATE);
+        vduArtifactsArray[1] = new VduArtifact(NESTED_TEMPLATE_KEY, NESTED_TEMPLATE_VALUE.getBytes(),
+                ArtifactType.NESTED_TEMPLATE);
+        vduArtifactsArray[2] = createVduArtifact(HEAT_FILE_NAME, HEAT_FILE_BODY, ArtifactType.TEXT_FILE);
+        vduArtifactsArray[3] = createVduArtifact(HEAT_ENV_NAME, HEAT_ENV, ArtifactType.ENVIRONMENT);
+        return vduArtifactsArray;
+    }
+
+    private VduArtifact createVduArtifact(String name, String content, ArtifactType artifactType) {
+        VduArtifact vduArtifact = new VduArtifact();
+        vduArtifact.setName(name);
+        vduArtifact.setContent(content.getBytes());
+        vduArtifact.setType(artifactType);
+        return vduArtifact;
+    }
+
+}
index 899127c..8baf620 100644 (file)
@@ -38,8 +38,6 @@ public class HeatEnvironment extends MavenLikeVersioning implements Serializable
 
        private Timestamp created = null;
 
-       public HeatEnvironment() {}
-
        public String getArtifactUuid() {
                return this.artifactUuid;
        }
index 8d7da22..542cd45 100644 (file)
@@ -38,7 +38,6 @@ public class HeatFiles extends MavenLikeVersioning implements Serializable {
        private String version = null;
        private String artifactChecksum = null;
 
-       public HeatFiles() {}
 
        public String getArtifactUuid() {
                return this.artifactUuid;