diff options
Diffstat (limited to 'adapters')
3 files changed, 185 insertions, 40 deletions
diff --git a/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java b/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java index 394d13d8d2..7696f3bc24 100644 --- a/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java +++ b/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java @@ -20,6 +20,9 @@ package org.openecomp.mso.adapters.vdu;
+import java.util.Arrays;
+import java.util.Objects;
+
public class VduArtifact {
// Enumerate the types of artifacts permitted. This may need to be a variable string
@@ -59,6 +62,19 @@ public class VduArtifact { }
public void setType(ArtifactType type) {
this.type = type;
- }
-
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ VduArtifact that = (VduArtifact) o;
+ return Objects.equals(name, that.name) &&
+ Arrays.equals(content, that.content) &&
+ type == that.type;
+ }
}
\ No newline at end of file diff --git a/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java b/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java index b04f3c30db..d26d3f62f8 100644 --- a/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java +++ b/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java @@ -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 index 0000000000..ffa6bcd961 --- /dev/null +++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java @@ -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; + } + +} |