diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp')
72 files changed, 9016 insertions, 785 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java index b52abfa927..763631ff5e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java @@ -1,14 +1,51 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator; -import org.openecomp.sdc.common.utils.AsdcCommon; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.Assert; import org.openecomp.core.translator.api.HeatToToscaTranslator; import org.openecomp.core.utilities.file.FileUtils; -import org.junit.Assert; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition; +import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.DataModelUtil; +import org.openecomp.sdc.tosca.services.yamlutil.ToscaExtensionYamlUtil; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.NotDirectoryException; +import java.util.*; public class TestUtils { - private static final String MANIFEST_NAME = AsdcCommon.MANIFEST_NAME; + private static final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME; private static String zipFilename = "VSP.zip"; private static String validationFilename = "validationOutput.json"; @@ -40,4 +77,535 @@ public class TestUtils { } } } + + /** + * Get tosca service template models for the files in a directory + * @param baseDirPath base directory for the tosca file + * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory + */ + public static Map<String, ServiceTemplate> getServiceTemplates(String baseDirPath){ + Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>(); + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + baseDirPath = "."+baseDirPath+"/"; + try { + String[] fileList = {}; + URL filesDirUrl = TestUtils.class.getClassLoader().getResource(baseDirPath); + if (filesDirUrl != null && filesDirUrl.getProtocol().equals("file")) { + fileList = new File(filesDirUrl.toURI()).list(); + } else { + Assert.fail("Invalid expected output files directory"); + } + for (int i = 0; i < fileList.length; i++) { + InputStream serviceTemplateInputStream = FileUtils.getFileInputStream(TestUtils.class + .getClassLoader().getResource(baseDirPath + fileList[i])); + ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject + (serviceTemplateInputStream, ServiceTemplate.class); + serviceTemplateMap.put(fileList[i], serviceTemplate); + } + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + return serviceTemplateMap; + } + + /** + * Get tosca service template models + * @param expectedResultMap Map of filename and payload of the expected result files + * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory + */ + public static Map<String, ServiceTemplate> getServiceTemplates(Map<String, byte[]> + expectedResultMap){ + Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>(); + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + for(String fileName : expectedResultMap.keySet()){ + ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject + (new String(expectedResultMap.get(fileName)), ServiceTemplate.class); + serviceTemplateMap.put(fileName, serviceTemplate); + } + return serviceTemplateMap; + } + + + public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath, + String globalServiceTemplatesPath, + String entryDefinitionServiceTemplate) + throws IOException { + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + Map<String, ServiceTemplate> serviceTemplates = new HashMap<>(); + if (entryDefinitionServiceTemplate == null) { + entryDefinitionServiceTemplate = "MainServiceTemplate.yaml"; + } + + serviceTemplates = getServiceTemplates(serviceTemplatesPath); + if (globalServiceTemplatesPath != null) { + serviceTemplates = getServiceTemplates(globalServiceTemplatesPath); + } + + return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate); + } + + public static ServiceTemplate loadServiceTemplate(String serviceTemplatePath) + throws IOException { + ServiceTemplate serviceTemplateFromYaml = new ServiceTemplate(); + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + URL urlFile = TestUtils.class.getResource(serviceTemplatePath); + if (urlFile != null) { + File pathFile = new File(urlFile.getFile()); + File[] files = pathFile.listFiles(); + for (File file : files) { + try (InputStream yamlFile = new FileInputStream(file)) { + serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil); + try { + yamlFile.close(); + } catch (IOException ignore) { + } + } catch (FileNotFoundException e) { + throw e; + } catch (IOException e) { + throw e; + } + } + } else { + throw new NotDirectoryException(serviceTemplatePath); + } + return serviceTemplateFromYaml; + } + + + public static void loadServiceTemplates(String serviceTemplatesPath, + ToscaExtensionYamlUtil toscaExtensionYamlUtil, + Map<String, ServiceTemplate> serviceTemplates) + throws IOException { + URL urlFile = TestUtils.class.getResource(serviceTemplatesPath); + if (urlFile != null) { + File pathFile = new File(urlFile.getFile()); + File[] files = pathFile.listFiles(); + if (files != null) { + addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil); + } else { + throw new NotDirectoryException(serviceTemplatesPath); + } + } else { + throw new NotDirectoryException(serviceTemplatesPath); + } + } + + private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates, + File[] files, + ToscaExtensionYamlUtil toscaExtensionYamlUtil) + throws IOException { + for (File file : files) { + try (InputStream yamlFile = new FileInputStream(file)) { + ServiceTemplate serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil); + serviceTemplates.put(file.getName(), serviceTemplateFromYaml); + try { + yamlFile.close(); + } catch (IOException ignore) { + } + } catch (FileNotFoundException e) { + throw e; + } catch (IOException e) { + throw e; + } + } + } + + private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate + serviceTemplateFromYaml, + ToscaExtensionYamlUtil + toscaExtensionYamlUtil) { + + if (serviceTemplateFromYaml == null + || serviceTemplateFromYaml.getTopology_template() == null + || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) { + return; + } + + //Creating concrete objects + Map<String, NodeTemplate> nodeTemplates = + serviceTemplateFromYaml.getTopology_template().getNode_templates(); + for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) { + NodeTemplate nodeTemplate = entry.getValue(); + List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements(); + List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>(); + if (requirements != null) { + ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements + .listIterator(); + while (reqListIterator.hasNext()){ + Map<String, RequirementAssignment> requirement = reqListIterator.next(); + Map<String, RequirementAssignment> concreteRequirement = new HashMap<>(); + for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) { + RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil + .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()), + RequirementAssignment.class)); + concreteRequirement.put(reqEntry.getKey(), requirementAssignment); + concreteRequirementList.add(concreteRequirement); + reqListIterator.remove(); + } + } + requirements.clear(); + requirements.addAll(concreteRequirementList); + nodeTemplate.setRequirements(requirements); + } + System.out.println(); + //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class); + } + } + + public static void updateMultiplePortConsolidationDatas(String serviceTemplateName, + List<String> portNodeTemplateIds, + List<List<String>> nodesConnectedInIds, + List<List<String>> nodesConnectedOutIds, + List<List<String>> groupIds, + List<List<String>> getAttrInIds, + List<List<Pair<String, GetAttrFuncData>>> getAttrOutFuncDataList, + ConsolidationData consolidationData){ + for(int i = 0; i < portNodeTemplateIds.size(); i++){ + updatePortConsolidationData(serviceTemplateName, portNodeTemplateIds.get(i), + nodesConnectedInIds.get(i), nodesConnectedOutIds.get(i), + groupIds.get(i), getAttrInIds.get(i),getAttrOutFuncDataList.get(i), consolidationData); + } + } + + public static void updatePortConsolidationData(String serviceTemplateFileName, + String portNodeTemplateId, + List<String> nodesConnectedInIds, + List<String> nodesConnectedOutIds, + List<String> groupIds, List<String> getAttrInIds, + List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList, + ConsolidationData consolidationData) { + + PortTemplateConsolidationData portTemplateConsolidationData = + createPortTemplateConsolidationData(portNodeTemplateId); + + updateRelationsForEntityConsolidationData(portNodeTemplateId, nodesConnectedInIds, + nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOutFuncDataList, portTemplateConsolidationData); + + consolidationData.getPortConsolidationData() + .getFilePortConsolidationData(serviceTemplateFileName) + .setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData); + } + + public static PortTemplateConsolidationData createPortTemplateConsolidationData( + String portNodeTemplateId) { + PortTemplateConsolidationData portTemplateConsolidationData = + new PortTemplateConsolidationData(); + portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId); + return portTemplateConsolidationData; + } + + public static void initPortConsolidationData(String serviceTemplateFileName, + ConsolidationData consolidationData) { + + consolidationData.getPortConsolidationData() + .setFilePortConsolidationData(serviceTemplateFileName, new FilePortConsolidationData()); + } + + public static void updateComputeTemplateConsolidationData(String serviceTemplateFileName, + String computeNodeTypeName, + String computeNodeTemplateId, + List<String> nodeIdsConnectedIn, + List<String> nodeIdsConnectedOut, + List<String> volumeIds, + List<String> groupIds, + List<String> getAttrInIds, + List<Pair<String, GetAttrFuncData>> getAttrOutIds, + List<Pair<String, String>> portTypeToIdList, + ConsolidationData consolidationData) { + + initComputeNodeTemplateIdInConsolidationData(serviceTemplateFileName, computeNodeTypeName, + computeNodeTemplateId, consolidationData); + + Map<String, List<RequirementAssignmentData>> volumes = + consolidationData.getComputeConsolidationData().getFileComputeConsolidationData + (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName) + .getComputeTemplateConsolidationData(computeNodeTemplateId).getVolumes(); + + ComputeTemplateConsolidationData computeTemplateConsolidationData = + createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList, volumes); + + updateRelationsForEntityConsolidationData(computeNodeTemplateId, nodeIdsConnectedIn, + nodeIdsConnectedOut, groupIds, getAttrInIds, getAttrOutIds, computeTemplateConsolidationData); + + updateVolumes(computeTemplateConsolidationData, volumeIds); + + consolidationData.getComputeConsolidationData() + .getFileComputeConsolidationData(serviceTemplateFileName) + .getTypeComputeConsolidationData(computeNodeTypeName) + .setComputeTemplateConsolidationData(computeNodeTemplateId, + computeTemplateConsolidationData); + } + + private static void updateRelationsForEntityConsolidationData(String entityNodeTemplateId, + List<String> nodeIdsConnectedIn, + List<String> nodeIdsConnectedOut, + List<String> groupIds, + List<String> getAttrInIds, + List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList, + EntityConsolidationData entity) { + updateRelationsIn(entity, nodeIdsConnectedIn); + updateRelationsOut(entity, entityNodeTemplateId, nodeIdsConnectedOut); + updateGetAttrIn(entity, getAttrInIds); + updateGetAttrOut(entity, getAttrOutFuncDataList); + entity.setGroupIds(groupIds); + } + + public static void initComputeNodeTemplateIdInConsolidationData(String serviceTemplateFileName, + String computeNodeTypeName, + String computeNodeTemplateId, + ConsolidationData consolidationData) { + + if(Objects.isNull(consolidationData.getComputeConsolidationData().getFileComputeConsolidationData + (serviceTemplateFileName))) { + consolidationData.getComputeConsolidationData().setFileComputeConsolidationData + (serviceTemplateFileName, new FileComputeConsolidationData()); + } + TypeComputeConsolidationData typeComputeConsolidationData = + consolidationData.getComputeConsolidationData().getFileComputeConsolidationData + (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName); + + if( + typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId) == null) { + + consolidationData.getComputeConsolidationData() + .getFileComputeConsolidationData(serviceTemplateFileName) + .getTypeComputeConsolidationData(computeNodeTypeName) + .setComputeTemplateConsolidationData(computeNodeTemplateId, new ComputeTemplateConsolidationData()); + + } + } + + public static void updateNestedConsolidationData(String serviceTemplateName, + List<String> substitutionNodeTemplateIds, + ConsolidationData consolidationData){ + if(Objects.isNull(consolidationData.getNestedConsolidationData())){ + consolidationData.setNestedConsolidationData(new NestedConsolidationData()); + } + + FileNestedConsolidationData fileNestedConsolidationData = new FileNestedConsolidationData(); + for(String substitutionNodeTemplateId : substitutionNodeTemplateIds) { + NestedTemplateConsolidationData nestedTemplateConsolidationData = new NestedTemplateConsolidationData(); + nestedTemplateConsolidationData.setNodeTemplateId(substitutionNodeTemplateId); + fileNestedConsolidationData.setNestedTemplateConsolidationData(substitutionNodeTemplateId, nestedTemplateConsolidationData); + } + consolidationData.getNestedConsolidationData().setFileNestedConsolidationData(serviceTemplateName, fileNestedConsolidationData); + } + + public static ComputeTemplateConsolidationData createComputeTemplateConsolidationData(String computeNodeTemplateId, + List<Pair<String, String>> portTypeToIdList, + Map<String,List<RequirementAssignmentData>> volumes) { + ComputeTemplateConsolidationData compute = new ComputeTemplateConsolidationData(); + compute.setNodeTemplateId(computeNodeTemplateId); + if (portTypeToIdList != null) { + for (Pair<String, String> port : portTypeToIdList) { + compute.addPort(port.getLeft(), port.getRight()); + } + } + compute.setVolumes(volumes); + return compute; + } + + public static void updateRelationsIn(EntityConsolidationData entity, + List<String> idsPontingTome){ + if(CollectionUtils.isEmpty(idsPontingTome)){ + return; + } + + for(String pointingId : idsPontingTome){ + entity.addNodesConnectedIn(pointingId, entity.getNodeTemplateId(), new RequirementAssignment()); + } + } + + public static void updateRelationsOut(EntityConsolidationData entity, + String nodeTemplateId, + List<String> idsToUpdate){ + if(CollectionUtils.isEmpty(idsToUpdate)){ + return; + } + + for(String id : idsToUpdate){ + entity.addNodesConnectedOut(id, id, new RequirementAssignment()); + } + } + + public static void updateGetAttrIn(EntityConsolidationData entity, + List<String> idsToUpdate){ + if(CollectionUtils.isEmpty(idsToUpdate)){ + return; + } + + for(String id : idsToUpdate){ + entity.addNodesGetAttrIn(id, new GetAttrFuncData()); + } + } + + public static void updateGetAttrOut(EntityConsolidationData entity, + List<Pair<String, GetAttrFuncData>> getAttrOutIds){ + if(CollectionUtils.isEmpty(getAttrOutIds)){ + return; + } + + for(Pair<String, GetAttrFuncData> getAttrOutFunc : getAttrOutIds){ + entity.addNodesGetAttrOut(getAttrOutFunc.getLeft(), getAttrOutFunc.getRight()); + } + } + + public static void updateVolumes(ComputeTemplateConsolidationData compute, + List<String> volumeIds){ + if(CollectionUtils.isEmpty(volumeIds)){ + return; + } + + for(String id : volumeIds){ + RequirementAssignment requirementAssignment = new RequirementAssignment(); + requirementAssignment.setNode(id); + compute.addVolume(id, requirementAssignment); + } + } + + public static void initComputeNodeTypeInConsolidationData(String serviceTemplateFileName, + String computeNodeTypeName, + ConsolidationData consolidationData) { + ComputeConsolidationData computeConsolidationData = + consolidationData.getComputeConsolidationData(); + if (!computeConsolidationData.getAllServiceTemplateFileNames() + .contains(serviceTemplateFileName)) { + computeConsolidationData + .setFileComputeConsolidationData(serviceTemplateFileName, + new FileComputeConsolidationData()); + } + computeConsolidationData + .getFileComputeConsolidationData(serviceTemplateFileName).setTypeComputeConsolidationData( + computeNodeTypeName, new TypeComputeConsolidationData()); + } + + public static Map<String, List<RequirementAssignmentData>> getNodeConnectedOutList( + NodeTemplate nodeTemplate, String requirementKey) { + Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>(); + Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = + TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey); + if (requirementAssignmentDataList.isPresent()) { + for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList + .get()) { + String connectedNodeTemplateId = requirementAssignmentData.getRequirementAssignment() + .getNode(); + requirementAssignmentDataMap + .computeIfAbsent(connectedNodeTemplateId, k -> new ArrayList<>()); + requirementAssignmentDataMap.get(connectedNodeTemplateId).add(requirementAssignmentData); + } + } + return requirementAssignmentDataMap; + } + + public static void updatePortsInComputeTemplateConsolidationData( + List<Pair<String, String>> portIdToTypeList, ComputeTemplateConsolidationData + compute){ + compute.setPorts(new HashMap<>()); + for(Pair<String, String> portIdToType : portIdToTypeList){ + compute.getPorts().putIfAbsent(portIdToType.getLeft(), new ArrayList<>()); + compute.getPorts().get(portIdToType.getLeft()).add(portIdToType.getRight()); + } + } + + public static Map<String, List<RequirementAssignmentData>> getNodeConnectedInList( + String sourceNodeTemplateId, + ServiceTemplate serviceTemplate, String requirementKey) { + Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = Optional.empty(); + List<RequirementAssignmentData> assignmentDataList = new ArrayList<>(); + Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>(); + Map<String, NodeTemplate> nodeTemplates = serviceTemplate.getTopology_template() + .getNode_templates(); + for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) { + String nodeTemplateId = entry.getKey(); + List<Map<String, RequirementAssignment>> requirements = entry.getValue().getRequirements(); + if (requirements != null) { + for (Map<String, RequirementAssignment> requirement : requirements) { + if (requirement.get(requirementKey) != null) { + RequirementAssignment requirementAssignment = requirement.get(requirementKey); + if (requirementAssignment != null) { + if (requirementAssignment.getNode().equals(sourceNodeTemplateId)) { + RequirementAssignmentData data = new RequirementAssignmentData(requirementKey, + requirementAssignment); + assignmentDataList.add(data); + } + } + } + } + requirementAssignmentDataList = Optional.ofNullable(assignmentDataList); + if (requirementAssignmentDataList.isPresent()) { + for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList + .get()) { + requirementAssignmentDataMap.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>()); + requirementAssignmentDataMap.get(nodeTemplateId).add(requirementAssignmentData); + } + } + requirementAssignmentDataList = Optional.empty(); + } + } + return requirementAssignmentDataMap; + } + + public static List<String> getGroupsForNode(ServiceTemplate serviceTemplate, String + nodeTemplateId) { + List<String> entityGroups = new ArrayList<>(); + Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups(); + Map<String, NodeTemplate> nodeTemplates = + serviceTemplate.getTopology_template().getNode_templates(); + for (Map.Entry<String, GroupDefinition> entry : groups.entrySet()) { + String groupId = entry.getKey(); + GroupDefinition groupDefinition = entry.getValue(); + if (groupDefinition.getType().contains("HeatStack")) + continue; + List<String> groupMembers = groupDefinition.getMembers(); + for (String member : groupMembers) { + if (groups.containsKey(member)) + continue; + if (member.equals(nodeTemplateId)) { + entityGroups.add(groupId); + } + } + } + return entityGroups; + } + + private static Optional<List<RequirementAssignmentData>> createRequirementAssignmentDataList( + NodeTemplate nodeTemplate, String requirementKey) { + + Optional<List<RequirementAssignment>> requirementAssignmentLink = + DataModelUtil.getRequirementAssignment(nodeTemplate.getRequirements(), requirementKey); + if (!requirementAssignmentLink.isPresent()) { + return Optional.empty(); + } + + List<RequirementAssignmentData> requirementAssignmentDataList = new ArrayList<>(); + for (RequirementAssignment requirementAssignment : requirementAssignmentLink.get()) { + RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData + (requirementKey, requirementAssignment); + requirementAssignmentDataList.add(requirementAssignmentData); + } + return Optional.ofNullable(requirementAssignmentDataList); + } + + public static Optional<List<RequirementAssignmentData>> getRequirementAssignmentDataList( + NodeTemplate nodeTemplate, String requirementKey) { + List<RequirementAssignmentData> returnedReqAssignmentDataList = new ArrayList<>(); + Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = + TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey); + + if (requirementAssignmentDataList.isPresent()) { + for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList + .get()) { + returnedReqAssignmentDataList.add(requirementAssignmentData); + } + return Optional.of(returnedReqAssignmentDataList); + } + return Optional.empty(); + } + + + } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/multi/Translate_Heat_Nested_Multi.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/multi/Translate_Heat_Nested_Multi.java index 4be63258ae..10462c2838 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/multi/Translate_Heat_Nested_Multi.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/multi/Translate_Heat_Nested_Multi.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.nested.multi; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class Translate_Heat_Nested_Multi extends BaseResourceTranslationTest { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumelocal/NestedVolumelocal.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumelocal/NestedVolumelocal.java index 4f2f3af33a..84f05ce891 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumelocal/NestedVolumelocal.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumelocal/NestedVolumelocal.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.nested.nestedvolumelocal; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class NestedVolumelocal extends BaseResourceTranslationTest { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumeseperatefile/NestedVolumeSeperateFile.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumeseperatefile/NestedVolumeSeperateFile.java index 02a8fb6ce4..bd59303305 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumeseperatefile/NestedVolumeSeperateFile.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/nestedvolumeseperatefile/NestedVolumeSeperateFile.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.nested.nestedvolumeseperatefile; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class NestedVolumeSeperateFile extends BaseResourceTranslationTest { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/recursive/TranslateHeatNestedRecursiveTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/recursive/TranslateHeatNestedRecursiveTest.java index 792f4f4bf5..5cad472aa0 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/recursive/TranslateHeatNestedRecursiveTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/recursive/TranslateHeatNestedRecursiveTest.java @@ -1,8 +1,29 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.nested.recursive; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Before; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; import java.io.IOException; @@ -29,6 +50,8 @@ public class TranslateHeatNestedRecursiveTest extends BaseResourceTranslationTes outputFilesPath = "/mock/heat/nested/nested2levels/expectedoutputfiles"; initTranslatorAndTranslate(); testTranslation(); + validateNestedTemplateConsolidationData(TestConstants + .TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE); } @Test diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/reusenestedfrommultibase/Translate_Heat_Nested_From_Multi_Base.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/reusenestedfrommultibase/Translate_Heat_Nested_From_Multi_Base.java index 005bcd0db0..b715316146 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/reusenestedfrommultibase/Translate_Heat_Nested_From_Multi_Base.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/reusenestedfrommultibase/Translate_Heat_Nested_From_Multi_Base.java @@ -1,7 +1,28 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.nested.reusenestedfrommultibase; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class Translate_Heat_Nested_From_Multi_Base extends BaseResourceTranslationTest { @@ -13,6 +34,7 @@ public class Translate_Heat_Nested_From_Multi_Base extends BaseResourceTranslati @Test public void testTranslate() throws Exception { testTranslation(); + validateNestedTemplateConsolidationData(TestConstants.TEST_MULTIPLE_NESTED_RESOURCE); } } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/separatevol/NestedAndSeparateVolTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/separatevol/NestedAndSeparateVolTranslationTest.java index 4269705923..d867dc4597 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/separatevol/NestedAndSeparateVolTranslationTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/separatevol/NestedAndSeparateVolTranslationTest.java @@ -1,11 +1,32 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.nested.separatevol; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Before; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; import java.io.IOException; + public class NestedAndSeparateVolTranslationTest extends BaseResourceTranslationTest { @Before @@ -19,4 +40,4 @@ public class NestedAndSeparateVolTranslationTest extends BaseResourceTranslation public void testTranslate() throws Exception { testTranslation(); } -}
\ No newline at end of file +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/single/TranslateHeatNestedSingle.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/single/TranslateHeatNestedSingle.java index 1d80551f27..f81da11bc9 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/single/TranslateHeatNestedSingle.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/nested/single/TranslateHeatNestedSingle.java @@ -1,7 +1,29 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.nested.single; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class TranslateHeatNestedSingle extends BaseResourceTranslationTest { @@ -13,5 +35,6 @@ public class TranslateHeatNestedSingle extends BaseResourceTranslationTest { @Test public void testTranslate() throws Exception { testTranslation(); + validateNestedTemplateConsolidationData(TestConstants.TEST_SINGLE_NESTED_RESOURCE); } } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/outputs/HeatOutputConversionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/outputs/HeatOutputConversionTest.java index fd3543a051..e3197770a7 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/outputs/HeatOutputConversionTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/outputs/HeatOutputConversionTest.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.outputs; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class HeatOutputConversionTest extends BaseResourceTranslationTest { @@ -16,35 +36,4 @@ public class HeatOutputConversionTest extends BaseResourceTranslationTest { } - //private static final String MANIFEST_NAME = "MANIFEST.json"; - - /* @Test - public void testTranslate_outputs() throws IOException { - - HeatToToscaTranslator heatToToscaTranslator = HeatToToscaTranslatorFactory.getInstance().createInterface(); - URL url = this.getClass().getResource("/mock/heat/outputs"); - File manifestFile = new File(url.getPath()); - File[] files = manifestFile.listFiles(); - FileInputStream fis; - byte[] fileContent; - for (File file : files) { - fis = new FileInputStream(file); - fileContent = FileUtils.toByteArray(fis); - if (file.getName().equals(MANIFEST_NAME)) { - heatToToscaTranslator.addManifest(MANIFEST_NAME, new String(fileContent)); - } else { - heatToToscaTranslator.addFile(file.getName(), fileContent); - } - } - - TranslatorOutput translatorOutput = heatToToscaTranslator.translate(); - Assert.assertNotNull(translatorOutput); - File file = new File("Outputs.zip"); - FileOutputStream fos = new FileOutputStream(file); - fos.write(translatorOutput.getTranslationContent()); - fos.close(); - - }*/ - - } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/parameters/HeatParameterConversionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/parameters/HeatParameterConversionTest.java index 4feef0e094..5f2c3691c2 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/parameters/HeatParameterConversionTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/parameters/HeatParameterConversionTest.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.parameters; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class HeatParameterConversionTest extends BaseResourceTranslationTest { @@ -15,40 +35,4 @@ public class HeatParameterConversionTest extends BaseResourceTranslationTest { testTranslation(); } - - /* - - private static final String MANIFEST_NAME = "MANIFEST.json"; - - @Test - public void testTranslate_parameters() throws IOException { - - - - HeatToToscaTranslator heatToToscaTranslator = HeatToToscaTranslatorFactory.getInstance().createInterface(); - URL url = this.getClass().getResource("/mock/heat/parameters"); - File manifestFile = new File(url.getPath()); - File[] files = manifestFile.listFiles(); - FileInputStream fis; - byte[] fileContent; - for (File file : files) { - fis = new FileInputStream(file); - fileContent = FileUtils.toByteArray(fis); - if (file.getName().equals(MANIFEST_NAME)) { - heatToToscaTranslator.addManifest(MANIFEST_NAME, new String(fileContent)); - } else { - heatToToscaTranslator.addFile(file.getName(), fileContent); - } - } - - TranslatorOutput translatorOutput = heatToToscaTranslator.translate(); - Assert.assertNotNull(translatorOutput); - File file = new File("Parameters.zip"); - FileOutputStream fos = new FileOutputStream(file); - fos.write(translatorOutput.getTranslationContent()); - fos.close(); - - } - */ - } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/ContrailNetworkRuleTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/ContrailNetworkRuleTest.java index f8b3022155..b4ae36d289 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/ContrailNetworkRuleTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/ContrailNetworkRuleTest.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.resources; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class ContrailNetworkRuleTest extends BaseResourceTranslationTest { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSContrailVirtualNetworkTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSContrailVirtualNetworkTest.java index b1305c3b2c..0b55173c6e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSContrailVirtualNetworkTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSContrailVirtualNetworkTest.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.resources; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class OSContrailVirtualNetworkTest extends BaseResourceTranslationTest { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNeutronNetTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNeutronNetTest.java index 3b312a804d..f5568e3fb6 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNeutronNetTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNeutronNetTest.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.resources; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class OSNeutronNetTest extends BaseResourceTranslationTest { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNovaServerTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNovaServerTest.java index 6d194ea220..ebb34503bb 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNovaServerTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/resources/OSNovaServerTest.java @@ -1,17 +1,62 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.resources; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_PORT_POSITIVE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_VOLUME_POSITIVE; + +import org.junit.Before; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; + +import java.io.IOException; public class OSNovaServerTest extends BaseResourceTranslationTest { - { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslate() throws Exception { inputFilesPath = "/mock/heat/resources/OS_Nova_Server/inputs"; outputFilesPath = "/mock/heat/resources/OS_Nova_Server/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_VOLUME, + TEST_VOLUME_POSITIVE); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_PORT, + TEST_PORT_POSITIVE); } @Test - public void testTranslate() throws Exception { + public void testTranslateWithOnlyPorts() throws Exception { + inputFilesPath = "/mock/heat/resources/Port/inputfiles"; + outputFilesPath = "/mock/heat/resources/Port/expectedoutputfiles"; + initTranslatorAndTranslate(); testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_PORT, + TEST_PORT_POSITIVE); } } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/sharedresource/HeatSharedResourceTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/sharedresource/HeatSharedResourceTest.java index 2395fa00db..d518e9ce11 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/sharedresource/HeatSharedResourceTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/impl/heattotosca/sharedresource/HeatSharedResourceTest.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.impl.heattotosca.sharedresource; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class HeatSharedResourceTest extends BaseResourceTranslationTest { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationServiceTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationServiceTest.java new file mode 100644 index 0000000000..61777a6586 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationServiceTest.java @@ -0,0 +1,1990 @@ +package org.openecomp.sdc.translator.services.heattotosca; + +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.*; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.ToscaConstants; +import org.openecomp.sdc.translator.TestUtils; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionMode; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData; + +import java.io.IOException; +import java.util.*; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +/** + * Created by TALIO on 3/7/2017. + */ +public class ConsolidationServiceTest { + + @Spy + private TranslationContext translationContext = new TranslationContext(); + private static String mainST = "MainServiceTemplate.yaml"; + + @Mock + private UnifiedCompositionService unifiedCompositionServiceMock; + + @Captor + private ArgumentCaptor<List<UnifiedCompositionData>> unifiedModelListArg; + @Captor + private ArgumentCaptor<UnifiedCompositionMode> unifiedCompositionModeArg; + + @InjectMocks + private ConsolidationService consolidationService; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testConsolidationValidPreCondition() throws IOException { + + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel( + "/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/valid_pre_condition/", null, + null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, + consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testConsolidationFalsePreConditionOneComputeNode() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/one_compute_node/", null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testConsolidationFalsePreConditionMoreThanOnePortPerType() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/more_than_one_port/", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + + TestUtils.initPortConsolidationData(mainST, consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testConsolidationFalsePreConditionDifferentPortTypesBetweenComputes() + throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_port_types", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + + } + + @Test + public void testConsolidationResultTrueWithMoreThanTwoCompute() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testConsolidationResultFalseWithMoreThanTwoComputeOneIsDiff() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testConsolidationResultFalseForTwoTypesOfComputeWithOneInstanceEach() + throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.cmaui"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData + (mainST, computeNodeTypeName1, consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData + (mainST, computeNodeTypeName2, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName1, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName2, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.SingleSubstitution, UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testConsolidationValidForTwoSimilarComputeAndFalseForSingleCompute() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.cmaui"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_two_similar_one_diff", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName1, consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName2, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName1, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName1, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName2, "server_ps03", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList( + UnifiedCompositionMode.ScalingInstances, UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testValidComputeAndPortConsolidation() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testFalseComputeConsolidationForTwoSimilarImageNamesAndOneDiff() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.pd_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_image_name_diff", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData( + mainST, computeNodeTypeName1, consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData( + mainST, computeNodeTypeName2, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName1, "server_ps01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName1, "server_ps02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName1, "server_ps03", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName2, "server_pd01", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName2, "server_pd02", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName2, "server_pd03", + null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance, UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testFalseComputeConsolidationForTwoSimilarFlavorNamesAndOneDiff() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_flavor_name_diff", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "sm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testFalsePortConsolidationForTwoPortsWithFixedIpsAndOneWithout() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_fixed_ips", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testFalsePortConsolidationForTwoPortsWithAddressPairsAndOneWithout() + throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_allowed_address_pairs", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testFalsePortConsolidationForTwoPortsWithMacAddressAndOneWithout() + throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_mac_address", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + null, null, null, null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testValidPortConsolidationForPortsWithNoneOfTheCheckedProperties() + throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/ports_with_none_of_the_properties", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", null, null, null, null, null, null, + portTypeToIdList, consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testComputeRelationsSimilarBetweenComputeNodes() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_with_same_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), Arrays.asList("cmaui_volume"), + Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testNodesInRelationsDiffBetweenThreeComputes() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), + null,null , + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_2"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null, + consolidationData); + + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testNodesOutRelationsDiffBetweenThreeComputes() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume_1"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null, + consolidationData); + + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testVolumeRelationsDiffBetweenThreeComputes() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume_1"), Arrays.asList("group_id1"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null, + consolidationData); + + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testGroupRelationsDiffBetweenThreeComputes() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_2"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null, + consolidationData); + + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testPortConsolidationDataRelationsSimilar() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testNodesInRelationsDiffBetweenThreePortConsolidationDatas() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_2"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testNodesOutRelationsDiffBetweenThreePortConsolidationDatas() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_2"), Arrays.asList("group_id_1"), null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testGroupIdsRelationsDiffBetweenThreePortConsolidationDatas() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_3"), null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testValidConsolidationForComputesWithValidGetAttr() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("node_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("node_2"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("node_3"), null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testInvalidConsolidationForComputesWithGetAttrForEachOther() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("server_ps02"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("node_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("node_2"), null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), null, null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testValidConsolidationForPortsWithValidGetAttr() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + null, null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + List<String> portNodeTemplateIds = + Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3"); + List<List<String>> nodesConnectedInIds = + Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1")); + List<List<String>> nodesConnectedOutIds = + Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1")); + List<List<String>> getAttrInIds = + Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("get_attr_3")); + List<List<String>> groupIds = + Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2")); + List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null); + + TestUtils.updateMultiplePortConsolidationDatas( + mainST, portNodeTemplateIds,nodesConnectedInIds, nodesConnectedOutIds, groupIds, + getAttrInIds, getAttrOut, consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testInvalidConsolidationForPortsWithGetAttrInForEachOther() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation" + + "/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("node_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("node_2"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("node_3"), null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + List<String> portNodeTemplateIds = + Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3"); + List<List<String>> nodesConnectedInIds = + Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1")); + List<List<String>> nodesConnectedOutIds = + Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1")); + List<List<String>> getAttrInIds = + Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("cm01_port_1")); + List<List<String>> groupIds = + Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2")); + List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null); + + TestUtils.updateMultiplePortConsolidationDatas( + mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds, + getAttrInIds, getAttrOut, consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.CatalogInstance); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testValidConsolidationForComputesWithSamePortTypesPointingByGetAttrIn() throws + IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_2"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_3"), null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + List<String> portNodeTemplateIds = + Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3"); + List<List<String>> nodesConnectedInIds = + Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1")); + List<List<String>> nodesConnectedOutIds = + Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1")); + List<List<String>> getAttrInIds = + Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("get_attr_3")); + List<List<String>> groupIds = + Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2")); + List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null); + + TestUtils.updateMultiplePortConsolidationDatas( + mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds, + getAttrInIds, getAttrOut, consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testValidGetAttrOutFromComputes() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)), + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)), + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)), + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("sm01_port_2"), null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_2", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("sm01_port_1"), null, + consolidationData); + TestUtils.updatePortConsolidationData(mainST, "cm01_port_3", + Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), + Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("rm01_port_1"), null, + consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testInValidGetAttrOutFromComputesPortTypeDifferent() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)), + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)), + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_1", getAttrFuncData)), + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + + List<String> portNodeTemplateIds = + Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2", + "sm01_port_3"); + List<List<String>> nodesConnectedInIds = + Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList + ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1")); + List<List<String>> nodesConnectedOutIds = + Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList + ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1")); + List<List<String>> getAttrInIds = + Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList + ("get_attr_3"), Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("get_attr_3")); + List<List<String>> groupIds = + Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2")); + List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null, null, + null, null); + + TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds, + nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut, consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testValidGetAttrOutFromPorts() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + + GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name"); + List<String> portNodeTemplateIds = + Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2", + "sm01_port_3"); + List<List<String>> nodesConnectedInIds = + Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList + ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1")); + List<List<String>> nodesConnectedOutIds = + Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList + ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1")); + List<List<String>> getAttrInIds = + Arrays.asList(null, null, null, null, null, null); + List<List<String>> groupIds = + Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2")); + List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList( + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_1", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_2", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_3", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_2", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_3", getAttrFuncData))); + + TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds, + nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut, consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.ScalingInstances); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testInvalidGetAttrOutFromPorts() throws IOException { + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server"; + ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations", + null, null); + + TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList + ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), null, + portTypeToIdList, + consolidationData); + + portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3")); + portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3")); + TestUtils.updateComputeTemplateConsolidationData( + mainST, + computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), + Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), + Arrays.asList("cm01_port_1"), null, + portTypeToIdList, + consolidationData); + + TestUtils.initPortConsolidationData(mainST, consolidationData); + + GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name"); + List<String> portNodeTemplateIds = + Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2", + "sm01_port_3"); + List<List<String>> nodesConnectedInIds = + Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList + ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1")); + List<List<String>> nodesConnectedOutIds = + Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList + ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1")); + List<List<String>> getAttrInIds = + Arrays.asList(null, null, null, null, null, null); + List<List<String>> groupIds = + Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", + "group_id_2"), Arrays.asList("group_id_1", "group_id_2")); + List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList( + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("server_ps01", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("server_ps01", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_3", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_2", getAttrFuncData)), + Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_3", getAttrFuncData))); + + TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds, + nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut, consolidationData); + + translationContext.setConsolidationData(consolidationData); + List<UnifiedCompositionMode> expectedUnifiedModes = + Arrays.asList(UnifiedCompositionMode.SingleSubstitution); + verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel); + } + + @Test + public void testSubstitutionConsolidationPreConditionTrue() throws IOException { + translationContext = new TranslationContext(); + String mainSTName = "MainServiceTemplate.yaml"; + String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml"; + + ConsolidationData consolidationData = new ConsolidationData(); + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" + + ".heat.pcm_server", "pcm_server", consolidationData); + + translationContext.setConsolidationData(consolidationData); + + addMockServiceTemplateToContext(mainSTName, "Main"); + addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1"); + + verifySubstitutionServiceTemplateConsolidation + (1, translationContext.getTranslatedServiceTemplates().get(mainSTName), + translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), + UnifiedCompositionMode.NestedSingleCompute); + } + + @Test + public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeType() throws IOException { + translationContext = new TranslationContext(); + String mainSTName = "MainServiceTemplate.yaml"; + String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml"; + + ConsolidationData consolidationData = new ConsolidationData(); + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes" + + ".heat.pcm_server", "server_pcm_001", consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_oam_001"), consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" + + ".oam_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam_001", consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" + + ".oam_server", consolidationData); + + translationContext.setConsolidationData(consolidationData); + + addMockServiceTemplateToContext(mainSTName, "Main"); + addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1"); + + verifySubstitutionServiceTemplateConsolidation + (0, translationContext.getTranslatedServiceTemplates().get(mainSTName), + translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), UnifiedCompositionMode.NestedSingleCompute); + } + + @Test + public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeOfSameType() throws IOException { + translationContext = new TranslationContext(); + String mainSTName = "MainServiceTemplate.yaml"; + String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml"; + + ConsolidationData consolidationData = new ConsolidationData(); + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" + + ".heat.pcm_server", "pcm_server_1", consolidationData); + + TestUtils.updateNestedConsolidationData(nestedServiceTemplateName, Arrays.asList("server_pcm_002"), + consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" + + ".heat.pcm_server", "pcm_server_2", consolidationData); + + translationContext.setConsolidationData(consolidationData); + + addMockServiceTemplateToContext(mainSTName, "Main"); + addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1"); + + verifySubstitutionServiceTemplateConsolidation + (0, translationContext.getTranslatedServiceTemplates().get(mainSTName), + translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), UnifiedCompositionMode.NestedSingleCompute); + } + + @Test + public void testSubstitutionConsolidationPreConditionFalseNestedInsideNested(){ + translationContext = new TranslationContext(); + String mainSTName = "MainServiceTemplate.yaml"; + String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml"; + + ConsolidationData consolidationData = new ConsolidationData(); + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" + + ".pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" + + ".heat.pcm_server", "pcm_server", consolidationData); + + TestUtils.updateNestedConsolidationData(nestedServiceTemplateName, Arrays.asList("nested_resource"), consolidationData); + + translationContext.setConsolidationData(consolidationData); + + addMockServiceTemplateToContext(mainSTName, "Main"); + addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1"); + + verifySubstitutionServiceTemplateConsolidation + (0, translationContext.getTranslatedServiceTemplates().get(mainSTName), + translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), UnifiedCompositionMode.NestedSingleCompute); + } + + + private void verifyMainServiceTemplateConsolidation(int times, + List<UnifiedCompositionMode> expectedUnifiedCompositionModes, + ToscaServiceModel toscaServiceModel) { + consolidationService.mainServiceTemplateConsolidation(toscaServiceModel.getServiceTemplates().get(mainST), translationContext); + + ServiceTemplate mainServiceTemplate = toscaServiceModel.getServiceTemplates().get(mainST); + verify(unifiedCompositionServiceMock, times(times)) + .createUnifiedComposition( + eq(mainServiceTemplate), + any(), + unifiedModelListArg.capture(), + unifiedCompositionModeArg.capture(), + eq(translationContext)); + + List<UnifiedCompositionMode> actualUnifiedCompositionModes = unifiedCompositionModeArg.getAllValues(); + Assert.assertEquals(expectedUnifiedCompositionModes, actualUnifiedCompositionModes); + } + + private void verifySubstitutionServiceTemplateConsolidation(int times, + ServiceTemplate mainST, + ServiceTemplate nestedST, UnifiedCompositionMode expectedMode){ + consolidationService.substitutionServiceTemplateConsolidation(null, mainST, + nestedST, translationContext); + + if(times == 0){ + verify(unifiedCompositionServiceMock, never()). + createUnifiedComposition( + any(), + any(), + any(), + any(), + eq(translationContext)); + }else { + verify(unifiedCompositionServiceMock, times(times)). + createUnifiedComposition( + eq(mainST), + eq(nestedST), + unifiedModelListArg.capture(), + unifiedCompositionModeArg.capture(), + eq(translationContext)); + + Assert.assertEquals(expectedMode, unifiedCompositionModeArg.getValue()); + } + + } + + private void addMockServiceTemplateToContext(String serviceTemplateFileName, String templateName) { + ServiceTemplate serviceTemplate = new ServiceTemplate(); + Map<String, String> metadata = new HashMap<>(); + metadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, templateName); + serviceTemplate.setMetadata(metadata); + translationContext.getTranslatedServiceTemplates() + .put(serviceTemplateFileName, serviceTemplate); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/GlobalTypesGeneratorTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/GlobalTypesGeneratorTest.java deleted file mode 100644 index 6afa9c1ea2..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/GlobalTypesGeneratorTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca; - -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; -import org.junit.Test; - -public class GlobalTypesGeneratorTest extends BaseResourceTranslationTest { - - { - inputFilesPath = "/mock/services/heattotosca/global_types/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/global_types/expectedoutputfiles"; - } - - @Test - public void testTranslate() throws Exception { - testTranslation(); - } - -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java new file mode 100644 index 0000000000..5b57a9ac37 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java @@ -0,0 +1,1640 @@ +package org.openecomp.sdc.translator.services.heattotosca; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; + +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; +import org.openecomp.core.utilities.yaml.YamlUtil; +import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.DataModelUtil; +import org.openecomp.sdc.tosca.services.yamlutil.ToscaExtensionYamlUtil; +import org.openecomp.sdc.translator.TestUtils; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedSubstitutionData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*; +import org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition.UnifiedCompositionNestedSingleCompute; +import org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition.UnifiedCompositionSingleSubstitution; + +import java.io.IOException; +import java.net.URL; +import java.util.*; + +public class UnifiedCompositionServiceTest { + @InjectMocks + @Spy + UnifiedCompositionService unifiedCompositionService; + @Spy + TranslationContext context; + + String inputServiceTemplatesPath; + String outputServiceTemplatesPath; + Map<String, ServiceTemplate> inputServiceTemplates; + Map<String, ServiceTemplate> expectedOutserviceTemplates; + private static String mainSTName = "MainServiceTemplate.yaml"; + private static String substitutionST = "SubstitutionServiceTemplate.yaml"; + private static String globalSubstitutionST = "GlobalSubstitutionTypesServiceTemplate.yaml"; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + } + + //todo + @Test + public void createUnifiedComposition() throws Exception { + + } + + @Test + public void createSubstitutionStNoConsolidationData() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/out"; + + loadInputAndOutputData(); + ServiceTemplate expectedServiceTemplate = + TestUtils.loadServiceTemplate(outputServiceTemplatesPath); + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(false, substitutionServiceTemplate.isPresent()); + } + + @Test + public void createSubstitutionStNoOutputParamAndDuplicatePortType() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/out"; + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData = + createCompositionData("FSB1_template", portTypeToIdList); + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + substitutionServiceTemplate + .ifPresent( + subServiceTemplate -> checkSTResults(expectedOutserviceTemplates, + subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null)); + } + + @Test + public void createSubstitutionStWithOutputParamNoConsolidation() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate" + + "/WithOutputParameters/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/noConsolidation/out"; + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData = + createCompositionData("FSB1_template", portTypeToIdList); + addGetAttrForCompute(unifiedCompositionData); + addGetAttrForPort(unifiedCompositionData); + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + substitutionServiceTemplate + .ifPresent( + subServiceTemplate -> checkSTResults(expectedOutserviceTemplates, + subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null)); + } + + @Test + public void createSubstitutionStWithOutputParamWithConsolidation() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/consolidation/out"; + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>(); + portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData1 = + createCompositionData("FSB1_template", portTypeToIdList1); + addGetAttrForCompute(unifiedCompositionData1); + addGetAttrForPort(unifiedCompositionData1); + unifiedCompositionDataList.add(unifiedCompositionData1); + + List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>(); + portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1")); + + UnifiedCompositionData unifiedCompositionData2 = + createCompositionData("FSB2_template", portTypeToIdList2); + addGetAttrForCompute2(unifiedCompositionData2); + addGetAttrForPort2(unifiedCompositionData2); + unifiedCompositionDataList.add(unifiedCompositionData2); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + substitutionServiceTemplate + .ifPresent( + subServiceTemplate -> checkSTResults(expectedOutserviceTemplates, + subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null)); + } + + @Test + public void createSubstitutionStNoPorts() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoPorts/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoPorts/out"; + + loadInputAndOutputData(); + + UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); + String computeNodeTemplateId = "FSB1_template"; + unifiedCompositionData.setComputeTemplateConsolidationData( + TestUtils.createComputeTemplateConsolidationData(computeNodeTemplateId, null, null)); + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + substitutionServiceTemplate + .ifPresent( + subServiceTemplate -> checkSTResults(expectedOutserviceTemplates, + subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null)); + } + + + @Test + public void createSubstitutionStWithIndex() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithIndex/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithIndex/out"; + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData = + createCompositionData("FSB1_template", portTypeToIdList); + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, 2); + assertEquals(true, substitutionServiceTemplate.isPresent()); + substitutionServiceTemplate + .ifPresent( + subServiceTemplate -> checkSTResults(expectedOutserviceTemplates, + subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null)); + } + + + @Test + public void createAbstractSubstituteOneComputeMultiplePortsDifferentTypesTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsDiffType/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsDiffType/out"; + + loadInputAndOutputData(); + + UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + addPortDataToCompositionData(portTypeToIdList, data); + + List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>(); + unifiedCompositionDataList.add(data); + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + if (substitutionServiceTemplate.isPresent()) { + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate( + inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(), + unifiedCompositionDataList, + context, null); + validateAbstractSubstitute(); + } + } + + + @Test + public void createAbstractSubstituteOneComputeMultiplePortsSameTypesTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsSameType/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsSameType/out"; + + loadInputAndOutputData(); + + UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + addPortDataToCompositionData(portTypeToIdList, data); + + List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>(); + unifiedCompositionDataList.add(data); + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + + assertEquals(true, substitutionServiceTemplate.isPresent()); + if (substitutionServiceTemplate.isPresent()) { + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate( + inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(), + unifiedCompositionDataList, + context, null); + validateAbstractSubstitute(); + } + } + + + @Test + public void createAbstractSubstituteTwoComputesMultiplePorts() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/twoComputesMultiplePorts/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/twoComputesMultiplePorts/out"; + + loadInputAndOutputData(); + List<UnifiedCompositionData> unifiedCompositionDataList = + createAbstractSubstituteCompositionDataComputeAndPort(); + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + if (substitutionServiceTemplate.isPresent()) { + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + validateAbstractSubstitute(); + } + } + + + @Test + public void updNodesConnectedOutWithConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/consolidation/out"; + + loadInputAndOutputData(); + List<UnifiedCompositionData> unifiedCompositionDataList = + createAbstractSubstituteCompositionDataComputeAndPort(); + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + if (substitutionServiceTemplate.isPresent()) { + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + } + + private void validateAbstractSubstitute() { + YamlUtil yamlUtil = new YamlUtil(); + assertEquals(yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainSTName)), yamlUtil + .objectToYaml(inputServiceTemplates.get(mainSTName))); + } + + + @Test + public void updNodesConnectedOutNoConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/noConsolidation/out"; + + loadInputAndOutputData(); + + UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + addPortDataToCompositionData(portTypeToIdList, data); + + List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>(); + unifiedCompositionDataList.add(data); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + if (substitutionServiceTemplate.isPresent()) { + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + } + + + @Test + public void updNodesConnectedInNoConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/noConsolidation/out"; + + loadInputAndOutputData(); + + UnifiedCompositionData data = createComputeUnifiedCompositionData("QRouter"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("cdr_network_port", "cdr_network_port")); + portTypeToIdList + .add(new ImmutablePair<>("oam_private_net_network_port", "oam_private_net_network_port")); + addPortDataToCompositionData(portTypeToIdList, data); + + List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>(); + unifiedCompositionDataList.add(data); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + + + @Test + public void updNodesConnectedInWithConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/consolidation/out"; + + loadInputAndOutputData(); + + List<UnifiedCompositionData> unifiedCompositionDataList = + createAbstractSubstituteCompositionDataComputeAndPort(); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + + + @Test + public void updVolumesNoConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updVolumes/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updVolumes/noConsolidation/out"; + + loadInputAndOutputData(); + + UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + addPortDataToCompositionData(portTypeToIdList, data); + + List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>(); + unifiedCompositionDataList.add(data); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + + + @Test + public void updVolumesWithConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updVolumes/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updVolumes/consolidation/out"; + + loadInputAndOutputData(); + List<UnifiedCompositionData> unifiedCompositionDataList = + createAbstractSubstituteCompositionDataComputeAndPort(); + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + + + @Test + public void updGroupsNoConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/noConsolidation/out"; + + loadInputAndOutputData(); + + UnifiedCompositionData data = createComputeUnifiedCompositionData("server_smp1"); + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("port", "port1")); + portTypeToIdList.add(new ImmutablePair<>("port", "port2")); + addPortDataToCompositionData(portTypeToIdList, data); + + //Add groups + List<String> computeGroupIdList = + TestUtils.getGroupsForNode(inputServiceTemplates.get(mainSTName), "server_smp1"); + data.getComputeTemplateConsolidationData().setGroupIds(computeGroupIdList); + + List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>(); + unifiedCompositionDataList.add(data); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + + + @Test + public void updGroupsWithConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/consolidation/out"; + + loadInputAndOutputData(); + + List<UnifiedCompositionData> unifiedCompositionDataList = + createAbstractSubstituteCompositionDataComputeAndPort(); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList + , context, null); + + String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate + (inputServiceTemplates.get(mainSTName), + substitutionServiceTemplate.get(), unifiedCompositionDataList, context, null); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + validateAbstractSubstitute(); + } + + @Test + public void updOutParamGetAttrInNoConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/noConsolidation/out"; + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData = + createCompositionData("FSB1_template", portTypeToIdList); + addOutputGetAttrInForComputeNoConsolidation(unifiedCompositionData); + addOutputGetAttrInForPortNoConsolidation(unifiedCompositionData); + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity + (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context); + Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(), + anyString()); + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void updOutParamGetAttrInWithConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/consolidation/out"; + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>(); + portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData1 = + createCompositionData("FSB1_template", portTypeToIdList1); + addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1); + addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1); + unifiedCompositionDataList.add(unifiedCompositionData1); + + List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>(); + portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1")); + + UnifiedCompositionData unifiedCompositionData2 = + createCompositionData("FSB2_template", portTypeToIdList2); + unifiedCompositionDataList.add(unifiedCompositionData2); + addOutputGetAttrInForCompute2WithConsolidation(unifiedCompositionData2); + addOutputGetAttrInForPortWithConsolidation2(unifiedCompositionData2); + + Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity + (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context); + Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(), + anyString()); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void updNodeGetAttrInNoConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/noConsolidation/out"; + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData = + createCompositionData("FSB1_template", portTypeToIdList); + addGetAttrForCompute(unifiedCompositionData); + addGetAttrForPort(unifiedCompositionData); + addGetAttrForPortInnerUC(unifiedCompositionData); + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity + (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context); + Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(), + anyString()); + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void updNodeGetAttrInWithConsolidationTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/consolidation/out"; + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>(); + portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData1 = + createCompositionData("FSB1_template", portTypeToIdList1); + addGetAttrForCompute(unifiedCompositionData1); + addGetAttrForPort(unifiedCompositionData1); + unifiedCompositionDataList.add(unifiedCompositionData1); + + List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>(); + portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1")); + + UnifiedCompositionData unifiedCompositionData2 = + createCompositionData("FSB2_template", portTypeToIdList2); + addGetAttrForCompute2(unifiedCompositionData2); + addGetAttrForPort2(unifiedCompositionData2); + unifiedCompositionDataList.add(unifiedCompositionData2); + + + Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity + (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context); + Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(), + anyString()); + + unifiedCompositionService + .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + + @Test + public void updNodesGetAttrFromInnerNodesTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/noConsolidation/out"; + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData = + createCompositionData("FSB1_template", portTypeToIdList); + addGetAttrForCompute(unifiedCompositionData); + addGetAttrForPort(unifiedCompositionData); + addGetAttrForPortInnerUC(unifiedCompositionData); + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + + Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(), + anyString()); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + substitutionServiceTemplate + .ifPresent( + subServiceTemplate -> checkSTResults(expectedOutserviceTemplates, + subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null)); + } + + + @Test + public void updNodesGetAttrFromConsolidationNodesTest() throws Exception { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/out"; + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>(); + portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData1 = + createCompositionData("FSB1_template", portTypeToIdList1); + addGetAttrForCompute(unifiedCompositionData1); + addGetAttrForPort(unifiedCompositionData1); + unifiedCompositionDataList.add(unifiedCompositionData1); + + List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>(); + portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1")); + + UnifiedCompositionData unifiedCompositionData2 = + createCompositionData("FSB2_template", portTypeToIdList2); + addGetAttrForCompute2(unifiedCompositionData2); + addGetAttrForPort2(unifiedCompositionData2); + unifiedCompositionDataList.add(unifiedCompositionData2); + + Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService + .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, + context, null); + assertEquals(true, substitutionServiceTemplate.isPresent()); + substitutionServiceTemplate + .ifPresent( + subServiceTemplate -> checkSTResults(expectedOutserviceTemplates, + subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null)); + } + + @Test + public void cleanMainServiceTemplateTestNoConsolidation() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/cleanMainSt/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/cleanMainSt/noConsolidation/out"; + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM")); + + loadInputAndOutputData(); + UnifiedCompositionData unifiedCompositionData = + createCompositionData("FSB1_template", portTypeToIdList); + addGetAttrForCompute(unifiedCompositionData); + addGetAttrForPort(unifiedCompositionData); + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + unifiedCompositionDataList.add(unifiedCompositionData); + + NodeTemplate abstractNodeTemplate = getMockNode( + "/mock/services/heattotosca/unifiedComposition/cleanMainSt/mockAbstractNodeTemplate.yaml"); + inputServiceTemplates.get(mainSTName).getTopology_template().getNode_templates() + .put("FSB1", abstractNodeTemplate); + + Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(), + anyString()); + + unifiedCompositionService. + cleanUnifiedCompositionEntities(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void cleanMainServiceTemplateTestWithConsolidation() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/cleanMainSt/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/cleanMainSt/consolidation/out"; + + loadInputAndOutputData(); + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>(); + portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + + UnifiedCompositionData unifiedCompositionData1 = + createCompositionData("FSB1_template", portTypeToIdList1); + addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1); + addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1); + unifiedCompositionDataList.add(unifiedCompositionData1); + + List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>(); + portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1")); + + UnifiedCompositionData unifiedCompositionData2 = + createCompositionData("FSB2_template", portTypeToIdList2); + addOutputGetAttrInForCompute2WithConsolidation(unifiedCompositionData2); + addOutputGetAttrInForPortWithConsolidation2(unifiedCompositionData2); + unifiedCompositionDataList.add(unifiedCompositionData2); + + NodeTemplate abstractNodeTemplate = getMockNode( + "/mock/services/heattotosca/unifiedComposition/cleanMainSt/mockAbstractNodeTemplate.yaml"); + inputServiceTemplates.get(mainSTName).getTopology_template().getNode_templates() + .put("FSB1", abstractNodeTemplate); + + Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(), + anyString()); + + unifiedCompositionService. + cleanUnifiedCompositionEntities(inputServiceTemplates.get(mainSTName), + unifiedCompositionDataList, context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void updateNewAbstractNodeTemplateNoConsolidation() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/noConsolidation/out"; + + loadInputAndOutputData(); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + + NodeTemplate cleanedComputeNodeTemplate = + getMockNode( + "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/mockComputeNodeTemplate.yaml"); + + + context.setConsolidationData( + createConsolidationData(Arrays.asList("FSB1_template"), portTypeToIdList)); + context.addCleanedNodeTemplate(mainSTName, "FSB1_template", + UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate); + context.addCleanedNodeTemplate(mainSTName, "FSB1_Internal1", + UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + context.addCleanedNodeTemplate(mainSTName, "FSB1_Internal2", + UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + + setUnifiedCompositionData(Arrays.asList("FSB1_template", "FSB1_Internal1", "FSB1_Internal2")); + + unifiedCompositionService + .updateUnifiedAbstractNodesConnectivity(inputServiceTemplates.get(mainSTName), context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void updateNewAbstractNodeTemplateWithConsolidation() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/consolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/consolidation/out"; + + loadInputAndOutputData(); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1")); + + NodeTemplate cleanedComputeNodeTemplate = + getMockNode( + "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/mockComputeNodeTemplate.yaml"); + + + context.setConsolidationData( + createConsolidationData(Arrays.asList("FSB1_template_1", "FSB1_template_2"), + portTypeToIdList)); + context.addCleanedNodeTemplate(mainSTName, "FSB1_template_1", + UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate); + context.addCleanedNodeTemplate(mainSTName, "FSB1_template_2", + UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate); + context.addCleanedNodeTemplate(mainSTName, "FSB1_Internal1", + UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + context.addCleanedNodeTemplate(mainSTName, "FSB2_Internal1", + UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + + setUnifiedCompositionData( + Arrays.asList("FSB1_template_1", "FSB1_template_2", "FSB1_Internal1", "FSB2_Internal1")); + + unifiedCompositionService + .updateUnifiedAbstractNodesConnectivity(inputServiceTemplates.get(mainSTName), context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void testThreeNovaOfSameTypePreConditionFalse() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern1b/noConsolidation/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern1b/noConsolidation/out"; + + loadInputAndOutputData(); + + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>(); + portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1")); + portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + + UnifiedCompositionData unifiedCompositionData1 = + createCompositionData("FSB1_template", portTypeToIdList1); + addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1); + addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1); + unifiedCompositionDataList.add(unifiedCompositionData1); + + UnifiedCompositionData unifiedCompositionData2 = + createCompositionData("FSB2_template", portTypeToIdList1); + addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData2); + addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData2); + unifiedCompositionDataList.add(unifiedCompositionData2); + + portTypeToIdList1.remove(1); + UnifiedCompositionData unifiedCompositionData3 = + createCompositionData("FSB3_template", portTypeToIdList1); + addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData3); + addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData3); + unifiedCompositionDataList.add(unifiedCompositionData3); + + UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution = + new UnifiedCompositionSingleSubstitution(); + unifiedCompositionSingleSubstitution + .createUnifiedComposition(inputServiceTemplates.get(mainSTName), null, + unifiedCompositionDataList, context); + + checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName)); + } + + @Test + public void testUnifiedNestedCompositionOneComputeInNested() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/oneNestedNode/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/oneNestedNode/out"; + + loadInputAndOutputData(); + + ConsolidationData consolidationData = new ConsolidationData(); + String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml"; + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), + consolidationData); + + TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName, + "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName, + "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData); + + context.setConsolidationData(consolidationData); + context.getTranslatedServiceTemplates() + .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, + inputServiceTemplates.get(globalSubstitutionST)); + context.getTranslatedServiceTemplates() + .put(nestedFileName, inputServiceTemplates.get(nestedFileName)); + context.getTranslatedServiceTemplates() + .put(mainSTName, inputServiceTemplates.get(mainSTName)); + + List<UnifiedCompositionData> unifiedCompositionList = createUnifiedCompositionListOnlyNested("server_pcm_001"); + unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(mainSTName), + inputServiceTemplates.get(nestedFileName), unifiedCompositionList, context); + + checkSTResults(expectedOutserviceTemplates, nestedFileName, + context.getTranslatedServiceTemplates().get(nestedFileName), + context.getTranslatedServiceTemplates() + .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null); + } + + @Test + public void testTwoNestedWithOneCompute() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/twoNestedWithOneCompute/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/twoNestedWithOneCompute/out"; + + loadInputAndOutputData(); + + ConsolidationData consolidationData = new ConsolidationData(); + String nestedFileName1 = "nested-pcm_v0.1ServiceTemplate.yaml"; + String nestedFileName2 = "nested-oam_v0.1ServiceTemplate.yaml"; + + TestUtils.updateNestedConsolidationData(mainSTName, + Arrays.asList("server_pcm_001", "server_oam_001"), consolidationData); + + TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName1, + "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName1, + "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData); + TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName2, + "org.openecomp.resource.vfc.nodes.heat.oam_server", consolidationData); + TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName2, + "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam", consolidationData); + + context.setConsolidationData(consolidationData); + context.getTranslatedServiceTemplates() + .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, + inputServiceTemplates.get(globalSubstitutionST)); + context.getTranslatedServiceTemplates() + .put(nestedFileName1, inputServiceTemplates.get(nestedFileName1)); + context.getTranslatedServiceTemplates() + .put(nestedFileName2, inputServiceTemplates.get(nestedFileName2)); + context.getTranslatedServiceTemplates() + .put(mainSTName, inputServiceTemplates.get(mainSTName)); + + List<UnifiedCompositionData> unifiedCompositionList = + createUnifiedCompositionListOnlyNested("server_pcm_001"); + unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(mainSTName), + inputServiceTemplates.get(nestedFileName1), unifiedCompositionList, context); + unifiedCompositionList = createUnifiedCompositionListOnlyNested("server_oam_001"); + unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(mainSTName), + inputServiceTemplates.get(nestedFileName2), unifiedCompositionList, context); + + checkSTResults(expectedOutserviceTemplates, nestedFileName1, + context.getTranslatedServiceTemplates().get(nestedFileName1), + context.getTranslatedServiceTemplates() + .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null); + checkSTResults(expectedOutserviceTemplates, nestedFileName2, + context.getTranslatedServiceTemplates().get(nestedFileName2), + null, null); + } + + @Test + public void testNestedCompositionNodesConnectedIn() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesConnectedIn/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesConnectedIn/out"; + + loadInputAndOutputData(); + ConsolidationData consolidationData = new ConsolidationData(); + String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml"; + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), + consolidationData); + context.getTranslatedServiceTemplates() + .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, + inputServiceTemplates.get(globalSubstitutionST)); + context.getTranslatedServiceTemplates() + .put(nestedFileName, inputServiceTemplates.get(nestedFileName)); + context.getTranslatedServiceTemplates() + .put(mainSTName, inputServiceTemplates.get(mainSTName)); + context.addUnifiedNestedNodeTemplateId(mainSTName, "server_pcm_001", "abstract_pcm_server_0"); + + Map<String, List<RequirementAssignmentData>> nodeConnectedInList = + TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(mainSTName), + "dependency"); + List<UnifiedCompositionData> unifiedCompositionList = + createUnifiedCompositionListOnlyNested("server_pcm_001"); + unifiedCompositionList.get(0).getNestedTemplateConsolidationData() + .setNodesConnectedIn(nodeConnectedInList); + + unifiedCompositionService.updNestedCompositionNodesConnectedInConnectivity + (inputServiceTemplates.get(mainSTName), unifiedCompositionList, context); + checkSTResults(expectedOutserviceTemplates, nestedFileName, + context.getTranslatedServiceTemplates().get(nestedFileName), + context.getTranslatedServiceTemplates() + .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context + .getTranslatedServiceTemplates().get(mainSTName)); + } + + + @Test + public void testNestedCompositionNodesGetAttrIn() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesGetAttrIn/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesGetAttrIn/out"; + + loadInputAndOutputData(); + ConsolidationData consolidationData = new ConsolidationData(); + String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml"; + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), + consolidationData); + context.getTranslatedServiceTemplates() + .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, + inputServiceTemplates.get(globalSubstitutionST)); + context.getTranslatedServiceTemplates() + .put(nestedFileName, inputServiceTemplates.get(nestedFileName)); + context.getTranslatedServiceTemplates() + .put(mainSTName, inputServiceTemplates.get(mainSTName)); + context.addUnifiedNestedNodeTemplateId(mainSTName, "server_pcm_001", "abstract_pcm_server_0"); + + Map<String, List<RequirementAssignmentData>> nodeConnectedInList = + TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(mainSTName), + "dependency"); + List<UnifiedCompositionData> unifiedCompositionList = + createUnifiedCompositionListOnlyNested("server_pcm_001"); + addGetAttInUnifiedCompositionData(unifiedCompositionList.get(0) + .getNestedTemplateConsolidationData(), "tenant_id", "oam_net_gw", "packet_mirror_network"); + addGetAttInUnifiedCompositionData(unifiedCompositionList.get(0) + .getNestedTemplateConsolidationData(), "user_data_format", "oam_net_gw", + "server_compute_get_attr_test"); + addGetAttInUnifiedCompositionData(unifiedCompositionList.get(0) + .getNestedTemplateConsolidationData(), "metadata", "server_pcm_id", + "server_compute_get_attr_test"); + unifiedCompositionService.updNestedCompositionNodesGetAttrInConnectivity + (inputServiceTemplates.get(mainSTName), unifiedCompositionList, context); + checkSTResults(expectedOutserviceTemplates, nestedFileName, + context.getTranslatedServiceTemplates().get(nestedFileName), + context.getTranslatedServiceTemplates() + .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context + .getTranslatedServiceTemplates().get(mainSTName)); + } + + @Test + public void testNestedCompositionOutputParamGetAttrIn() throws IOException { + inputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/nestedOutputParamGetAttrIn/in"; + outputServiceTemplatesPath = + "/mock/services/heattotosca/unifiedComposition/pattern4/nestedOutputParamGetAttrIn/out"; + + loadInputAndOutputData(); + ConsolidationData consolidationData = new ConsolidationData(); + String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml"; + TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), + consolidationData); + context.getTranslatedServiceTemplates() + .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, + inputServiceTemplates.get(globalSubstitutionST)); + context.getTranslatedServiceTemplates() + .put(nestedFileName, inputServiceTemplates.get(nestedFileName)); + context.getTranslatedServiceTemplates() + .put(mainSTName, inputServiceTemplates.get(mainSTName)); + context.addUnifiedNestedNodeTemplateId(mainSTName, "server_pcm_001", "abstract_pcm_server_0"); + + Map<String, List<RequirementAssignmentData>> nodeConnectedInList = + TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(mainSTName), + "dependency"); + List<UnifiedCompositionData> unifiedCompositionList = + createUnifiedCompositionListOnlyNested("server_pcm_001"); + addOutputGetAttInUnifiedCompositionData(unifiedCompositionList.get(0) + .getNestedTemplateConsolidationData(), "output_attr_1", "accessIPv4"); + addOutputGetAttInUnifiedCompositionData(unifiedCompositionList.get(0) + .getNestedTemplateConsolidationData(), "output_attr_2", "accessIPv6"); + unifiedCompositionService.updNestedCompositionOutputParamGetAttrInConnectivity + (inputServiceTemplates.get(mainSTName), unifiedCompositionList, context); + checkSTResults(expectedOutserviceTemplates, nestedFileName, + context.getTranslatedServiceTemplates().get(nestedFileName), + context.getTranslatedServiceTemplates() + .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context + .getTranslatedServiceTemplates().get(mainSTName)); + } + + private List<UnifiedCompositionData> createUnifiedCompositionListOnlyNested( + String nestedNodeTemplateId) { + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + + NestedTemplateConsolidationData nestedTemplateConsolidationData = + new NestedTemplateConsolidationData(); + nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId); + UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); + unifiedCompositionData.setNestedTemplateConsolidationData(nestedTemplateConsolidationData); + unifiedCompositionDataList.add(unifiedCompositionData); + + +// for (NestedTemplateConsolidationData nested : nestedConsolidationDatas) { +// UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); +// unifiedCompositionData.setNestedTemplateConsolidationData(nested); +// unifiedCompositionDataList.add(unifiedCompositionData); +// } + + return unifiedCompositionDataList; + } + + private void setUnifiedCompositionData(List<String> nodeTemplateIds) { + UnifiedSubstitutionData unifiedSubstitutionData = + context.getUnifiedSubstitutionData().get(mainSTName) == null ? new UnifiedSubstitutionData() + : context.getUnifiedSubstitutionData().get(mainSTName); + Map<String, String> substitutionAbstractNodeIds = new HashMap<>(); + for (String id : nodeTemplateIds) { + substitutionAbstractNodeIds.put(id, "FSB2"); + } + + substitutionAbstractNodeIds.put("", "FSB1"); + + unifiedSubstitutionData.setNodesRelatedAbstractNode(substitutionAbstractNodeIds); + } + + private void checkSTResults( + Map<String, ServiceTemplate> expectedOutserviceTemplates, + ServiceTemplate substitutionServiceTemplate, + ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) { + YamlUtil yamlUtil = new YamlUtil(); + if (Objects.nonNull(substitutionServiceTemplate)) { + assertEquals("difference substitution service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(substitutionST)), + yamlUtil.objectToYaml(substitutionServiceTemplate)); + } + if (Objects.nonNull(gloablSubstitutionServiceTemplate)) { + assertEquals("difference global substitution service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(globalSubstitutionST)), + yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate)); + } + if (Objects.nonNull(mainServiceTemplate)) { + assertEquals("difference main service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainSTName)), + yamlUtil.objectToYaml(mainServiceTemplate)); + } + } + + private void checkSTResults( + Map<String, ServiceTemplate> expectedOutserviceTemplates, + String nestedSTFileName, ServiceTemplate nestedServiceTemplate, + ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) { + YamlUtil yamlUtil = new YamlUtil(); + + if (Objects.nonNull(nestedServiceTemplate)) { + assertEquals("difference nested service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(nestedSTFileName)), + yamlUtil.objectToYaml(nestedServiceTemplate)); + } + checkSTResults(expectedOutserviceTemplates, null, gloablSubstitutionServiceTemplate, + mainServiceTemplate); + } + + + private void loadInputAndOutputData() throws IOException { + inputServiceTemplates = new HashMap<>(); + TestUtils.loadServiceTemplates(inputServiceTemplatesPath, new ToscaExtensionYamlUtil(), + inputServiceTemplates); + expectedOutserviceTemplates = new HashMap<>(); + TestUtils.loadServiceTemplates(outputServiceTemplatesPath, new ToscaExtensionYamlUtil(), + expectedOutserviceTemplates); + } + + + private void addGetAttInUnifiedCompositionData(EntityConsolidationData entityConsolidationData, + String propertyName, String attributeName, + String nodeTemplateId) { + GetAttrFuncData getAttrFuncData = new GetAttrFuncData(); + getAttrFuncData.setAttributeName(attributeName); + getAttrFuncData.setFieldName(propertyName); + entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData); + } + + private void addOutputGetAttInUnifiedCompositionData( + EntityConsolidationData entityConsolidationData, + String outParamName, String attributeName) { + GetAttrFuncData getAttrFuncData = new GetAttrFuncData(); + getAttrFuncData.setAttributeName(attributeName); + getAttrFuncData.setFieldName(outParamName); + entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData); + } + + private ConsolidationData createConsolidationData(List<String> computeNodeIds, + List<Pair<String, String>> portTypeToIdList) { + + ConsolidationData consolidationData = new ConsolidationData(); + String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.FSB2"; + + TestUtils + .initComputeNodeTypeInConsolidationData(mainSTName, computeNodeTypeName, consolidationData); + TestUtils.initPortConsolidationData(mainSTName, consolidationData); + + for (String computeId : computeNodeIds) { + ComputeTemplateConsolidationData computeTemplateConsolidationData = + new ComputeTemplateConsolidationData(); + TestUtils.updatePortsInComputeTemplateConsolidationData(portTypeToIdList, + computeTemplateConsolidationData); + consolidationData.getComputeConsolidationData().getFileComputeConsolidationData(mainSTName) + .getTypeComputeConsolidationData(computeNodeTypeName) + .setComputeTemplateConsolidationData(computeId, + computeTemplateConsolidationData); + } + + for (Pair<String, String> portTypeToId : portTypeToIdList) { + consolidationData.getPortConsolidationData().getFilePortConsolidationData(mainSTName) + .setPortTemplateConsolidationData(portTypeToId.getRight(), + new PortTemplateConsolidationData()); + } + + return consolidationData; + } + + private UnifiedCompositionData createCompositionData(String computeNodeTemplateId, + List<Pair<String, String>> portTypeToIdList) { + + UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); + NodeTemplate computeNodeTemplate = + DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), computeNodeTemplateId); + Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = + TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage"); + List<RequirementAssignmentData> requirementAssignmentList = + (requirementAssignmentDataList.isPresent()) ? requirementAssignmentDataList.get() : null; + Map<String, List<RequirementAssignmentData>> volume = getVolume(requirementAssignmentList); + + unifiedCompositionData.setComputeTemplateConsolidationData( + TestUtils.createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList, + volume)); + for (Pair<String, String> port : portTypeToIdList) { + NodeTemplate portNodeTemplate = + DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), port.getRight()); + + Map<String, List<RequirementAssignmentData>> nodeConnectedOut = + TestUtils.getNodeConnectedOutList(portNodeTemplate, "link"); + PortTemplateConsolidationData portTemplateConsolidationData = + TestUtils.createPortTemplateConsolidationData(port.getRight()); + portTemplateConsolidationData.setNodesConnectedOut(nodeConnectedOut); + unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData); + } + return unifiedCompositionData; + } + + private List<UnifiedCompositionData> createAbstractSubstituteCompositionDataComputeAndPort() { + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(); + UnifiedCompositionData data1 = createComputeUnifiedCompositionData("FSB1_template"); + UnifiedCompositionData data2 = createComputeUnifiedCompositionData("FSB2_template"); + + List<Pair<String, String>> portTypeToIdList = new ArrayList<>(); + ImmutablePair<String, String> portTypePair1 = new ImmutablePair<>("FSB1_Internal", + "FSB1_Internal1"); + ImmutablePair<String, String> portTypePair2 = new ImmutablePair<>("FSB2_Internal", + "FSB2_Internal1"); + portTypeToIdList.add(portTypePair1); + portTypeToIdList.add(portTypePair2); + addPortDataToCompositionData(portTypeToIdList, data1); + portTypeToIdList.remove(portTypePair1); + portTypeToIdList.remove(portTypePair2); + portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2")); + portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2")); + addPortDataToCompositionData(portTypeToIdList, data2); + + unifiedCompositionDataList.add(data1); + unifiedCompositionDataList.add(data2); + return unifiedCompositionDataList; + } + + + private UnifiedCompositionData createComputeUnifiedCompositionData(String computeNodeTemplateId) { + NodeTemplate computeNodeTemplate = + DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), computeNodeTemplateId); + Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = + TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage"); + Map<String, List<RequirementAssignmentData>> volume = null; + if (requirementAssignmentDataList.isPresent()) { + volume = getVolume(requirementAssignmentDataList.get()); + } + UnifiedCompositionData data = new UnifiedCompositionData(); + Map<String, List<RequirementAssignmentData>> computeNodeConnectedOut = + TestUtils.getNodeConnectedOutList(computeNodeTemplate, "dependency"); + Map<String, List<RequirementAssignmentData>> computeNodeConnectedIn = + TestUtils + .getNodeConnectedInList(computeNodeTemplateId, inputServiceTemplates.get(mainSTName), + "dependency"); + ComputeTemplateConsolidationData computeTemplateConsolidationData = TestUtils + .createComputeTemplateConsolidationData(computeNodeTemplateId, null, volume); + List<String> computeNodeGroups = + TestUtils.getGroupsForNode(inputServiceTemplates.get(mainSTName), + computeNodeTemplateId); + if (!computeNodeGroups.isEmpty()) { + computeTemplateConsolidationData.setGroupIds(computeNodeGroups); + } + computeTemplateConsolidationData.setNodesConnectedOut(computeNodeConnectedOut); + computeTemplateConsolidationData.setNodesConnectedIn(computeNodeConnectedIn); + data.setComputeTemplateConsolidationData(computeTemplateConsolidationData); + return data; + } + + private void addPortDataToCompositionData(List<Pair<String, String>> portTypeToIdList, + UnifiedCompositionData data) { + ComputeTemplateConsolidationData computeTemplateConsolidationData = data + .getComputeTemplateConsolidationData(); + + for (Pair<String, String> port : portTypeToIdList) { + NodeTemplate portNodeTemplate = + DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), port.getRight()); + + Optional<List<RequirementAssignmentData>> bindingReqList = + TestUtils.getRequirementAssignmentDataList(portNodeTemplate, "binding"); + + if (bindingReqList.isPresent()) { + for (RequirementAssignmentData reqData : bindingReqList.get()) { + String nodeId = reqData.getRequirementAssignment().getNode(); + if (nodeId.equals(computeTemplateConsolidationData.getNodeTemplateId())) { + computeTemplateConsolidationData.addPort(port.getLeft(), port.getRight()); + } + } + } + Map<String, List<RequirementAssignmentData>> portNodeConnectedOut = + TestUtils.getNodeConnectedOutList(portNodeTemplate, "link"); + PortTemplateConsolidationData portTemplateConsolidationData = TestUtils + .createPortTemplateConsolidationData(port.getRight()); + portTemplateConsolidationData.setNodesConnectedOut(portNodeConnectedOut); + + //Add node connected in info to test data + Map<String, List<RequirementAssignmentData>> portNodeConnectedIn = + TestUtils.getNodeConnectedInList(port.getRight(), inputServiceTemplates.get(mainSTName), + "port"); + portTemplateConsolidationData.setNodesConnectedIn(portNodeConnectedIn); + + //Add group infromation for ports + List<String> portGroups = + TestUtils.getGroupsForNode(inputServiceTemplates.get(mainSTName), port.getRight()); + portTemplateConsolidationData.setGroupIds(portGroups); + data.addPortTemplateConsolidationData(portTemplateConsolidationData); + + } + addGetAttrForCompute(data); + addGetAttrForPort(data); + } + + private Map<String, List<RequirementAssignmentData>> getVolume( + List<RequirementAssignmentData> requirementAssignmentList) { + Map<String, List<RequirementAssignmentData>> volume = new HashMap<>(); + for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentList) { + String volumeNodeTemplateId = requirementAssignmentData.getRequirementAssignment().getNode(); + volume.computeIfAbsent(volumeNodeTemplateId, k -> new ArrayList<>()); + volume.get(volumeNodeTemplateId).add(requirementAssignmentData); + } + return volume; + } + + private void addGetAttrForPort(UnifiedCompositionData unifiedCompositionData) { + for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData + .getPortTemplateConsolidationDataList()) { + if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) { + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "network_name", + "network_id", "jsa_net1"); + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size", + "addresses", "cmaui_volume1"); + } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal2")) { + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "tenant_id", + "network_id", "jsa_net1"); + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "qos_policy", + "network_id", "jsa_net1"); + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "volume_type", + "index", "cmaui_volume1"); + } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_OAM")) { + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size", + "oam_index", "cmaui_volume1"); + } + } + } + + private void addGetAttrForPort2(UnifiedCompositionData unifiedCompositionData) { + for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData + .getPortTemplateConsolidationDataList()) { + if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal1")) { + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "volume_type", + "index", "cmaui_volume3"); + } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal2")) { + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size", + "addresses", "cmaui_volume3"); + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size", + "oam_index", "cmaui_volume1"); + } + } + } + + private void addGetAttrForPortInnerUC(UnifiedCompositionData unifiedCompositionData) { + for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData + .getPortTemplateConsolidationDataList()) { + if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) { + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "availability_zone", + "myAttr", "FSB1_template"); + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "metadata", + "myAttr", "FSB1_template"); + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "name", + "myAttr", "FSB1_template"); + addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "availability_zone", + "index", "FSB1_template"); + } + } + } + + private void addGetAttrForCompute(UnifiedCompositionData unifiedCompositionData) { + addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(), + "dhcp_agent_ids", "addresses", "jsa_net1"); + addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(), + "volume_type", "addresses", "cmaui_volume1"); + addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(), + "size", "accessIPv6", "cmaui_volume2"); + } + + private void addGetAttrForCompute2(UnifiedCompositionData unifiedCompositionData) { + addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(), + "volume_type", "addresses", "cmaui_volume3"); + addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(), + "size", "oam_index", "cmaui_volume3"); + } + + private void addOutputGetAttrInForComputeNoConsolidation( + UnifiedCompositionData unifiedCompositionData) { + addOutputGetAttInUnifiedCompositionData(unifiedCompositionData + .getComputeTemplateConsolidationData(), "simpleOutput1", "accessIPv4"); + addOutputGetAttInUnifiedCompositionData(unifiedCompositionData + .getComputeTemplateConsolidationData(), "simpleOutput2", "addresses"); + addOutputGetAttInUnifiedCompositionData(unifiedCompositionData + .getComputeTemplateConsolidationData(), "complexOutput1", "addresses"); + addOutputGetAttInUnifiedCompositionData(unifiedCompositionData + .getComputeTemplateConsolidationData(), "complexOutput3", "accessIPv6"); + + } + + private void addOutputGetAttrInForCompute1WithConsolidation( + UnifiedCompositionData unifiedCompositionData) { + addOutputGetAttInUnifiedCompositionData(unifiedCompositionData + .getComputeTemplateConsolidationData(), "simpleOutput1", "accessIPv4"); + addOutputGetAttInUnifiedCompositionData(unifiedCompositionData + .getComputeTemplateConsolidationData(), "complexOutput1", "addresses"); + + } + + private void addOutputGetAttrInForCompute2WithConsolidation( + UnifiedCompositionData unifiedCompositionData) { + addOutputGetAttInUnifiedCompositionData(unifiedCompositionData + .getComputeTemplateConsolidationData(), "simpleOutput2", "addresses"); + } + + private void addOutputGetAttrInForPortNoConsolidation( + UnifiedCompositionData unifiedCompositionData) { + for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData + .getPortTemplateConsolidationDataList()) { + if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) { + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2", + "addresses"); + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput3", + "addresses"); + } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal2")) { + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput1", + "index"); + } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_OAM")) { + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2", + "oam_index"); + } + } + } + + private void addOutputGetAttrInForPortWithConsolidation1( + UnifiedCompositionData unifiedCompositionData) { + for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData + .getPortTemplateConsolidationDataList()) { + if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal2")) { + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput1", + "index"); + } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) { + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput3", + "accessIPv6"); + } + } + } + + private void addOutputGetAttrInForPortWithConsolidation2( + UnifiedCompositionData unifiedCompositionData) { + for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData + .getPortTemplateConsolidationDataList()) { + if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal1")) { + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2", + "oam_index"); + } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal2")) { + addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2", + "addresses"); + } + } + } + + private NodeTemplate getMockNode(String path) throws IOException { + URL resource = this.getClass().getResource(path); + YamlUtil yamlUtil = new YamlUtil(); + return yamlUtil.yamlToObject(resource.openStream(), NodeTemplate.class); + } + +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/BuildConsolidationDataTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/BuildConsolidationDataTest.java new file mode 100644 index 0000000000..47c99be530 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/BuildConsolidationDataTest.java @@ -0,0 +1,24 @@ +package org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; + +import java.io.IOException; + +public class BuildConsolidationDataTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testNovaServerGroupConsolidationData() throws Exception { + inputFilesPath = "/mock/services/heattotosca/novaservergroups/staticPolicy/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/novaservergroups/staticPolicy/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/ConsolidationDataTestUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/ConsolidationDataTestUtil.java new file mode 100644 index 0000000000..0f9b4deb53 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/ConsolidationDataTestUtil.java @@ -0,0 +1,1095 @@ +package org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata; + +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.MAIN_SERVICE_TEMPLATE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_MULTIPLE_COMPUTE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_OUT; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NO_DEPENDENCY; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_MULTIPLE_NESTED_RESOURCE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_NESTED_CONNECTION; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SINGLE_NESTED_RESOURCE; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.commons.collections4.CollectionUtils; +import org.junit.Assert; +import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType; +import org.openecomp.sdc.tosca.datatypes.ToscaNodeType; +import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType; +import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition; +import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.sdc.tosca.datatypes.model.NodeType; +import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.DataModelUtil; +import org.openecomp.sdc.tosca.services.ToscaConstants; +import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData; +import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil; +import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +public class ConsolidationDataTestUtil { + + public static void validateVolumeInConsolidationData(String computeNodeTemplateId, + ComputeTemplateConsolidationData + computeTemplateConsolidationData, + ServiceTemplate expectedServiceTemplate, + String testName) { + Assert.assertNotNull(computeTemplateConsolidationData); + //Get the volume information from consolidation data + Map<String, List<RequirementAssignmentData>> volumeConsolidationData = + computeTemplateConsolidationData.getVolumes(); + + if(testName.equals("Negative")) { + Assert.assertNull(volumeConsolidationData); + return; + } + + //Get the volume requirement information from the output translated template + NodeTemplate computeNode = DataModelUtil.getNodeTemplate(expectedServiceTemplate, + computeNodeTemplateId); + + if(!isComputeNodeType(expectedServiceTemplate, computeNode.getType()) ) { + //According to toplogy only Compute->volume relationship is valid + Assert.assertNull(volumeConsolidationData); + return; + } + + Assert.assertNotNull(computeNode); + List<String> computeVolumeRequirementsNodes = new ArrayList<>(); + List<Map<String, RequirementAssignment>> requirementList = computeNode.getRequirements(); + if(requirementList != null){ + for(Map<String, RequirementAssignment> req : requirementList){ + Set<String> reqKeySet = req.keySet(); + for(String reqKey : reqKeySet){ + //populating the "node" property of all the requirements "local_storage" related to volume + if(reqKey.equals(ToscaConstants.LOCAL_STORAGE_REQUIREMENT_ID)){ + RequirementAssignment requirementAssignment = new ObjectMapper().convertValue(req.get + (reqKey), RequirementAssignment.class); + computeVolumeRequirementsNodes.add(requirementAssignment.getNode()); + } + } + } + isVolumeComputeRequirement(computeVolumeRequirementsNodes, volumeConsolidationData); + } + } + + private static void isVolumeComputeRequirement(List<String> computeVolumeRequirementsNodes, + Map<String, List<RequirementAssignmentData>> + volumeConsolidationData) { + Assert.assertEquals(computeVolumeRequirementsNodes.size(), volumeConsolidationData.size()); + for(String volumeNodeTemplateId : computeVolumeRequirementsNodes) { + Assert.assertNotNull(volumeConsolidationData.containsKey(volumeNodeTemplateId)); + List<RequirementAssignmentData> requirementAssignmentDataList = volumeConsolidationData.get + (volumeNodeTemplateId); + for(RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList){ + Assert.assertTrue(requirementAssignmentData.getRequirementId().equals(ToscaConstants + .LOCAL_STORAGE_REQUIREMENT_ID)); + } + } + } + + + public static void validatePortsInConsolidationData(String computeNodeTemplateId, + ComputeTemplateConsolidationData + computeTemplateConsolidationData, + ServiceTemplate outputServiceTemplate){ + Map<String,List<String>> consolidatedMap = computeTemplateConsolidationData.getPorts(); + Map<String,List<String>> expectedMap = getPortsInConsolidationData(outputServiceTemplate).get + (computeNodeTemplateId); + if(expectedMap == null && consolidatedMap == null){ + return; + } + for(String consolidatedKey : consolidatedMap.keySet()){ + List<String> consolidatedList = consolidatedMap.get(consolidatedKey); + List<String> expectedList = expectedMap.get(consolidatedKey); + if(expectedList == null ){ + Assert.fail(); + } if(!CollectionUtils.isEqualCollection(consolidatedList,expectedList)){ + Assert.fail(); + } + } + } + + public static void validateDependsOnInConsolidationData(String computeNodeTemplateId, + ComputeTemplateConsolidationData computeTemplateConsolidationData, + ServiceTemplate outputServiceTemplate, + String testName) { + Map<String, NodeTemplate> outputNodeTemplates = outputServiceTemplate.getTopology_template() + .getNode_templates(); + Map<String, List<RequirementAssignmentData>> nodesConnectedIn = + computeTemplateConsolidationData.getNodesConnectedIn(); + Map<String, List<RequirementAssignmentData>> nodesConnectedOut = + computeTemplateConsolidationData.getNodesConnectedOut(); + + if(testName.equals(TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE) || + testName.equals(TEST_DEPENDS_ON_NO_DEPENDENCY)) { + Assert.assertNull(nodesConnectedIn); + Assert.assertNull(nodesConnectedOut); + return; + } + //key - nodetemplate id , value - requirementassignment + Map<String, List<RequirementAssignment>> outputDependsOnNodeRequirementMap = new HashMap<>(); + for(Map.Entry<String, NodeTemplate> entry : outputNodeTemplates.entrySet()) { + NodeTemplate nodeTemplate = entry.getValue(); + List<Map<String, RequirementAssignment>> nodeRequirements = nodeTemplate.getRequirements(); + if(nodeRequirements != null){ + for(Map<String, RequirementAssignment> req : nodeRequirements) { + Set<String> keySet = req.keySet(); + for(String key : keySet) { + if(key.equals(ToscaConstants.DEPENDS_ON_REQUIREMENT_ID)) + //collect all dependency requirements in a map with key -> node template id + outputDependsOnNodeRequirementMap.computeIfAbsent(entry.getKey(), k -> new ArrayList<>()) + .add(req.get(key)); + } + } + } + } + + if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_OUT)){ + Assert.assertNull(nodesConnectedIn); + validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut, + outputDependsOnNodeRequirementMap, outputServiceTemplate); + } + + if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN)){ + Assert.assertNull(nodesConnectedOut); + validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn, + outputDependsOnNodeRequirementMap, + outputServiceTemplate); + } + + if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT)){ + Assert.assertNotNull(nodesConnectedIn); + Assert.assertNotNull(nodesConnectedOut); + validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut, + outputDependsOnNodeRequirementMap, + outputServiceTemplate); + validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn, + outputDependsOnNodeRequirementMap, + outputServiceTemplate); + } + + if(testName.equals(TEST_DEPENDS_ON_MULTIPLE_COMPUTE)){ + if(nodesConnectedOut != null) + validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut, + outputDependsOnNodeRequirementMap, + outputServiceTemplate); + if(nodesConnectedIn != null) + validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn, + outputDependsOnNodeRequirementMap, + outputServiceTemplate); + } + + + } + + private static void validateDependsOnNodesConnectedIn(String computeNodeTemplateId, + Map<String, + List<RequirementAssignmentData>> + nodesConnectedIn, + Map<String, List<RequirementAssignment>> + outputDependsOnNodeRequirementMap, + ServiceTemplate outputServiceTemplate) { + ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl(); + for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap + .entrySet()) { + String sourceNodeTemplateId = entry.getKey(); + Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById + (outputServiceTemplate, sourceNodeTemplateId); + String sourceNodeType = sourceNodeTemplate.get().getType(); + for(Object obj : entry.getValue()){ + RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment + .class); + String targetNodeTemplateId = req.getNode(); + Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById + (outputServiceTemplate, targetNodeTemplateId); + + String targetNodeType = targetNodeTemplate.get().getType(); + boolean isValidTargetForConnectedIn = false; + if(isComputeNodeType(outputServiceTemplate, targetNodeType)) { + isValidTargetForConnectedIn = true; + } else if(isPortNodeType(outputServiceTemplate, targetNodeType)) { + isValidTargetForConnectedIn = true; + } + + if(isValidTargetForConnectedIn) { + //Should be present if target node is compute or port + if(computeNodeTemplateId.equals(entry.getKey())) + Assert.assertTrue(nodesConnectedIn.containsKey(entry.getKey())); + } + + if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER) + && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER) + || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT) + || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) { + //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship + Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId)); + } + + if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT) + && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER) + || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT) + || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) { + //Ignore Port->Port, Port->Compute, Port->Volume relationship + Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId)); + } + } + } + } + + private static boolean isComputeNodeType(ServiceTemplate serviceTemplate, + String nodeType) { + + if(nodeType.equals(ToscaNodeType.NOVA_SERVER) || + nodeType.equals(ToscaNodeType.NATIVE_COMPUTE)) + return true; + + Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types(); + if(nodeTypes.containsKey(nodeType)) { + NodeType nodeTypeInfo = nodeTypes.get(nodeType); + if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NOVA_SERVER)) + return true; + } + return false; + } + + private static boolean isPortNodeType(ServiceTemplate serviceTemplate, + String nodeType) { + if(nodeType.equals(ToscaNodeType.NEUTRON_PORT) || + nodeType.equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE)) + return true; + + Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types(); + if(nodeTypes.containsKey(nodeType)) { + NodeType nodeTypeInfo = nodeTypes.get(nodeType); + if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NEUTRON_PORT) || + nodeTypeInfo.getDerived_from().equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE)) + return true; + } + return false; + } + + private static void validateDependsOnNodesConnectedOut(String computeNodeTemplateId, + Map<String, + List<RequirementAssignmentData>> + nodesConnectedOut, + Map<String, List<RequirementAssignment>> + outputDependsOnNodeRequirementMap, + ServiceTemplate outputServiceTemplate) { + ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl(); + //Iterating the map <nodeTemplateId, all the requirements of that node> + for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap + .entrySet()) { + String sourceNodeTemplateId = entry.getKey(); + Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById + (outputServiceTemplate, sourceNodeTemplateId); + String sourceNodeType = sourceNodeTemplate.get().getType(); + boolean isValidSourceForConnectedOut = false; + if(isComputeNodeType(outputServiceTemplate, sourceNodeType)) { + isValidSourceForConnectedOut = true; + } else if(isPortNodeType(outputServiceTemplate, sourceNodeType)) { + isValidSourceForConnectedOut = true; + } + for(Object obj : entry.getValue()){ + RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment + .class); + String targetNodeTemplateId = req.getNode(); + Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById + (outputServiceTemplate, targetNodeTemplateId); + String targetNodeType = targetNodeTemplate.get().getType(); + + if(isValidSourceForConnectedOut) { + //Should be present if source node is compute or port + if(computeNodeTemplateId.equals(entry.getKey())) + Assert.assertTrue(nodesConnectedOut.containsKey(targetNodeTemplateId)); + } + + if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER) + && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER) + || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT) + || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) { + //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship + Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId)); + } + + if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT) + && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER) + || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT) + || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) { + //Ignore Port->Port, Port->Compute, Port->Volume relationship + Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId)); + } + } + } + } + + private static Map<String,Map<String,List<String>>> getPortsInConsolidationData(ServiceTemplate + output){ + Map<String,Map<String,List<String>>> portMap = new LinkedHashMap<>(); + Map<String, NodeTemplate> nodeTempMap = output.getTopology_template().getNode_templates(); + for(String nodeName : nodeTempMap.keySet()){ + NodeTemplate node = nodeTempMap.get(nodeName); + if(ToscaNodeType.NEUTRON_PORT.equals(node.getType()) || ToscaNodeType + .CONTRAILV2_VIRTUAL_MACHINE_INTERFACE.equals(node.getType())){ + List<Map<String, RequirementAssignment>> reqAssignList = node.getRequirements(); + if(reqAssignList != null) { + for (Map<String, RequirementAssignment> reqAssignMap : reqAssignList) { + //RequirementAssignment req = reqAssignMap.get("binding"); + RequirementAssignment req = new ObjectMapper().convertValue(reqAssignMap.get("binding"), + RequirementAssignment.class); + + if (req != null) { + String portNode = req.getNode(); + if (!portMap.containsKey(portNode)) { + portMap.put(portNode, new LinkedHashMap<>()); + } + Map<String, List<String>> portTypMaps = portMap.get(portNode); + String id = ConsolidationDataUtil.getPortType(nodeName); + if (!portTypMaps.containsKey(id)) { + portTypMaps.put(id, new ArrayList<>()); + } + List<String> portIds = portTypMaps.get(id); + portIds.add(nodeName); + } + } + } + } + } + return portMap; + } + + public static void validateGroupsInConsolidationData(String computeNodeTemplateId, + ComputeTemplateConsolidationData + computeTemplateConsolidationData, + ServiceTemplate expectedServiceTemplate) { + Assert.assertNotNull(computeTemplateConsolidationData); + List<String> groupIds = computeTemplateConsolidationData.getGroupIds(); + if (groupIds != null) { + for (String groupId : groupIds) { + isComputeGroupMember(expectedServiceTemplate, computeNodeTemplateId, groupId); + } + } + } + + private static void isComputeGroupMember(ServiceTemplate expectedServiceTemplate, String + computeNodeTemplateId, String groupId) { + //Check if the collected group id is in the member list of the groups + GroupDefinition group = expectedServiceTemplate.getTopology_template().getGroups().get(groupId); + List<String> groupMembers = group.getMembers(); + Assert.assertNotNull(groupMembers); + Assert.assertTrue(groupMembers.contains(computeNodeTemplateId)); + } + + public static void validateSubstituteMappingInConsolidationData(ConsolidationData consolidationData, + Map<String, ServiceTemplate> + expectedServiceTemplateModels ){ + Map<String,List<String>> consolidatedMap = consolidationData.getSubstituteNodeTemplates(); + Map<String,List<String>> expectedMap = getSubstituteMapping(expectedServiceTemplateModels); + for(String consolidatedKey : consolidatedMap.keySet()){ + List<String> consolidatedList = consolidatedMap.get(consolidatedKey); + List<String> expectedList = expectedMap.get(consolidatedKey); + if(expectedList == null ){ + Assert.fail(); + } if(!CollectionUtils.isEqualCollection(consolidatedList,expectedList)){ + Assert.fail(); + } + } + } + + private static Map<String,List<String>> getSubstituteMapping(Map<String, ServiceTemplate> + expectedServiceTemplateModels ){ + Map<String,List<String>> map = new LinkedHashMap<>(); + for(String key : expectedServiceTemplateModels.keySet()){ + ServiceTemplate serviceTemplate = expectedServiceTemplateModels.get(key); + if(serviceTemplate.getTopology_template() != null && serviceTemplate + .getTopology_template().getNode_templates() != null) { + for (String key1 : serviceTemplate.getTopology_template().getNode_templates().keySet()) { + NodeTemplate nodeTemplate = serviceTemplate.getTopology_template().getNode_templates() + .get(key1); + if (nodeTemplate.getType().contains(ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + "heat.")) { + + List<String> subNodeTempIdList = map.get(key); + if (subNodeTempIdList == null) { + subNodeTempIdList = new ArrayList<>(); + map.put(key, subNodeTempIdList); + } + subNodeTempIdList.add(key1); + } + } + } + } + return map; + } + + public static void validateComputeConnectivityIn(ComputeTemplateConsolidationData + computeTemplateConsolidationData, + ServiceTemplate expectedServiceTemplate){ + Map<String,List<RequirementAssignmentData>> nodesConnectedIn = computeTemplateConsolidationData. + getNodesConnectedIn(); + if(nodesConnectedIn==null){ + return; + } + boolean found = false; + for(String nodeIdConnTo : nodesConnectedIn.keySet()){ + List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo); + List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate + .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements(); + for(RequirementAssignmentData requirementAssignmentData : connectToList) { + for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) { + RequirementAssignment requirementAssignment = + new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(), + RequirementAssignment.class); + if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) { + Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability()); + Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode()); + Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment() + .getRelationship()); + found = true; + } + } + if (!found) { + Assert.fail(); + } + found = false; + } + } + } + + public static void validateComputeConnectivityOut(String computeNodeTemplateId, + ComputeTemplateConsolidationData + computeTemplateConsolidationData, + ServiceTemplate expectedServiceTemplate){ + Map<String,List<RequirementAssignmentData>> nodesConnectedOut = computeTemplateConsolidationData. + getNodesConnectedOut(); + if(nodesConnectedOut==null){ + return; + } + boolean found = false; + for(String nodeIdConnFrom : nodesConnectedOut.keySet()){ + List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom); + List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate + .getTopology_template().getNode_templates().get(computeNodeTemplateId).getRequirements(); + for(RequirementAssignmentData requirementAssignmentData : connectToList) { + for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) { + RequirementAssignment requirementAssignment = + new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(), + RequirementAssignment.class); + if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) { + Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability()); + Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode()); + Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment() + .getRelationship()); + found = true; + } + } + if (!found) { + Assert.fail(); + } + found = false; + } + } + } + + public static void validatePortConnectivityIn(PortTemplateConsolidationData + portTemplateConsolidationData, + ServiceTemplate expectedServiceTemplate){ + Map<String,List<RequirementAssignmentData>> nodesConnectedIn = portTemplateConsolidationData. + getNodesConnectedIn(); + if(nodesConnectedIn==null){ + return; + } + boolean found = false; + for(String nodeIdConnTo : nodesConnectedIn.keySet()){ + List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo); + List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate + .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements(); + for(RequirementAssignmentData requirementAssignmentData : connectToList) { + for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) { + RequirementAssignment requirementAssignment = + new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(), + RequirementAssignment.class); + if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) { + Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability()); + Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode()); + Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment() + .getRelationship()); + found = true; + } + } + if (!found) { + Assert.fail(); + } + found = false; + } + } + } + + public static void validatePortConnectivityOut(String portNodeTemplateId, + PortTemplateConsolidationData + portTemplateConsolidationData, + ServiceTemplate expectedServiceTemplate){ + Map<String, List<RequirementAssignmentData>> nodesConnectedOut = + portTemplateConsolidationData.getNodesConnectedOut(); + if(nodesConnectedOut==null){ + return; + } + boolean found = false; + for(String nodeIdConnFrom : nodesConnectedOut.keySet()){ + List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom); + List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate + .getTopology_template().getNode_templates().get(portNodeTemplateId).getRequirements(); + for(RequirementAssignmentData requirementAssignmentData : connectToList) { + for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) { + RequirementAssignment requirementAssignment = + new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(), + RequirementAssignment.class); + if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) { + Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability()); + Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode()); + Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment() + .getRelationship()); + found = true; + } + } + if (!found) { + Assert.fail(); + } + found = false; + } + } + } + + public static void validateGetAttr(TranslationContext translationContext, Map<String, + ServiceTemplate> + expectedServiceTemplateModels,String testName){ + ConsolidationData consolidationData = translationContext.getConsolidationData(); + Assert.assertNotNull(consolidationData); + if(TestConstants.TEST_GET_ATTR_FOR_MORE_THAN_ONE_ATTR_IN_ATTR_LIST.equals(testName)){ + PortTemplateConsolidationData portTemplateConsolidationData = consolidationData + .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml") + .getPortTemplateConsolidationData("VMI1"); + Assert.assertNotNull(portTemplateConsolidationData); + Assert.assertEquals(2, portTemplateConsolidationData.getNodesGetAttrIn().size()); + List<GetAttrFuncData> attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn() + .get("FSB1"); + Assert.assertEquals(1,attrFuncDataList.size()); + Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName()); + Assert.assertEquals("name",attrFuncDataList.get(0).getAttributeName()); + + attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn() + .get("FSB2"); + Assert.assertEquals(1,attrFuncDataList.size()); + Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName()); + Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataList.get(0).getAttributeName()); + + ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB2 = consolidationData + .getComputeConsolidationData() + .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB2") + .getComputeTemplateConsolidationData("FSB2"); + Assert.assertEquals(1,computeTemplateConsolidationDataFSB2.getNodesGetAttrOut().size()); + List<GetAttrFuncData> attrFuncDataOutList = computeTemplateConsolidationDataFSB2 + .getNodesGetAttrOut().get("VMI1"); + Assert.assertEquals(1,attrFuncDataOutList.size()); + Assert.assertEquals("name",attrFuncDataOutList.get(0).getFieldName()); + Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataOutList + .get(0).getAttributeName()); + ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB1 = consolidationData + .getComputeConsolidationData() + .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB1") + .getComputeTemplateConsolidationData("FSB1"); + Assert.assertEquals(1,computeTemplateConsolidationDataFSB1.getNodesGetAttrOut().size()); + List<GetAttrFuncData> attrFuncDataOutList2 = computeTemplateConsolidationDataFSB1 + .getNodesGetAttrOut().get("VMI1"); + Assert.assertEquals(1,attrFuncDataOutList2.size()); + Assert.assertEquals("name",attrFuncDataOutList2.get(0).getFieldName()); + Assert.assertEquals("name",attrFuncDataOutList2 + .get(0).getAttributeName()); + } else if(TestConstants.TEST_IGNORE_GET_ATTR_FROM_OUTPUT.equals(testName)){ + if(!consolidationData.getPortConsolidationData().getAllServiceTemplateFileNames().isEmpty()){ + Iterator<String> itr = consolidationData.getPortConsolidationData() + .getFilePortConsolidationData("MainServiceTemplate.yaml").getAllPortNodeTemplateIds() + .iterator(); + while(itr.hasNext()){ + String key = itr.next(); + PortTemplateConsolidationData portTemplateConsolidationData = consolidationData + .getPortConsolidationData() + .getFilePortConsolidationData("MainServiceTemplate.yaml") + .getPortTemplateConsolidationData(key); + Assert.assertNull(portTemplateConsolidationData.getOutputParametersGetAttrIn()); + } + } + } else if(TestConstants.TEST_GET_ATTR_FOR_NOT_SUPPORTED_ATTR_IN_ATTR_LIST.equals(testName)){ + Assert.assertNull(consolidationData.getPortConsolidationData() + .getFilePortConsolidationData("MainServiceTemplate.yaml") + .getPortTemplateConsolidationData("FSB1_Internal2").getNodesGetAttrIn()); + } else if(TestConstants.TEST_GET_ATTR_FOR_ONLY_RESOURCE_NAME.equals(testName)){ + PortTemplateConsolidationData portTemplateConsolidationData = consolidationData + .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml") + .getPortTemplateConsolidationData("VMI1"); + Assert.assertNotNull(portTemplateConsolidationData); + Assert.assertEquals("name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1"). + get(0).getFieldName()); + Assert.assertEquals("fq_name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1"). + get(0).getAttributeName()); + } else if(TestConstants.TEST_GET_ATTR_FOR_NONE_TO_PORT_OR_COMPUTE.equals(testName)){ + ComputeTemplateConsolidationData computeTemplateConsolidationData = consolidationData + .getComputeConsolidationData() + .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.compute") + .getComputeTemplateConsolidationData("server_compute_get_attr_test"); + Assert.assertEquals("user_data_format",computeTemplateConsolidationData + .getNodesGetAttrOut().get("server_pcm_001").get(0).getFieldName()); + Assert.assertEquals("oam_net_gw",computeTemplateConsolidationData + .getNodesGetAttrOut().get("server_pcm_001").get(0).getAttributeName()); + } else if(TestConstants.TEST_OUTPUT_GET_ATTR.equals(testName)){ + ComputeTemplateConsolidationData computeTemplateConsolidationData1 = consolidationData + .getComputeConsolidationData() + .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw") + .getComputeTemplateConsolidationData("CGI_FW_SERVER_1"); + Assert.assertEquals("cgi_fw_01_left_mac_1",computeTemplateConsolidationData1 + .getOutputParametersGetAttrIn() + .get(0).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData1.getOutputParametersGetAttrIn() + .get(0).getAttributeName()); + ComputeTemplateConsolidationData computeTemplateConsolidationData2 = consolidationData + .getComputeConsolidationData() + .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw") + .getComputeTemplateConsolidationData("CGI_FW_SERVER_2"); + Assert.assertEquals(1,computeTemplateConsolidationData2 + .getNodesGetAttrIn().get("CGI_FW_SERVER_2").size()); + Assert.assertEquals("availability_zone",computeTemplateConsolidationData2 + .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getAttributeName()); + Assert.assertEquals(1,computeTemplateConsolidationData2 + .getNodesGetAttrOut().get("CGI_FW_SERVER_2").size()); + Assert.assertEquals("availability_zone",computeTemplateConsolidationData2 + .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_2",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(0).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(0).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_3",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(1).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(1).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_4",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(2).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(2).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(3).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(3).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(4).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(4).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_6",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(5).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(5).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_9",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(6).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(6).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_10",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(7).getFieldName()); + Assert.assertEquals("addresses",computeTemplateConsolidationData2 + .getOutputParametersGetAttrIn().get(7).getAttributeName()); + PortTemplateConsolidationData portTemplateConsolidationData = consolidationData + .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml") + .getPortTemplateConsolidationData("contrail_vmi_subinterface"); + Assert.assertEquals("cgi_fw_01_left_mac_7",portTemplateConsolidationData + .getOutputParametersGetAttrIn().get(0).getFieldName()); + Assert.assertEquals("virtual_machine_interface_properties",portTemplateConsolidationData + .getOutputParametersGetAttrIn().get(0).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_8",portTemplateConsolidationData + .getOutputParametersGetAttrIn().get(1).getFieldName()); + Assert.assertEquals("virtual_machine_interface_allowed_address_pairs", + portTemplateConsolidationData.getOutputParametersGetAttrIn() + .get(1).getAttributeName()); + Assert.assertEquals("cgi_fw_01_left_mac_10",portTemplateConsolidationData + .getOutputParametersGetAttrIn().get(2).getFieldName()); + Assert.assertEquals("virtual_machine_interface_allowed_address_pairs", + portTemplateConsolidationData.getOutputParametersGetAttrIn() + .get(2).getAttributeName()); + } + } + + public static void validateNestedConsolidationData(TranslationContext context, + String testName) { + ConsolidationData consolidationData = context.getConsolidationData(); + if (testName.equals(TEST_SINGLE_NESTED_RESOURCE)) { + String nestedNodeTemplateId = "server_pcm_001"; + NestedTemplateConsolidationData nestedTemplateConsolidationData = + consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId); + //Validate basic null attributes + validateBasicNestedConsolidationData(nestedTemplateConsolidationData); + //Validate nodeTemplateId + Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId); + //Validate nodes connected in (will only be populated for dependsOn relationships) + Map<String, List<RequirementAssignmentData>> nodesConnectedIn = + nestedTemplateConsolidationData.getNodesConnectedIn(); + List<String> dependentNodes = new LinkedList<>(); + dependentNodes.add("packet_mirror_network"); + validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes); + + //Validate get attribute in + Map<String, List<GetAttrFuncData>> nodesGetAttrIn = + nestedTemplateConsolidationData.getNodesGetAttrIn(); + String getAttrNodeTemplateId = "server_compute_get_attr_test"; + List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId); + Assert.assertNotNull(getAttrFuncData); + Assert.assertEquals(getAttrFuncData.size(), 2); + Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata"); + Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id"); + Assert.assertEquals(getAttrFuncData.get(1).getFieldName(), "user_data_format"); + Assert.assertEquals(getAttrFuncData.get(1).getAttributeName(), "oam_net_gw"); + + //Validate output parameter get attribute in + List<GetAttrFuncData> outputParametersGetAttrIn = + nestedTemplateConsolidationData.getOutputParametersGetAttrIn(); + Assert.assertNotNull(outputParametersGetAttrIn); + Assert.assertEquals(outputParametersGetAttrIn.size(), 1); + Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1"); + Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol"); + + } else if (testName.equals(TEST_MULTIPLE_NESTED_RESOURCE)) { + List<String> nestedNodeTemplateIds = new ArrayList<>(); + nestedNodeTemplateIds.add("server_pcm_001"); + nestedNodeTemplateIds.add("server_pcm_002"); + nestedNodeTemplateIds.add("server_pcm_003"); + + for (String nestedNodeTemplateId : nestedNodeTemplateIds) { + NestedTemplateConsolidationData nestedTemplateConsolidationData = + consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId); + //Validate basic null attributes + validateBasicNestedConsolidationData(nestedTemplateConsolidationData); + //Validate nodeTemplateId + Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), + nestedNodeTemplateId); + if (nestedNodeTemplateId.equals("server_pcm_001")) { + //Validate nodes connected in (will only be populated for dependsOn relationships) + Map<String, List<RequirementAssignmentData>> nodesConnectedIn = + nestedTemplateConsolidationData.getNodesConnectedIn(); + List<String> dependentNodes = new LinkedList<>(); + dependentNodes.add("packet_mirror_network"); + validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes); + } else { + Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn()); + } + } + String nestedNodeTemplateId = "server_pcm_001"; + + //Validate get attribute in + NestedTemplateConsolidationData nestedTemplateConsolidationData = + consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData("server_pcm_002"); + Map<String, List<GetAttrFuncData>> nodesGetAttrIn = + nestedTemplateConsolidationData.getNodesGetAttrIn(); + String getAttrNodeTemplateId = "server_pcm_001"; + List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId); + Assert.assertNotNull(getAttrFuncData); + Assert.assertEquals(getAttrFuncData.size(), 1); + Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "user_data_format"); + Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "pcm_vol"); + //Validate output parameter get attribute in + List<GetAttrFuncData> outputParametersGetAttrIn = + nestedTemplateConsolidationData.getOutputParametersGetAttrIn(); + Assert.assertNotNull(outputParametersGetAttrIn); + Assert.assertEquals(outputParametersGetAttrIn.size(), 1); + Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_2"); + Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "oam_net_ip"); + + + nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData("server_pcm_001"); + nodesGetAttrIn = nestedTemplateConsolidationData.getNodesGetAttrIn(); + getAttrNodeTemplateId = "server_pcm_002"; + getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId); + Assert.assertNotNull(getAttrFuncData); + Assert.assertEquals(getAttrFuncData.size(), 1); + Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata"); + Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id"); + //Validate output parameter get attribute in + outputParametersGetAttrIn = nestedTemplateConsolidationData.getOutputParametersGetAttrIn(); + Assert.assertNotNull(outputParametersGetAttrIn); + Assert.assertEquals(outputParametersGetAttrIn.size(), 1); + Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1"); + Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol"); + + nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData("server_pcm_003"); + Assert.assertNull(nestedTemplateConsolidationData.getNodesGetAttrIn()); + Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn()); + + } else if (testName.equals(TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE)) { + String nestedNodeTemplateId = "test_nested"; + NestedTemplateConsolidationData nestedTemplateConsolidationData = + consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId); + //Validate basic null attributes + validateBasicNestedConsolidationData(nestedTemplateConsolidationData); + //Validate nodeTemplateId + Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), + nestedNodeTemplateId); + //Validate nodes connected in (will only be populated for dependsOn relationships) + Map<String, List<RequirementAssignmentData>> nodesConnectedIn = + nestedTemplateConsolidationData.getNodesConnectedIn(); + List<String> dependentNodes = new LinkedList<>(); + dependentNodes.add("packet_mirror_network"); + validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes); + //Validate output parameter get attribute in + List<GetAttrFuncData> getAttrFuncData = + nestedTemplateConsolidationData.getNodesGetAttrIn().get("packet_mirror_network"); + Assert.assertNotNull(getAttrFuncData); + Assert.assertEquals(getAttrFuncData.size(), 1); + Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "shared"); + Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "output_attr_1"); + Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn()); + + nestedNodeTemplateId = "test_nested2"; + nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData("nestedServiceTemplate.yaml") + .getNestedTemplateConsolidationData(nestedNodeTemplateId); + //Validate basic null attributes + validateBasicNestedConsolidationData(nestedTemplateConsolidationData); + //Validate nodeTemplateId + Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), + nestedNodeTemplateId); + Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn()); + //Validate output parameter get attribute in + getAttrFuncData = nestedTemplateConsolidationData.getNodesGetAttrIn().get("server_cmaui"); + Assert.assertNotNull(getAttrFuncData); + Assert.assertEquals(getAttrFuncData.size(), 1); + Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata"); + Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "availability_zone_0"); + + List<GetAttrFuncData> outputParametersGetAttrIn1 = + nestedTemplateConsolidationData.getOutputParametersGetAttrIn(); + Assert.assertNotNull(outputParametersGetAttrIn1); + Assert.assertEquals(outputParametersGetAttrIn1.size(), 1); + Assert.assertEquals(outputParametersGetAttrIn1.get(0).getFieldName(), "output_attr_1"); + Assert.assertEquals(outputParametersGetAttrIn1.get(0).getAttributeName(), "availability_zone_0"); + } + } + + private static void validateBasicNestedConsolidationData(NestedTemplateConsolidationData + nestedTemplateConsolidationData) { + Assert.assertNull(nestedTemplateConsolidationData.getGroupIds()); + Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedOut()); + //Assert.assertNull(nestedTemplateConsolidationData.getNodesGetAttrOut()); + } + + private static void validateNestedNodesConnectedInDependency(Map<String, + List<RequirementAssignmentData>> nodesConnectedIn, + String nestedNodeTemplateId, + List<String> dependentNodeTemplateIds) { + Assert.assertNotNull(nodesConnectedIn); + for (String dependentNodeTemplateId : dependentNodeTemplateIds) { + List<RequirementAssignmentData> requirementAssignmentData = + nodesConnectedIn.get(dependentNodeTemplateId); + Assert.assertNotNull(requirementAssignmentData); + for (RequirementAssignmentData data : requirementAssignmentData) { + Assert.assertEquals(data.getRequirementId(), ToscaConstants.DEPENDS_ON_REQUIREMENT_ID); + Assert.assertEquals(data.getRequirementAssignment().getCapability(), ToscaCapabilityType + .NATIVE_NODE); + Assert.assertEquals(data.getRequirementAssignment().getNode(), nestedNodeTemplateId); + Assert.assertEquals(data.getRequirementAssignment().getRelationship(), + ToscaRelationshipType.NATIVE_DEPENDS_ON); + } + } + } + + public static void validateNestedNodesConnectedInSecurityRuleToPort(String testName, + TranslationContext context) { + ConsolidationData consolidationData = context.getConsolidationData(); + if (testName.equals(TEST_SECURITY_RULE_PORT_NESTED_CONNECTION) || + testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) { + String nestedNodeTemplateId = "test_nested"; + NestedTemplateConsolidationData nestedTemplateConsolidationData = + consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId); + //Validate basic null attributes + validateBasicNestedConsolidationData(nestedTemplateConsolidationData); + //Validate nodeTemplateId + Assert + .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId); + String securityRuleNodeTemplateId = "jsa_security_group1"; + validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil + .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(), + nestedNodeTemplateId, securityRuleNodeTemplateId, + nestedTemplateConsolidationData); + securityRuleNodeTemplateId = "jsa_security_group2"; + validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil + .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(), + nestedNodeTemplateId, securityRuleNodeTemplateId, + nestedTemplateConsolidationData); + if (testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) { + nestedNodeTemplateId = "test_nestedArrayParam"; + Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId()); + Assert.assertNull(consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn()); + } + } else if (testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION) || + testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT)) { + String nestedNodeTemplateId = "test_nested2Level"; + Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData("nested1ServiceTemplate.yaml") + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId()); + Assert.assertNull(consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData("nested1ServiceTemplate.yaml") + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn()); + nestedNodeTemplateId = "test_nested3Level"; + Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData("nested2ServiceTemplate.yaml") + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId()); + Assert.assertNull(consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData("nested2ServiceTemplate.yaml") + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn()); + nestedNodeTemplateId = "test_nested4Level"; + Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData("nested3ServiceTemplate.yaml") + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId()); + Assert.assertNull(consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData("nested3ServiceTemplate.yaml") + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn()); + + //Validate main service template + + nestedNodeTemplateId = "test_nested1Level"; + NestedTemplateConsolidationData nestedTemplateConsolidationData = + consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId); + //Validate basic null attributes + validateBasicNestedConsolidationData(nestedTemplateConsolidationData); + //Validate nodeTemplateId + Assert + .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId); + String securityRuleNodeTemplateId = "jsa_security_group1"; + validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil + .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(), + nestedNodeTemplateId, securityRuleNodeTemplateId, + nestedTemplateConsolidationData); + securityRuleNodeTemplateId = "jsa_security_group2"; + validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil + .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(), + nestedNodeTemplateId, securityRuleNodeTemplateId, + nestedTemplateConsolidationData); + + nestedNodeTemplateId = "test_resourceGroup"; + nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId); + //Validate basic null attributes + validateBasicNestedConsolidationData(nestedTemplateConsolidationData); + //Validate nodeTemplateId + Assert + .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId); + securityRuleNodeTemplateId = "jsa_security_group2"; + validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil + .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(), + nestedNodeTemplateId, securityRuleNodeTemplateId, + nestedTemplateConsolidationData); + securityRuleNodeTemplateId = "jsa_security_group2"; + validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil + .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(), + nestedNodeTemplateId, securityRuleNodeTemplateId, + nestedTemplateConsolidationData); + + nestedNodeTemplateId = "test_nestedInvalidConnectionToNova"; + Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId()); + Assert.assertNull(consolidationData.getNestedConsolidationData() + .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE) + .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn()); + } + } + + private static void validateNestedNodesConnectedInSecurityRuleToPort(ServiceTemplate + serviceTemplate, + String nestedNodeTemplateId, + String + securityRuleNodeTemplateId, + NestedTemplateConsolidationData nestedTemplateConsolidationData) { + Map<String, List<RequirementAssignmentData>> consolidationDataNodesConnectedIn = + nestedTemplateConsolidationData.getNodesConnectedIn(); + Assert.assertNotNull(consolidationDataNodesConnectedIn); + NodeTemplate securityRuleNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, + securityRuleNodeTemplateId); + List<Map<String, RequirementAssignment>> securityRuleNodeTemplateRequirements = + securityRuleNodeTemplate.getRequirements(); + for (Map<String, RequirementAssignment> req : securityRuleNodeTemplateRequirements) { + String requirementId = req.keySet().toArray()[0].toString(); + if (requirementId.equals(ToscaConstants.PORT_REQUIREMENT_ID)) { + RequirementAssignment requirementAssignment = req.get(requirementId); + if (requirementAssignment.getNode().equals(nestedNodeTemplateId)) { + validateSecurityRulePortNestedConsolidationData(requirementAssignment, + securityRuleNodeTemplateId, consolidationDataNodesConnectedIn); + } + } + } + } + + private static void validateSecurityRulePortNestedConsolidationData(RequirementAssignment + requirementAssignment, + String securityRuleNodeTemplateId, + Map<String, + List<RequirementAssignmentData>> consolidationDataNodesConnectedIn) { + List<RequirementAssignmentData> requirementAssignmentDataList = + consolidationDataNodesConnectedIn.get(securityRuleNodeTemplateId); + Assert.assertNotNull(requirementAssignmentDataList); + boolean result = false; + for (RequirementAssignmentData data : requirementAssignmentDataList) { + RequirementAssignment dataRequirementAssignment = data.getRequirementAssignment(); + result = DataModelUtil + .compareRequirementAssignment(requirementAssignment, dataRequirementAssignment); + if (result) { + break; + } + } + Assert.assertTrue(result); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/ConsolidationDataValidationType.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/ConsolidationDataValidationType.java new file mode 100644 index 0000000000..4cdfc35647 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/ConsolidationDataValidationType.java @@ -0,0 +1,10 @@ +package org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata; + +public enum ConsolidationDataValidationType { + VALIDATE_GROUP, + VALIDATE_PORT, + VALIDATE_VOLUME, + VALIDATE_GET_ATTR, + VALIDATE_CONNECTIVITY, + VALIDATE_DEPENDS_ON +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/TestConstants.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/TestConstants.java new file mode 100644 index 0000000000..3b97be7f33 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/buildconsolidationdata/TestConstants.java @@ -0,0 +1,56 @@ +package org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata; + +public class TestConstants{ + + public static final String MAIN_SERVICE_TEMPLATE = "MainServiceTemplate.yaml"; + + public static final String TEST_GROUP_POSITIVE = "TestGroupsPositive"; + public static final String TEST_GROUP_NEGATIVE = "TestGroupsNegative"; + + public static final String TEST_VOLUME_POSITIVE = "TestVolumePositive"; + public static final String TEST_VOLUME_NEGATIVE = "TestVolumeNegative"; + + public static final String TEST_PORT_POSITIVE = "TestPortPositive"; + public static final String TEST_PORT_NEGATIVE = "TestPortNegative"; + + public static final String TEST_CONNECTIVITY_POSITIVE = "TestConnectivityPositive"; + public static final String TEST_CONNECTIVITY_NEGATIVE = "TestConnectivityNegative"; + + public static final String TEST_DEPENDS_ON_NODES_CONNECTED_IN = "TestDependsOnNodesConnectedIn"; + public static final String TEST_DEPENDS_ON_NODES_CONNECTED_OUT = "TestDependsOnNodesConnectedOut"; + public static final String TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT = + "TestDependsOnNodesConnectedInAndOut"; + public static final String TEST_DEPENDS_ON_NO_DEPENDENCY = + "TestDependsOnNoDependency"; + public static final String TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE = + "TestDependsOnInvalidDependencyCandidate"; + public static final String TEST_GET_ATTR_FOR_NONE_TO_PORT_OR_COMPUTE = + "testTranslateGetAttForNoneToPortOrCompute"; + public static final String TEST_GET_ATTR_FOR_ONLY_RESOURCE_NAME = + "testTranslateGetAttOnlyResourceName"; + public static final String TEST_GET_ATTR_FOR_MORE_THAN_ONE_ATTR_IN_ATTR_LIST = + "testTranslateGetAtt"; + public static final String TEST_GET_ATTR_FOR_NOT_SUPPORTED_ATTR_IN_ATTR_LIST = + "testTranslateGetAttUnsupportedAttr"; + public static final String TEST_IGNORE_GET_ATTR_FROM_OUTPUT = + "testTranslateGetAttUnsupportedResource"; + public static final String TEST_OUTPUT_GET_ATTR = + "testTranslateGetAttDynamicParam"; + public static final String TEST_DEPENDS_ON_MULTIPLE_COMPUTE = "TestDependsOnMultipleComputes"; + public static final String TEST_DEPENDS_ON_NODE_TEMPLATE_TRANSLATION_ORDER_INVARIANCE = + "TestDependsOnNodeTemplateTranslationOrderInvariance"; + + public static final String TEST_SINGLE_NESTED_RESOURCE = "TestTranslateHeatSingleNestedResource"; + public static final String TEST_MULTIPLE_NESTED_RESOURCE = "TestTranslateHeatNestedMultiBase"; + public static final String TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE = + "TestTranslateHeatNestedRecursiveMultiLevel"; + + public static final String TEST_SECURITY_RULE_PORT_NESTED_CONNECTION = + "TestSecurityRuleToPortNestedConnection"; + public static final String TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT = + "TestSecurityRuleToPortSharedPortNestedConnection"; + public static final String TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION = + "TestSecurityRuleToPortMultiLevelNestedConnection"; + public static final String TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT = + "TestSecurityRuleToPortSharedPortMultiLevelNestedConnection"; +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/hotmog/HotMogTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/hotmog/HotMogTranslationTest.java index 13be7235d9..703efc99b6 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/hotmog/HotMogTranslationTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/hotmog/HotMogTranslationTest.java @@ -1,7 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.fullvfexample.hotmog; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; public class HotMogTranslationTest extends BaseResourceTranslationTest { @@ -14,4 +34,4 @@ public class HotMogTranslationTest extends BaseResourceTranslationTest { public void testTranslate() throws Exception { testTranslation(); } -}
\ No newline at end of file +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/vmmesmall/VmmeSmallTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/vmmesmall/VmmeSmallTranslationTest.java index 4db0bdf339..d28512ee1e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/vmmesmall/VmmeSmallTranslationTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/fullvfexample/vmmesmall/VmmeSmallTranslationTest.java @@ -1,7 +1,28 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.fullvfexample.vmmesmall; -import org.openecomp.sdc.translator.services.heattotosca.impl.BaseResourceTranslationTest; import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; + public class VmmeSmallTranslationTest extends BaseResourceTranslationTest { @@ -14,4 +35,4 @@ public class VmmeSmallTranslationTest extends BaseResourceTranslationTest { public void testTranslate() throws Exception { testTranslation(); } -}
\ No newline at end of file +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/helper/ContrailTranslationHelperTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/helper/ContrailTranslationHelperTest.java new file mode 100644 index 0000000000..9b4a59b01f --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/helper/ContrailTranslationHelperTest.java @@ -0,0 +1,149 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.helper; + +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.sdc.heat.datatypes.model.Resource; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static org.junit.Assert.*; + +/** + * @author SHIRIA + * @since December 21, 2016. + */ +public class ContrailTranslationHelperTest { + + @Test + public void testgetComputeNodeTypeId() + throws Exception { + Resource serviceTemplate = new Resource(); + serviceTemplate.setProperties(new HashMap<>()); + serviceTemplate.getProperties().put("image_name", "aaaa"); + Map flavor = new HashMap<>(); + flavor.put("get_param", "bbb_flavor_name"); + serviceTemplate.getProperties().put("flavor", flavor); + String computeNodeTypeId = + new ContrailTranslationHelper() + .getComputeNodeTypeId(serviceTemplate, "123", "123", new TranslationContext()); + Assert.assertEquals("org.openecomp.resource.vfc.nodes.heat.bbb", computeNodeTypeId); + } + + @Test + public void testTranslateFnSplitFunctionExp1() { + // property value = { "Fn::Split" : [ ",", "management,left,right,other" ] } + Map propertyValue = new HashMap(); + List funcListVal = new ArrayList<>(); + funcListVal.add(","); + funcListVal.add("management,left,right,other"); + propertyValue.put("Fn::Split", funcListVal); + Optional<List<Map<String, List>>> translatedFun = + new ContrailTranslationHelper().translateFnSplitFunction(propertyValue, 4, false); + + assertEquals(true, translatedFun.isPresent()); + if (translatedFun.isPresent()) { + assertEquals(4, translatedFun.get().size()); + for (int i = 0; i < translatedFun.get().size(); i++) { + assertEquals("management,left,right,other", translatedFun.get().get(i).get("token").get(0)); + assertEquals(",", translatedFun.get().get(i).get("token").get(1)); + assertEquals(i, translatedFun.get().get(i).get("token").get(2)); + } + } + } + + @Test + public void testTranslateFnSplitFunctionBoolean() { + // property value = { "Fn::Split" : [ ";", "n;false;false;false" ] } + Map propertyValue = new HashMap(); + List funcListVal = new ArrayList<>(); + funcListVal.add(";"); + funcListVal.add("n;false;false;false"); + propertyValue.put("Fn::Split", funcListVal); + Optional<List<Map<String, List>>> translatedFun = + new ContrailTranslationHelper().translateFnSplitFunction(propertyValue, 4, true); + + assertEquals(true, translatedFun.isPresent()); + if (translatedFun.isPresent()) { + assertEquals(4, translatedFun.get().size()); + for (int i = 0; i < translatedFun.get().size(); i++) { + assertEquals("false;false;false;false", translatedFun.get().get(i).get("token").get(0)); + assertEquals(";", translatedFun.get().get(i).get("token").get(1)); + assertEquals(i, translatedFun.get().get(i).get("token").get(2)); + } + } + } + + @Test + public void testTranslateFnSplitFunctionExp2() { + // property value = { "Fn::Split" : [ ";", "n;false;false;false" ] } + Map propertyValue = new HashMap(); + List funcListVal = new ArrayList<>(); + funcListVal.add(";"); + funcListVal.add("n;false;false;false"); + propertyValue.put("Fn::Split", funcListVal); + Optional<List<Map<String, List>>> translatedFun = + new ContrailTranslationHelper().translateFnSplitFunction(propertyValue, 4, false); + + assertEquals(true, translatedFun.isPresent()); + if (translatedFun.isPresent()) { + assertEquals(4, translatedFun.get().size()); + for (int i = 0; i < translatedFun.get().size(); i++) { + assertEquals("n;false;false;false", translatedFun.get().get(i).get("token").get(0)); + assertEquals(";", translatedFun.get().get(i).get("token").get(1)); + assertEquals(i, translatedFun.get().get(i).get("token").get(2)); + } + } + } + + @Test + public void testTranslateFnSplitFunctionWithParam() { + // property value = { "Fn::Split" : [ ",", Ref: st_shared_ip_list ] } + Map propertyValue = new HashMap(); + List funcListVal = new ArrayList<>(); + funcListVal.add(","); + Map innerMap = new HashMap(); + innerMap.put("Ref", "st_shared_ip_list"); + funcListVal.add(innerMap); + propertyValue.put("Fn::Split", funcListVal); + Optional<List<Map<String, List>>> translatedFun = + new ContrailTranslationHelper().translateFnSplitFunction(propertyValue, 5, false); + + assertEquals(true, translatedFun.isPresent()); + if (translatedFun.isPresent()) { + assertEquals(5, translatedFun.get().size()); + for (int i = 0; i < translatedFun.get().size(); i++) { + assertEquals("st_shared_ip_list", + + ((Map) translatedFun.get().get(i).get("token").get(0)).get("get_input")); + assertEquals(",", translatedFun.get().get(i).get("token").get(1)); + assertEquals(i, translatedFun.get().get(i).get("token").get(2)); + } + } + } +} + diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ContrailV2VMInterfaceToNetResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ContrailV2VMInterfaceToNetResourceConnectionTest.java deleted file mode 100644 index 1dce2c8d70..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ContrailV2VMInterfaceToNetResourceConnectionTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -/** - * @author Avrahamg - * @since August 10, 2016 - */ -public class ContrailV2VMInterfaceToNetResourceConnectionTest extends BaseResourceTranslationTest { - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testTranslateVMIToNetNestedConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nested/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nested/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateVMIToSharedNetNestedConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/VMInterfaceToNettworkConnection/shared/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/VMInterfaceToNettworkConnection/shared/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateVMIToNetMultiConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/VMInterfaceToNettworkConnection/multi/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/VMInterfaceToNettworkConnection/multi/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/DependsOnResourceBaseTranslationlTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/DependsOnResourceBaseTranslationlTest.java deleted file mode 100644 index 2ba2d936e8..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/DependsOnResourceBaseTranslationlTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Test; - -public class DependsOnResourceBaseTranslationlTest extends BaseResourceTranslationTest { - public DependsOnResourceBaseTranslationlTest() { - inputFilesPath = "/mock/services/heattotosca/baseResourceTranslation/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/baseResourceTranslation/expectedoutputfiles"; - } - - @Test - public void testTranslate() throws Exception { - testTranslation(); - } -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/MultipleHeatTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/MultipleHeatTranslationTest.java deleted file mode 100644 index caec80c11b..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/MultipleHeatTranslationTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -public class MultipleHeatTranslationTest extends BaseResourceTranslationTest { - - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testTranslateBaseHeats() throws Exception { - inputFilesPath = "/mock/multiHeat/allHeatsAreBase/inputs"; - outputFilesPath = "/mock/multiHeat/allHeatsAreBase/expectedOutput/"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateOneOutOfFourFilesIsNotBase() throws Exception { - inputFilesPath = "/mock/multiHeat/referencedHeatResources/inputs"; - outputFilesPath = "/mock/multiHeat/referencedHeatResources/expectedOutput/"; - initTranslatorAndTranslate(); - testTranslation(); - } -} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/PortToContrailV2VirtualNetworkResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/PortToContrailV2VirtualNetworkResourceConnectionTest.java deleted file mode 100644 index 156008edb9..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/PortToContrailV2VirtualNetworkResourceConnectionTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -public class PortToContrailV2VirtualNetworkResourceConnectionTest - extends BaseResourceTranslationTest { - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testPortToNetNestedConnection() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/nested/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/nested/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testPortToSharedNetNestedConnection() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/shared/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/shared/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testPortToNetMultiConnection() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/multi/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/multi/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/PortToNetResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/PortToNetResourceConnectionTest.java deleted file mode 100644 index 6411d4759e..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/PortToNetResourceConnectionTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -public class PortToNetResourceConnectionTest extends BaseResourceTranslationTest { - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testTranslatePortToNetNestedConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/porttonetconnection/nested/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/porttonetconnection/nested/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslatePortToSharedNetNestedConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/porttonetconnection/shared/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/porttonetconnection/shared/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslatePortToNetMultiConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/porttonetconnection/multi/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/porttonetconnection/multi/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationCinderVolumeAttachmentImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationCinderVolumeAttachmentImplTest.java deleted file mode 100644 index 54c06dd0d0..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationCinderVolumeAttachmentImplTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -public class ResourceTranslationCinderVolumeAttachmentImplTest extends BaseResourceTranslationTest { - - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testTranslateAllResourcesInOneFile() throws Exception { - inputFilesPath = "/mock/services/heattotosca/vol_att/volume_and_attach_one_file/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/vol_att/volume_and_attach_one_file/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testVolFileIsNestedInMainHeatFile() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/vol_att/volume_file_nested_in_main_file_in_manifest/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/vol_att/volume_file_nested_in_main_file_in_manifest/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testVolFileAsDataOfNested() throws Exception { - inputFilesPath = "/mock/services/heattotosca/vol_att/nested_with_inner_vol/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/vol_att/nested_with_inner_vol/out"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testVolFileIsParallelToMainHeatFile() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/vol_att/volume_file_parallel_to_main_file/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/vol_att/volume_file_parallel_to_main_file/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationCinderVolumeImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationCinderVolumeImplTest.java deleted file mode 100644 index 30ccbdd53d..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationCinderVolumeImplTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Test; - -public class ResourceTranslationCinderVolumeImplTest extends BaseResourceTranslationTest { - public ResourceTranslationCinderVolumeImplTest() { - inputFilesPath = "/mock/services/heattotosca/cinder_volume_translation/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/cinder_volume_translation/expectedoutputfiles"; - } - - @Test - public void testTranslate() throws Exception { - testTranslation(); - } -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailServiceInstanceImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailServiceInstanceImplTest.java deleted file mode 100644 index 40f5eb1200..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailServiceInstanceImplTest.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -/** - * @author shiria - * @since August 07, 2016. - */ -public class ResourceTranslationContrailServiceInstanceImplTest - extends BaseResourceTranslationTest { - - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testTranslateOneServiceInstance() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/oneServiceInstance/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/oneServiceInstance/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateDiffServiceTemplate() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/diffServiceTemplate/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/diffServiceTemplate/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateSharedNetworkMulti() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/sharedNetworkMulti/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/sharedNetworkMulti/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateSameServiceTemplate() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/sameServiceTemplate/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/contrail2serviceinstance/sameServiceTemplate/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - - /* - //TODO -- need to be tested once the 2 level nested For shared resources bug will be fixed - ATTASDC-1065 - @Test - public void testTranslateSharedNetworkNested() throws Exception { - inputFilesPath = "/mock/services/heattotosca/contrail2serviceinstance/sharedNetworkNested/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/contrail2serviceinstance/sharedNetworkNested/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - */ -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailServiceTemplateImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailServiceTemplateImplTest.java deleted file mode 100644 index 42b6db0e71..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailServiceTemplateImplTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.openecomp.sdc.heat.datatypes.model.Resource; -import org.openecomp.sdc.translator.services.heattotosca.helper.ContrailTranslationHelper; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author shiria - * @since August 09, 2016. - */ -public class ResourceTranslationContrailServiceTemplateImplTest { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Test - public void testStaticGetComputeNodeTypeId() throws Exception { - Resource serviceTemplate = new Resource(); - serviceTemplate.setProperties(new HashMap<>()); - serviceTemplate.getProperties().put("image_name", "aaaa"); - String computeNodeTypeId = - new ContrailTranslationHelper().getComputeNodeTypeId("123", serviceTemplate); - Assert.assertEquals("org.openecomp.resource.vfc.nodes.heat.compute_123", computeNodeTypeId); - } - - @Test - public void testNamingConventionGetComputeNodeTypeId() throws Exception { - Resource serviceTemplate = new Resource(); - serviceTemplate.setProperties(new HashMap<>()); - Map image = new HashMap<>(); - image.put("get_param", "bbb_image_name"); - serviceTemplate.getProperties().put("image_name", image); - String computeNodeTypeId = - new ContrailTranslationHelper().getComputeNodeTypeId("123", serviceTemplate); - Assert.assertEquals(computeNodeTypeId, "org.openecomp.resource.vfc.nodes.heat.bbb"); - } - - @Test - public void testNoNamingConventionGetComputeNodeTypeId() throws Exception { - Resource serviceTemplate = new Resource(); - serviceTemplate.setProperties(new HashMap<>()); - Map image = new HashMap<>(); - image.put("get_file", "bbb_image"); - serviceTemplate.getProperties().put("image_name", image); - String computeNodeTypeId = - new ContrailTranslationHelper().getComputeNodeTypeId("123", serviceTemplate); - Assert.assertEquals(computeNodeTypeId, "org.openecomp.resource.vfc.nodes.heat.compute_123"); - } -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailV2VMInterfaceImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailV2VMInterfaceImplTest.java deleted file mode 100644 index 95757e7cf9..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailV2VMInterfaceImplTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -/** - * @author Avrahamg - * @since August 10, 2016 - */ -public class ResourceTranslationContrailV2VMInterfaceImplTest extends BaseResourceTranslationTest { - - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testTranslateVMIWithGetResource() throws Exception { - inputFilesPath = "/mock/services/heattotosca/contrailv2VMinterface/oneNet/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/contrailv2VMinterface/oneNet/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateVMIWithListOfNetworks() throws Exception { - inputFilesPath = "/mock/services/heattotosca/contrailv2VMinterface/listNet/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/contrailv2VMinterface/listNet/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNeutronPortImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNeutronPortImplTest.java deleted file mode 100644 index 6e2c298346..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNeutronPortImplTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Test; - -public class ResourceTranslationNeutronPortImplTest extends BaseResourceTranslationTest { - - { - inputFilesPath = "/mock/services/heattotosca/neutron_port_translation/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/neutron_port_translation/expectedoutputfiles"; - } - - @Test - public void testTranslate() throws Exception { - testTranslation(); - } - -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNeutronSecurityGroupImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNeutronSecurityGroupImplTest.java deleted file mode 100644 index 1791f10b1c..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNeutronSecurityGroupImplTest.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Test; - -public class ResourceTranslationNeutronSecurityGroupImplTest extends BaseResourceTranslationTest { - - { - inputFilesPath = "/mock/services/heattotosca/neutron_security_group_translation/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/neutron_security_group_translation/expectedoutputfiles"; - } - - @Test - public void testTranslate() throws Exception { - testTranslation(); - } - - -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNovaServerGroupsImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNovaServerGroupsImplTest.java deleted file mode 100644 index aabee8f56f..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationNovaServerGroupsImplTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Test; - -public class ResourceTranslationNovaServerGroupsImplTest extends BaseResourceTranslationTest { - { - inputFilesPath = "/mock/services/heattotosca/novaservergroups/inputfiles"; - outputFilesPath = "/mock/services/heattotosca/novaservergroups/expectedoutputfiles"; - } - - @Test - public void testTranslate() throws Exception { - testTranslation(); - } - -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/SecurityGroupToNovaResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/SecurityGroupToNovaResourceConnectionTest.java deleted file mode 100644 index ce55800d3a..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/SecurityGroupToNovaResourceConnectionTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -public class SecurityGroupToNovaResourceConnectionTest extends BaseResourceTranslationTest { - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testSecurityGroupToPortConnectionMultiConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/securitygrouptonovaconnectionmulti/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/securitygrouptonovaconnectionmulti/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/SecurityRulesToPortResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/SecurityRulesToPortResourceConnectionTest.java deleted file mode 100644 index a75e0133d9..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/SecurityRulesToPortResourceConnectionTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; - -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; - -public class SecurityRulesToPortResourceConnectionTest extends BaseResourceTranslationTest { - @Override - @Before - public void setUp() throws IOException { - // do not delete this function. it prevents the superclass setup from running - } - - @Test - public void testTranslateSecurityRuleToPortNestedConnection() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportnestedconnection/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportnestedconnection/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testTranslateSecurityRuleToPortSharedPortNestedConnection() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityruletosharedportlinking/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityruletosharedportlinking/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testSecurityRuleToPortConnectionMultiConnection() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportconnectionmulti/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportconnectionmulti/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test - public void testSecurityRuleToPortConnectionNestedGetResource() throws Exception { - inputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportconnectiongetresource/inputfiles"; - outputFilesPath = - "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportconnectiongetresource/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - -}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionCatalogInstanceFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionCatalogInstanceFullTest.java new file mode 100644 index 0000000000..b6d0fb8ce9 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionCatalogInstanceFullTest.java @@ -0,0 +1,53 @@ +package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest; + +import java.io.IOException; + +public class UnifiedCompositionCatalogInstanceFullTest extends BaseFullTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testThreeNovaSameTypeDiffGetAttrFromSameEntitiesTypes() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypeGetAttrBetweenThem/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypeGetAttrBetweenThem/out"; + + testTranslationWithUnifiedCondition(); + } + + @Test + public void testThreeNovaSameTypePortsConnectedToDiffNetworks() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypePortsConnectedToDiffNetworks/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypePortsConnectedToDiffNetworks/out"; + + testTranslationWithUnifiedCondition(); + } + + @Test + public void testThreeNovaSameTypeDiffImageName() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypeDiffImageName/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/catalogInstances/threeComputesSameTypeDiffImageName/out"; + + testTranslationWithUnifiedCondition(); + } + + + + private void testTranslationWithUnifiedCondition() throws IOException { + initTranslatorAndTranslate(); + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java new file mode 100644 index 0000000000..5db90c2230 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java @@ -0,0 +1,72 @@ +package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest; + +import java.io.IOException; + +public class UnifiedCompositionMixPatternFullTest extends BaseFullTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testMixPatterns() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/oneAppearancePerPattern/out"; + + testTranslationWithInit(); + } + + @Test + public void testMixPatternsWithConnectivityBetweenPatterns() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/connectivityBetweenPatterns/out"; + + testTranslationWithInit(); + } + + @Test + public void testMixPatternsWithConnectivityAndMoreThanOneOccurenceForEachPattern() + throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/twoAppearancePerPatternWithConnectivities/out"; + + testTranslationWithInit(); + } + + @Test + public void testDuplicateResourceIdsInDiffAddOnFiles() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/duplicateResourceIdsInDiffAddOnFiles/in"; + + try { + testTranslationWithInit(); + }catch(Exception e){ + Assert.assertEquals(e.getMessage(), "Resource with id lb_0_int_oam_int_0_port occures more " + + "than once in different addOn files"); + } + } + + @Test + public void testMixPatternsWithDependencyConnectivity() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/mixPatterns/dependencyConnectivity/out"; + + testTranslationWithInit(); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionNestedSingleComputeFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionNestedSingleComputeFullTest.java new file mode 100644 index 0000000000..0001ec8d54 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionNestedSingleComputeFullTest.java @@ -0,0 +1,154 @@ +package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest; + +import java.io.IOException; + +public class UnifiedCompositionNestedSingleComputeFullTest extends BaseFullTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testNestedWithOneCompute() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneCompute/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithOneCompute/out"; + + testTranslationWithInit(); + } + + @Test + public void testOneNestedWithTwoComputesOfSameType() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithTwoComputesOfSameType/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithTwoComputesOfSameType/out"; + + testTranslationWithInit(); + } + + @Test + public void testOneNestedWithTwoDiffComputeTypes() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithTwoDiffComputeTypes/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedWithTwoDiffComputeTypes/out"; + + testTranslationWithInit(); + } + + @Test + public void testTwoNestedNodeTemplatesOfSameType() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/twoNestedNodeTemplatesWithSameComputeType/out"; + + testTranslationWithInit(); + } + + @Test + public void testTwoDiffNestedFilesWithSameComputeType() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/diffNestedFilesWithSameComputeType/out"; + + testTranslationWithInit(); + } + + @Test + public void testNestedCompositionNodesConnectedIn() throws IOException { + /* + Nested Composition + node connected In + a. Dependency between a nested compute and a non-nested compute resource + b. Dependency between a nested compute and another nested resource (same type) + c. Dependency between a nested compute and another nested resource (different type) + d. Dependency between a non-consolidation entity resource and a nested compute resource + e. Dependency between a non-consolidation entity resource and a non-nested compute resource + f. Security Rule to Port nested connection + g. Security Rule to Port nested shared connection + */ + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesConnectedIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesConnectedIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testNestedCompositionNodesGetAttrIn() throws IOException { + /* + Nested composition with Get attribute in - + a. Get attribute in a non-nested compute from a nested compute resource + b. Get attribute in a non-nested compute from another consolidation entity resource + c. Get attribute in a nested compute from another nested compute resource of same type + d. Get attribute in a nested compute from another nested compute resource of different type + e. Get attribute in a nested compute from a regular consolidation entity resource + f. Get attribute in a non-consolidation entity resource from a nested compute resource + g. Get attribute in a non-consolidation entity resource from a non-nested compute resource + */ + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedNodesGetAttrIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testNestedCompositionOutputParamGetAttrIn() throws IOException { + /* + Nested Composition + Output Param get attribute In + a. From a nested resource + b. From another nested resource of same type (represented by same nested file) + c. From a nested resource of different type (represented by different nested file) + d. From a non-nested consolidation entity resource + e. From a regular non-consolidation entity resource + */ + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedOutputParamGetAttrIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedOutputParamGetAttrIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testMultiLevelNestedComposition() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedMultiLevels/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/nestedMultiLevels/out"; + + testTranslationWithInit(); + } + + @Test + public void testThreeNestedSameTypeTwoPointintToSameNestedFile() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedSameTypeTwoPointingOnSameNestedFile/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedSameTypeTwoPointingOnSameNestedFile/out"; + + testTranslationWithInit(); + } + + @Test + public void testThreeNestedSameTypePointingToDiffFiles() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/nestedSingleCompute/threeNestedPointingToThreeDiffNestedFilesSameComputeType/out"; + + testTranslationWithInit(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionScalingInstancesFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionScalingInstancesFullTest.java new file mode 100644 index 0000000000..ddff4ee477 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionScalingInstancesFullTest.java @@ -0,0 +1,169 @@ +package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest; + + +import java.io.IOException; + +public class UnifiedCompositionScalingInstancesFullTest extends BaseFullTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testComputesSameTypeWithOnePortEach() throws IOException { + //1. Scenario #1 - Compute type 1 – 2 nova, each one with 1 port + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePort/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePort/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesTypesTwoComputesEachWithOnePort() throws IOException { + //2. Scenario #2 - 2 compute types, each type has 2 computes with one port per compute + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePort/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePort/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesTypesTwoComputesEachWithOnePortWithGetAttr() throws IOException { + //3. Scenario #2 + between the 2 nova which has diff types there is getAttr + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePortWithGetAttr/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/twoComputeTypesOnePortWithGetAttr/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesSameTypeWithOnePortOneGroupEach() throws IOException { + //4. Scenario #1 + group – NovaServerGroup, connected to both nova + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOneGroup/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances/oneComputeTypeOnePortOneGroup/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesSameTypeWithOnePortEachAndNodesConnectedIn() throws IOException { + //5. Scenario #1 + node connected In – security Rule point to both port + “resource” with + // dependency (depends_on) to both computes + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortNodeConnectedIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortNodeConnectedIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesSameTypeWithOnePortEachAndNodesConnectedOut() throws IOException { + //6. Scenario#1 + node connected Out – both port connected to same network + each compute + // connected to same volume + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortNodeConnectedOut/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortNodeConnectedOut/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesSameTypeWithOnePortEachAndGetAttrIn() throws IOException { + /* + 7. Scenario#1 + node get attr in – network which include + a. Property with getAttr from Compute1 + b. Property with getAttr from Compute2 + c. Property with getAttr from port + */ + + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortGetAttrIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortGetAttrIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesSameTypeWithOnePortEachAndGetAttrOut() throws IOException { + /* + 8. Scenario#1 + node get attr out + network + a. Compute1 with property1, that include getAttr from network + b. Compute2 with property2, that include getAttr from network + c. Port with property, that include getAttr from network + */ + + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortGetAttrOut/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortGetAttrOut/out"; + + testTranslationWithInit(); + } + + + @Test + public void testComputesSameTypeWithOnePortEachAndOutputParamGetAttrIn() throws IOException { + /* + 9. Scenario#1 + output parameter get attr in – 3 output parameters + a. Output param with getAttr from Compute1 + b. Output param with getAttr from Compute2 + c. Output param with getAttr from Port + */ + + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortOutputParamGetAttrIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortOutputParamGetAttrIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputesSameTypeWithOnePortEachAndGetAttrOutBetweenConsolidationEntities() throws + IOException { + /* + 10. Scenario#1 + node get attr out + a. Compute1 with property1, that include getAttr from port1 + b. Compute2 with property2, that include getAttr from port2 + c. Port1 with property, that include getAttr from compute1 + d. Port2 with property, that include getAttr from compute2 + */ + + inputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortGetAttrOutComputePort/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/scalingInstances" + + "/oneComputeTypeOnePortGetAttrOutComputePort/out"; + + testTranslationWithInit(); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSingleSubstitutionFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSingleSubstitutionFullTest.java new file mode 100644 index 0000000000..477f72520a --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSingleSubstitutionFullTest.java @@ -0,0 +1,227 @@ +package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest; + +import java.io.IOException; + +public class UnifiedCompositionSingleSubstitutionFullTest extends BaseFullTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testComputeWithTwoDifferentPortTypes() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortType/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortType/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoSamePortTypes() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwosameporttypes/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwosameporttypes/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoDifferentPortTypesAndNested() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computewithtwodiffporttypesandnested/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoDifferentPortAndServerGroup() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeAndServerGroup/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeAndServerGroup/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoPortsDiffTypeAndNodeConnectedIn() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoPortsSameTypeAndNodeConnectedIn() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoPortsDiffTypeAndNodeConnectedOut() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithDiffPortTypeNodeConnectedOut/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoPortsSameTypeAndNodeConnectedOut() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/computeWithSamePortTypeNodeConnectedOut/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoDifferentPortTypesAndOutParamGetAttIn() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/diffPortTypeAndOutParamGetAttrIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/diffPortTypeAndOutParamGetAttrIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testComputeWithTwoSamePortTypesAndOutParamGetAttIn() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/samePortTypeAndOutParamGetAttrIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/samePortTypeAndOutParamGetAttrIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testGeneralVf() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/generalVf/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/generalVf/out"; + + testTranslationWithInit(); + } + + @Test + public void testTwoSetsOfSingle() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/twoSetsOfSingle/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/twoSetsOfSingle/out"; + + + testTranslationWithInit(); + } + + @Test + public void testTwoSetsOfSingleWithGetAttrBetweenThem() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/twoComputesWithGetAttrBetweenThem/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/twoComputesWithGetAttrBetweenThem/out"; + + testTranslationWithInit(); + } + + @Test + public void testOneComputeTwoDiffPortsAndGetAttrIn() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testOneComputeTwoSimilarPortsAndGetAttrIn() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortsAndGetAttrIn/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortsAndGetAttrIn/out"; + + testTranslationWithInit(); + } + + @Test + public void testOneComputeTwoDiffPortsAndGetAttrOut() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttOut/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeDiffPortTypesAndGetAttOut/out"; + + testTranslationWithInit(); + } + + @Test + public void testOneComputeTwoSimilarPortsAndGetAttrOut() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortTypesAndGetAttOut/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/oneComputeSamePortTypesAndGetAttOut/out"; + + testTranslationWithInit(); + } + + @Test + public void testThreeNovaSameTypeNoConsolidation() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeSameComputesNoConsolidation/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeSameComputesNoConsolidation/out"; + + testTranslationWithInit(); + } + + @Test + public void testThreeNovaDiffTypeWithPorts() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithPorts/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithPorts/out"; + + testTranslationWithInit(); + } + + @Test + public void testThreeNovaDiffTypeWithAllConnectivities() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeDiffComputesWithAllConnectivities/out"; + + testTranslationWithInit(); + } + + @Test + public void testThreeNovaSameTypeWithGetAttrOutFromPort() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeNovaSameTypeWithGetAttrFromPort/in"; + outputFilesPath = + "/mock/services/heattotosca/fulltest/singleSubstitution/threeNovaSameTypeWithGetAttrFromPort/out"; + + testTranslationWithInit(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImplTest.java new file mode 100644 index 0000000000..878183b239 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImplTest.java @@ -0,0 +1,104 @@ +package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; + +import java.io.IOException; + +public class FunctionTranslationGetAttrImplTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslateGetAtt() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrUC/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrUC/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateGetAttribute(TestConstants.TEST_GET_ATTR_FOR_MORE_THAN_ONE_ATTR_IN_ATTR_LIST); + } + + @Test + public void testTranslateGetAttUnsupportedResource() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrUnsupportedResource/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrUnsupportedResource/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateGetAttribute(TestConstants.TEST_IGNORE_GET_ATTR_FROM_OUTPUT); + } + + @Test + public void testTranslateGetAttUnsupportedAttr() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrUnsupportedAttr/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrUnsupportedAttr/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateGetAttribute(TestConstants.TEST_GET_ATTR_FOR_NOT_SUPPORTED_ATTR_IN_ATTR_LIST); + } + + @Test + public void testTranslateGetAttNestedAttr() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/getAttrNestedAtt/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/getAttrNestedAtt/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateGetAttDynamicParam() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/getAttrDynamicParam/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/getAttrDynamicParam/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateGetAttribute(TestConstants.TEST_OUTPUT_GET_ATTR); + } + + @Test + public void testTranslateGetAttOnlyResourceName() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrOnlyResourceName/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/getAttr/getAttrOnlyResourceName/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateGetAttribute(TestConstants.TEST_GET_ATTR_FOR_ONLY_RESOURCE_NAME); + } + + @Test + public void testTranslateGetAttNonePortOrCompute() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/buildconsolidationdata/getattribute/noneToPortOrCompute/inputs"; + outputFilesPath = + "/mock/services/heattotosca/buildconsolidationdata/getattribute/noneToPortOrCompute/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateGetAttribute(TestConstants.TEST_GET_ATTR_FOR_NONE_TO_PORT_OR_COMPUTE); + } + + @Test + public void testTranslateDynamicGetAttrWithEmptyMapDefaultValue() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/getAttrDynamicParamEmptyMap/inputs"; + outputFilesPath = + "/mock/services/heattotosca/getAttrDynamicParamEmptyMap/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetFileImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetFileImplTest.java new file mode 100644 index 0000000000..b79671d763 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetFileImplTest.java @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.functiontranslation; + +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; +import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.sdc.tosca.services.ToscaConstants; +import org.openecomp.sdc.tosca.services.ToscaFileOutputService; +import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl; +import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslationFactory; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; + +import java.util.HashMap; +import java.util.List; + +/** + * @author SHIRIA + * @since December 18, 2016. + */ +public class FunctionTranslationGetFileImplTest { + @Test + public void testGetFileWithExtensionFunction() { + String functionName = "get_file"; + Object function = "scripFileName.sh"; + String heatFileName = "heatFileName"; + HeatOrchestrationTemplate heatOrchestrationTemplate = new HeatOrchestrationTemplate(); + NodeTemplate nodeTemplate = new NodeTemplate(); + TranslationContext context = new TranslationContext(); + + testGetToscaFunctionForGetFile(functionName, function, heatFileName, heatOrchestrationTemplate, + nodeTemplate, context); + } + + @Test + public void testGetFileWithoutExtensionFunction() { + String functionName = "get_file"; + Object function = "scripFileName"; + String heatFileName = "heatFileName"; + HeatOrchestrationTemplate heatOrchestrationTemplate = new HeatOrchestrationTemplate(); + NodeTemplate nodeTemplate = new NodeTemplate(); + TranslationContext context = new TranslationContext(); + + //# route_targets: { "Fn::Split" : [ ",", Ref: route_targets ] } + testGetToscaFunctionForGetFile(functionName, function, heatFileName, heatOrchestrationTemplate, + nodeTemplate, context); + } + + private void testGetToscaFunctionForGetFile(String functionName, Object function, + String heatFileName, + HeatOrchestrationTemplate heatOrchestrationTemplate, + NodeTemplate nodeTemplate, + TranslationContext context) { + Assert.assertEquals(true, FunctionTranslationFactory.getInstance(functionName).isPresent()); + if(FunctionTranslationFactory.getInstance(functionName).isPresent()) { + Object result = FunctionTranslationFactory.getInstance(functionName).get() + .translateFunction(null, null, null, functionName, function, heatFileName, + heatOrchestrationTemplate, + nodeTemplate, context); + Assert.assertNotNull(((HashMap) result).get("get_artifact")); + List artifactParameters = (List) ((HashMap) result).get("get_artifact"); + Assert.assertNotNull(artifactParameters); + Assert.assertEquals(artifactParameters.size(), 2); + Assert.assertEquals(artifactParameters.get(0), ToscaConstants.MODELABLE_ENTITY_NAME_SELF); + Assert.assertEquals(artifactParameters.get(1), ((String) function).split("\\.")[0]); + + Assert.assertNotNull(nodeTemplate.getArtifacts()); + Assert.assertNotNull( + nodeTemplate.getArtifacts().get(FileUtils.getFileWithoutExtention((String) function))); + ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl(); + Assert.assertEquals( + nodeTemplate.getArtifacts().get(FileUtils.getFileWithoutExtention((String) function)) + .getFile(), "../" + toscaFileOutputService.getArtifactsFolderName() + "/" + function); + } + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetParamImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetParamImplTest.java new file mode 100644 index 0000000000..981c061e0a --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetParamImplTest.java @@ -0,0 +1,249 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.functiontranslation; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.*; + +public class FunctionTranslationGetParamImplTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testStringGetParamFuncValue() throws Exception { + FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl(); + String functionValue = "parameter1"; + + Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param", + functionValue, "dummy", null, null, null); + + assertEquals(true, translatedFunc instanceof Map); + if (translatedFunc instanceof Map) { + assertNotNull(((Map) translatedFunc).get("get_input")); + assertEquals(functionValue, ((Map) translatedFunc).get("get_input")); + } + + } + + @Test + public void testListGetParamFuncValue() throws Exception { + FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl(); + List functionValue = new ArrayList(); + functionValue.add("parameter1"); + functionValue.add(0); + functionValue.add("key1"); + + Object translatedFunc = translationImpl.translateFunction(null, null, null,"get_param", + functionValue, "dummy", null, null, null); + + assertEquals(true, translatedFunc instanceof Map); + if (translatedFunc instanceof Map) { + assertNotNull(((Map) translatedFunc).get("get_input")); + Object translatedFunValue = ((Map) translatedFunc).get("get_input"); + assertEquals(true, translatedFunValue instanceof List); + if (translatedFunValue instanceof List) { + + assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0)); + assertEquals(functionValue.get(1), ((List) translatedFunValue).get(1)); + assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2)); + } + } + + } + + @Test + public void testMapGetParamFuncValue() throws Exception { + // input heat function expression + //{get_param: [parameter1, {get_param:indexParam}, key1]} + // output translated function expression + //{get_input: [parameter1, {get_input:indexParam}, key1]} + + FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl(); + List functionValue = new ArrayList(); + functionValue.add("parameter1"); + Map innerParamMap = new HashMap(); + innerParamMap.put("get_param", "indexParam"); + functionValue.add(innerParamMap); + functionValue.add("key1"); + + Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param", + functionValue, "dummy", null, null, null); + + assertEquals(true, translatedFunc instanceof Map); + if (translatedFunc instanceof Map) { + assertNotNull(((Map) translatedFunc).get("get_input")); + Object translatedFunValue = ((Map) translatedFunc).get("get_input"); + assertEquals(true, translatedFunValue instanceof List); + if (translatedFunValue instanceof List) { + assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0)); + assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2)); + assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map); + if (((List) translatedFunValue).get(1) instanceof Map) { + assertEquals(innerParamMap.get("get_param"), ((Map) ((List) translatedFunValue).get(1)) + .get("get_input")); + } + } + + } + } + + @Test + public void testMapWithMapGetParamFuncValue() throws Exception { + // input heat function expression + //{get_param: [parameter1, {get_param:[parameter2, {get_param:indexParam}]}, key1]} + // output translated function expression + //{get_input: [parameter1, {get_input:[parameter2, {get_input:indexParam}]}, key1]} + + FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl(); + List functionValue = new ArrayList(); + functionValue.add("parameter1"); + Map firstInnerParamMap = new HashMap(); + Map secondInnerParamMap = new HashMap(); + secondInnerParamMap.put("get_param", "indexParam"); + List innerfunction = new ArrayList(); + innerfunction.add("parameter2"); + innerfunction.add(secondInnerParamMap); + firstInnerParamMap.put("get_param", innerfunction); + functionValue.add(firstInnerParamMap); + functionValue.add("key1"); + + Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param", + functionValue, "dummy", null, null, null); + + assertEquals(true, translatedFunc instanceof Map); + if (translatedFunc instanceof Map) { + assertNotNull(((Map) translatedFunc).get("get_input")); + Object translatedFunValue = ((Map) translatedFunc).get("get_input"); + assertEquals(true, translatedFunValue instanceof List); + if (translatedFunValue instanceof List) { + assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0)); + assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2)); + assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map); + if (((List) translatedFunValue).get(1) instanceof Map) { + assertEquals(true, ((Map) ((List) translatedFunValue).get(1)).get("get_input") + instanceof List); + List innerTranslatedFunction = + (List) ((Map) ((List) translatedFunValue).get(1)).get("get_input"); + assertEquals(innerfunction.get(0), innerTranslatedFunction.get(0)); + assertEquals(true, innerTranslatedFunction.get(1) instanceof Map); + assertEquals(secondInnerParamMap.get("get_param"), + ((Map) innerTranslatedFunction.get(1)).get("get_input")); + } + } + + } + } + + @Test + public void testInnerNotSupportedFuncGetParamFuncValue() throws Exception { + // input heat function expression + //{get_param: [parameter1, {str_replace: {template:$AAkgiru, AA:{get_param:prameter2}}}, key1]} + // output translated function expression + //{get_input: [parameter1, {str_replace: {template:$AAkgiru, AA:{get_input:parameter2}}}, key1]} + + FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl(); + List functionValue = new ArrayList(); + functionValue.add("parameter1"); + + Map templateMap = new HashMap(); + templateMap.put("template", "$AAkgiru"); + + Map strReplaceFuncMap = new HashMap(); + Map getParamMapInner = new HashMap(); + getParamMapInner.put("get_param", "parameter2"); + templateMap.put("AA", getParamMapInner); + + Map innerParamValue = new HashMap(); + innerParamValue.putAll(templateMap); + innerParamValue.putAll(strReplaceFuncMap); + + strReplaceFuncMap.put("str_replace", innerParamValue); + functionValue.add(strReplaceFuncMap); + + functionValue.add("key1"); + + Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param", + functionValue, "dummy", null, null, null); + + assertEquals(true, translatedFunc instanceof Map); + if (translatedFunc instanceof Map) { + assertNotNull(((Map) translatedFunc).get("get_input")); + Object translatedFunValue = ((Map) translatedFunc).get("get_input"); + assertEquals(true, translatedFunValue instanceof List); + if (translatedFunValue instanceof List) { + assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0)); + assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2)); + assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map); + if (((List) translatedFunValue).get(1) instanceof Map) { + assertEquals(strReplaceFuncMap.get("get_param"), + ((Map) ((List) translatedFunValue).get(1)) + .get("get_input")); + } + assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map); + if (((List) translatedFunValue).get(1) instanceof Map) { + assertEquals(true, ((Map) ((List) translatedFunValue).get(1)).get("str_replace") instanceof Map); + Map strReplacefunctionValue = (Map) ((Map) ((List) translatedFunValue).get(1)).get("str_replace"); + assertEquals(templateMap.get("template"), strReplacefunctionValue.get("template")); + assertEquals(true, strReplacefunctionValue.get("AA") instanceof Map); + if (strReplacefunctionValue.get("AA") instanceof Map) { + assertEquals(getParamMapInner.get("get_param"), ((Map) strReplacefunctionValue.get + ("AA")).get("get_input")); + } + } + } + } + } + + @Test + public void testTranslateHeatPseudoParamUsedFromMainHeat() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateHeatPseudoParamUsedFromNestedHeat() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/nameextractor/NameExtractorContrailComputeImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/nameextractor/NameExtractorContrailComputeImplTest.java new file mode 100644 index 0000000000..9fdd2db4cb --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/nameextractor/NameExtractorContrailComputeImplTest.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.nameextractor; + +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.sdc.heat.datatypes.model.Resource; +import org.openecomp.sdc.translator.services.heattotosca.impl.nameextractor.NameExtractorContrailComputeImpl; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author SHIRIA + * @since December 21, 2016. + */ +public class NameExtractorContrailComputeImplTest{ + + + @Test + public void testStaticGetComputeNodeTypeId() throws Exception { + Resource serviceTemplateResource = new Resource(); + serviceTemplateResource.setProperties(new HashMap<>()); + serviceTemplateResource.getProperties().put("image_name", "aaaa"); + String computeNodeTypeId = + new NameExtractorContrailComputeImpl().extractNodeTypeName(serviceTemplateResource, "123", "123"); + Assert.assertEquals("org.openecomp.resource.vfc.nodes.heat.compute_123", computeNodeTypeId); + } + + @Test + public void testComputeNodeTypeIdIsTakingFlavorNameIfImageNameIsNotAsNamingConvention() + throws Exception { + Resource serviceTemplateResource = new Resource(); + serviceTemplateResource.setProperties(new HashMap<>()); + serviceTemplateResource.getProperties().put("image_name", "aaaa"); + Map flavor = new HashMap<>(); + flavor.put("get_param", "bbb_flavor_name"); + serviceTemplateResource.getProperties().put("flavor", flavor); + String computeNodeTypeId = + new NameExtractorContrailComputeImpl().extractNodeTypeName(serviceTemplateResource, "123", "123"); + Assert.assertEquals("org.openecomp.resource.vfc.nodes.heat.bbb", computeNodeTypeId); + } + + @Test + public void testStaticGetComputeNodeTypeIdByFlavor() throws Exception { + Resource serviceTemplateResource = new Resource(); + serviceTemplateResource.setProperties(new HashMap<>()); + serviceTemplateResource.getProperties().put("image_name", "aaaa"); + serviceTemplateResource.getProperties().put("flavor", "aaaa_flavor_name"); + String computeNodeTypeId = + new NameExtractorContrailComputeImpl().extractNodeTypeName(serviceTemplateResource, "123", "123"); + Assert.assertEquals("org.openecomp.resource.vfc.nodes.heat.compute_123", computeNodeTypeId); + } + + + @Test + public void testNamingConventionGetComputeNodeTypeId() throws Exception { + Resource serviceTemplateResource = new Resource(); + serviceTemplateResource.setProperties(new HashMap<>()); + Map image = new HashMap<>(); + image.put("get_param", "bbb_image_name"); + serviceTemplateResource.getProperties().put("image_name", image); + String computeNodeTypeId = + new NameExtractorContrailComputeImpl().extractNodeTypeName(serviceTemplateResource, "123", "123"); + Assert.assertEquals(computeNodeTypeId, "org.openecomp.resource.vfc.nodes.heat.bbb"); + } + + @Test + public void testNoNamingConventionGetComputeNodeTypeId() throws Exception { + Resource serviceTemplateResource = new Resource(); + serviceTemplateResource.setProperties(new HashMap<>()); + Map image = new HashMap<>(); + image.put("get_file", "bbb_image"); + serviceTemplateResource.getProperties().put("image_name", image); + String computeNodeTypeId = + new NameExtractorContrailComputeImpl().extractNodeTypeName(serviceTemplateResource, "123", "123"); + Assert.assertEquals(computeNodeTypeId, "org.openecomp.resource.vfc.nodes.heat.compute_123"); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/helper/impl/NameExtractorServiceImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/nameextractor/NameExtractorNovaServerImplTest.java index 1fb1b023e0..58237975b6 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/helper/impl/NameExtractorServiceImplTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/nameextractor/NameExtractorNovaServerImplTest.java @@ -1,22 +1,43 @@ -package org.openecomp.sdc.translator.services.heattotosca.helper.impl; +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.nameextractor; -import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; -import org.openecomp.sdc.translator.services.heattotosca.Constants; -import org.openecomp.sdc.translator.services.heattotosca.impl.ResourceTranslationNovaServerImpl; import org.junit.Test; +import org.openecomp.sdc.heat.datatypes.model.Resource; +import org.openecomp.sdc.translator.services.heattotosca.Constants; +import org.openecomp.sdc.translator.services.heattotosca.impl.nameextractor.NameExtractorNovaServerImpl; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationNovaServerImpl; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; /** - * @author Avrahamg - * @since August 04, 2016 + * @author SHIRIA + * @since December 20, 2016. */ -public class NameExtractorServiceImplTest { +public class NameExtractorNovaServerImplTest { @Test public void shouldReturnNamePrefixIfPropertyNameMatchWithIndex() throws Exception { Map<String, Object> propertiesMap = new HashMap(); @@ -25,10 +46,12 @@ public class NameExtractorServiceImplTest { String name = "avi_test_name_1"; imageMap.put("get_param", name); propertiesMap.put(Constants.NAME_PROPERTY_NAME, imageMap); + Resource resource = new Resource(); + resource.setProperties(propertiesMap); ResourceTranslationNovaServerImpl resourceTranslationNovaServer = new ResourceTranslationNovaServerImpl(); - String localNodeType = resourceTranslationNovaServer - .createLocalNodeType(new ServiceTemplate(), propertiesMap, "Ignore"); + String localNodeType = + new NameExtractorNovaServerImpl().extractNodeTypeName(resource, "Ignore", "Ignore"); assertTrue(localNodeType.equals("org.openecomp.resource.vfc.nodes.heat.avi_test")); } @@ -41,10 +64,12 @@ public class NameExtractorServiceImplTest { List val = Arrays.asList("virc_vm_names", "2"); imageMap.put("get_param", val); propertiesMap.put(Constants.NAME_PROPERTY_NAME, imageMap); + Resource resource = new Resource(); + resource.setProperties(propertiesMap); ResourceTranslationNovaServerImpl resourceTranslationNovaServer = new ResourceTranslationNovaServerImpl(); - String localNodeType = resourceTranslationNovaServer - .createLocalNodeType(new ServiceTemplate(), propertiesMap, "Ignore"); + String localNodeType = + new NameExtractorNovaServerImpl().extractNodeTypeName(resource, "Ignore", "Ignore"); assertTrue(localNodeType.equals("org.openecomp.resource.vfc.nodes.heat.virc_vm")); } @@ -59,10 +84,12 @@ public class NameExtractorServiceImplTest { List val = Arrays.asList("virc_vm_names", nameValMap); nameMap.put("get_param", val); propertiesMap.put(Constants.NAME_PROPERTY_NAME, nameMap); + Resource resource = new Resource(); + resource.setProperties(propertiesMap); ResourceTranslationNovaServerImpl resourceTranslationNovaServer = new ResourceTranslationNovaServerImpl(); - String localNodeType = resourceTranslationNovaServer - .createLocalNodeType(new ServiceTemplate(), propertiesMap, "Ignore"); + String localNodeType = + new NameExtractorNovaServerImpl().extractNodeTypeName(resource, "Ignore", "Ignore"); assertTrue(localNodeType.equals("org.openecomp.resource.vfc.nodes.heat.virc_vm")); } @@ -75,10 +102,12 @@ public class NameExtractorServiceImplTest { String name = "avi_test_names"; imageMap.put("get_param", name); propertiesMap.put(Constants.NAME_PROPERTY_NAME, imageMap); + Resource resource = new Resource(); + resource.setProperties(propertiesMap); ResourceTranslationNovaServerImpl resourceTranslationNovaServer = new ResourceTranslationNovaServerImpl(); - String localNodeType = resourceTranslationNovaServer - .createLocalNodeType(new ServiceTemplate(), propertiesMap, "Ignore"); + String localNodeType = + new NameExtractorNovaServerImpl().extractNodeTypeName(resource, "Ignore", "Ignore"); assertTrue(localNodeType.equals("org.openecomp.resource.vfc.nodes.heat.avi_test")); } @@ -94,10 +123,12 @@ public class NameExtractorServiceImplTest { imageMap = new HashMap(); imageMap.put("get_param", flavor); propertiesMap.put("flavor", imageMap); + Resource resource = new Resource(); + resource.setProperties(propertiesMap); ResourceTranslationNovaServerImpl resourceTranslationNovaServer = new ResourceTranslationNovaServerImpl(); - String localNodeType = resourceTranslationNovaServer - .createLocalNodeType(new ServiceTemplate(), propertiesMap, "Ignore"); + String localNodeType = + new NameExtractorNovaServerImpl().extractNodeTypeName(resource, "Ignore", "Ignore"); assertTrue(localNodeType.equals("org.openecomp.resource.vfc.nodes.heat.avi_test2")); } @@ -109,10 +140,14 @@ public class NameExtractorServiceImplTest { String name = "avi_test_namesw"; imageMap.put("get_param", name); propertiesMap.put(Constants.NAME_PROPERTY_NAME, imageMap); + Resource resource = new Resource(); + resource.setProperties(propertiesMap); ResourceTranslationNovaServerImpl resourceTranslationNovaServer = new ResourceTranslationNovaServerImpl(); - String localNodeType = resourceTranslationNovaServer - .createLocalNodeType(new ServiceTemplate(), propertiesMap, "this.is.test.resource"); + String localNodeType = + new NameExtractorNovaServerImpl() + .extractNodeTypeName(resource, "this.is.test.resource", "this.is.test.resource"); assertTrue(localNodeType.equals("org.openecomp.resource.vfc.nodes.heat.this_is_test_resource")); } -}
\ No newline at end of file + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/BaseResourceTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java index 9282d4e4eb..9f0a6d79b9 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/BaseResourceTranslationTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java @@ -1,32 +1,74 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; +import static org.junit.Assert.assertEquals; + +import org.apache.commons.collections4.MapUtils; +import org.junit.Assert; +import org.junit.Before; +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.core.translator.api.HeatToToscaTranslator; +import org.openecomp.core.translator.datatypes.TranslatorOutput; +import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.validation.util.MessageContainerUtil; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage; +import org.openecomp.sdc.logging.types.LoggerConstants; +import org.openecomp.sdc.logging.types.LoggerErrorCode; +import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.tosca.services.ToscaFileOutputService; import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl; import org.openecomp.sdc.translator.TestUtils; -import org.openecomp.core.translator.api.HeatToToscaTranslator; -import org.openecomp.core.translator.datatypes.TranslatorOutput; -import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory; -import org.openecomp.core.utilities.file.FileUtils; -import org.openecomp.core.validation.types.MessageContainerUtil; -import org.apache.commons.collections4.MapUtils; -import org.junit.Assert; -import org.junit.Before; - -import java.io.*; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; +import org.openecomp.sdc.translator.services.heattotosca.ConfigConstants; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; import java.net.URL; -import java.util.*; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; -import static org.junit.Assert.assertEquals; -public class BaseResourceTranslationTest { +public class BaseFullTranslationTest { protected String inputFilesPath; protected String outputFilesPath; + protected TranslationContext translationContext; + + private String zipFilename = "VSP.zip"; private HeatToToscaTranslator heatToToscaTranslator; private File translatedZipFile; @@ -38,6 +80,11 @@ public class BaseResourceTranslationTest { initTranslatorAndTranslate(); } + protected void testTranslationWithInit() throws IOException { + initTranslatorAndTranslate(); + testTranslation(); + } + protected void initTranslatorAndTranslate() throws IOException { heatToToscaTranslator = HeatToToscaTranslatorFactory.getInstance().createInterface(); translatedZipFile = translateZipFile(); @@ -45,7 +92,8 @@ public class BaseResourceTranslationTest { protected void testTranslation() throws IOException { - URL url = BaseResourceTranslationTest.class.getResource(outputFilesPath); + URL url = BaseFullTranslationTest.class.getResource(outputFilesPath); + expectedResultFileNameSet = new HashSet<>(); String path = url.getPath(); File pathFile = new File(path); @@ -85,7 +133,6 @@ public class BaseResourceTranslationTest { } private File translateZipFile() throws IOException { - String zipFilename = "VSP.zip"; URL inputFilesUrl = this.getClass().getResource(inputFilesPath); String path = inputFilesUrl.getPath(); TestUtils.addFilesToTranslator(heatToToscaTranslator, path); @@ -93,7 +140,10 @@ public class BaseResourceTranslationTest { Assert.assertNotNull(translatorOutput); if (MapUtils.isNotEmpty(translatorOutput.getErrorMessages()) && MapUtils.isNotEmpty( MessageContainerUtil - .getMessageByLevel(org.openecomp.sdc.datatypes.error.ErrorLevel.ERROR, translatorOutput.getErrorMessages()))) { + .getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages()))) { + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.VALIDATE_HEAT_BEFORE_TRANSLATE, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't translate HEAT file"); throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage( "Error in validation " + getErrorAsString(translatorOutput.getErrorMessages())) .withId("Validation Error").withCategory(ErrorCategory.APPLICATION).build()); @@ -110,7 +160,7 @@ public class BaseResourceTranslationTest { return file; } - private String getErrorAsString(Map<String, List<org.openecomp.sdc.datatypes.error.ErrorMessage>> errorMessages) { + private String getErrorAsString(Map<String, List<ErrorMessage>> errorMessages) { StringBuilder sb = new StringBuilder(); errorMessages.entrySet().forEach( entry -> sb.append("File:").append(entry.getKey()).append(System.lineSeparator()) @@ -119,9 +169,9 @@ public class BaseResourceTranslationTest { return sb.toString(); } - private String getErrorList(List<org.openecomp.sdc.datatypes.error.ErrorMessage> errors) { + private String getErrorList(List<ErrorMessage> errors) { StringBuilder sb = new StringBuilder(); - errors.stream().forEach( + errors.forEach( error -> sb.append(error.getMessage()).append("[").append(error.getLevel()).append("]") .append(System.lineSeparator())); return sb.toString(); diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java new file mode 100644 index 0000000000..c5fcd442cb --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java @@ -0,0 +1,366 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import static org.junit.Assert.assertEquals; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateComputeConnectivityIn; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateComputeConnectivityOut; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateDependsOnInConsolidationData; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateGetAttr; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateGroupsInConsolidationData; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateNestedConsolidationData; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validatePortConnectivityIn; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validatePortConnectivityOut; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validatePortsInConsolidationData; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateSubstituteMappingInConsolidationData; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateVolumeInConsolidationData; + +import org.apache.commons.collections4.MapUtils; +import org.junit.Assert; +import org.junit.Before; +import org.openecomp.core.translator.datatypes.TranslatorOutput; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.validation.util.MessageContainerUtil; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.ErrorCategory; +import org.openecomp.sdc.common.errors.ErrorCode; +import org.openecomp.sdc.common.utils.SdcCommon; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.heat.datatypes.manifest.FileData; +import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; +import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile; +import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage; +import org.openecomp.sdc.logging.types.LoggerConstants; +import org.openecomp.sdc.logging.types.LoggerErrorCode; +import org.openecomp.sdc.logging.types.LoggerTragetServiceName; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.ToscaFileOutputService; +import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl; +import org.openecomp.sdc.translator.TestUtils; +import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData; +import org.openecomp.sdc.translator.services.heattotosca.TranslationService; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + + +public class BaseResourceTranslationTest { + + protected String inputFilesPath; + protected String outputFilesPath; + protected TranslationContext translationContext; + + private String zipFilename = "VSP.zip"; + private TranslationService translationService; + private File translatedZipFile; + + private Map<String, byte[]> expectedResultMap = new HashMap<>(); + private Set<String> expectedResultFileNameSet = new HashSet<>(); + + private final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME; + private String validationFilename = "validationOutput.json"; + + @Before + public void setUp() throws IOException { + initTranslatorAndTranslate(); + } + + protected void initTranslatorAndTranslate() throws IOException { + translationService = new TranslationService(); + translationContext = new TranslationContext(); + translatedZipFile = translateZipFile(); + } + + protected void testTranslation() throws IOException { + + URL url = BaseResourceTranslationTest.class.getResource(outputFilesPath); + + String path = url.getPath(); + File pathFile = new File(path); + File[] files = pathFile.listFiles(); + Assert.assertNotNull("manifest files is empty", files); + for (File expectedFile : files) { + expectedResultFileNameSet.add(expectedFile.getName()); + try (FileInputStream input = new FileInputStream(expectedFile)) { + expectedResultMap.put(expectedFile.getName(), FileUtils.toByteArray(input)); + } + } + + try (FileInputStream fis = new FileInputStream(translatedZipFile); + ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis))) { + ZipEntry entry; + String name; + String expected; + String actual; + + while ((entry = zis.getNextEntry()) != null) { + + name = entry.getName() + .substring(entry.getName().lastIndexOf(File.separator) + 1, entry.getName().length()); + if (expectedResultFileNameSet.contains(name)) { + expected = new String(expectedResultMap.get(name)).trim().replace("\r", ""); + actual = new String(FileUtils.toByteArray(zis)).trim().replace("\r", ""); + assertEquals("difference in file: " + name, expected, actual); + + expectedResultFileNameSet.remove(name); + } + } + if (expectedResultFileNameSet.isEmpty()) { + expectedResultFileNameSet.forEach(System.out::println); + } + } + assertEquals(0, expectedResultFileNameSet.size()); + } + + private File translateZipFile() throws IOException { + URL inputFilesUrl = this.getClass().getResource(inputFilesPath); + String path = inputFilesUrl.getPath(); + addFilesToTranslator(translationContext, path); + TranslatorOutput translatorOutput = translationService.translateHeatFiles(translationContext); + Assert.assertNotNull(translatorOutput); + if (MapUtils.isNotEmpty(translatorOutput.getErrorMessages()) && MapUtils.isNotEmpty( + MessageContainerUtil + .getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages()))) { + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.VALIDATE_HEAT_BEFORE_TRANSLATE, ErrorLevel.ERROR.name(), + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't translate HEAT file"); + throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage( + "Error in validation " + getErrorAsString(translatorOutput.getErrorMessages())) + .withId("Validation Error").withCategory(ErrorCategory.APPLICATION).build()); + } + File file = new File(path + "/" + zipFilename); + file.createNewFile(); + + try (FileOutputStream fos = new FileOutputStream(file)) { + ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl(); + fos.write( + toscaFileOutputService.createOutputFile(translatorOutput.getToscaServiceModel(), null)); + } + + return file; + } + + private String getErrorAsString(Map<String, List<ErrorMessage>> errorMessages) { + StringBuilder sb = new StringBuilder(); + errorMessages.entrySet().forEach( + entry -> sb.append("File:").append(entry.getKey()).append(System.lineSeparator()) + .append(getErrorList(entry.getValue()))); + + return sb.toString(); + } + + private String getErrorList(List<ErrorMessage> errors) { + StringBuilder sb = new StringBuilder(); + errors.forEach( + error -> sb.append(error.getMessage()).append("[").append(error.getLevel()).append("]") + .append(System.lineSeparator())); + return sb.toString(); + } + + public void addFilesToTranslator(TranslationContext translationContext, String path) + throws IOException { + File manifestFile = new File(path); + File[] files = manifestFile.listFiles(); + byte[] fileContent; + + Assert.assertNotNull("manifest files is empty", files); + + for (File file : files) { + + try (FileInputStream fis = new FileInputStream(file)) { + + fileContent = FileUtils.toByteArray(fis); + + if (file.getName().equals(MANIFEST_NAME)) { + addManifest(translationContext, MANIFEST_NAME, fileContent); + } else { + if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) { + addFile(translationContext, file.getName(), fileContent); + } + } + } + } + } + + public static void addManifest(TranslationContext translationContext, + String name, byte[] content) { + ManifestContent manifestData = JsonUtil.json2Object(new String(content), ManifestContent.class); + ManifestFile manifest = new ManifestFile(); + manifest.setName(name); + manifest.setContent(manifestData); + translationContext.setManifest(manifest); + translationContext.addFile(name, content); + addFilesFromManifestToTranslationContextManifestFilesMap(translationContext, manifestData + .getData()); + } + + public static void addFile(TranslationContext translationContext, + String name, byte[] content) { + translationContext.addFile(name, content); + } + + private static void addFilesFromManifestToTranslationContextManifestFilesMap(TranslationContext + translationContext, List<FileData> fileDataListFromManifest) { + for (FileData fileFromManfiest : fileDataListFromManifest) { + translationContext.addManifestFile(fileFromManfiest.getFile(), fileFromManfiest.getType()); + } + } + + public void validateSubsMappingInConsolidationData(){ + ConsolidationData consolidationData = translationContext.getConsolidationData(); + Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates + (expectedResultMap); + Assert.assertNotNull(consolidationData); + validateSubstituteMappingInConsolidationData(consolidationData,expectedServiceTemplateModels); + } + + public void validateComputeTemplateConsolidationData(ConsolidationDataValidationType + validationType, + String testName) { + ConsolidationData consolidationData = translationContext.getConsolidationData(); + Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates + (expectedResultMap); + Assert.assertNotNull(consolidationData); + Assert.assertNotNull(consolidationData.getComputeConsolidationData()); + Set<String> serviceTemplateFileNames = consolidationData.getComputeConsolidationData() + .getAllServiceTemplateFileNames(); + Assert.assertNotNull(serviceTemplateFileNames); + for(String serviceTemplateName : serviceTemplateFileNames){ + Assert.assertTrue(expectedServiceTemplateModels.containsKey(serviceTemplateName)); + ServiceTemplate expectedServiceTemplate = expectedServiceTemplateModels.get + (serviceTemplateName); + FileComputeConsolidationData fileComputeConsolidationData = consolidationData + .getComputeConsolidationData().getFileComputeConsolidationData(serviceTemplateName); + Assert.assertNotNull(fileComputeConsolidationData); + Set<String> computeTypes = fileComputeConsolidationData.getAllComputeTypes(); + Assert.assertNotNull(computeTypes); + for(String computeType : computeTypes) { + TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData + .getTypeComputeConsolidationData(computeType); + Assert.assertNotNull(typeComputeConsolidationData); + + Set<String> computeNodeTemplateIds = typeComputeConsolidationData + .getAllComputeNodeTemplateIds(); + Assert.assertNotNull(computeNodeTemplateIds); + Assert.assertNotEquals(computeNodeTemplateIds.size(), 0); + + for(String computeNodeTemplateId : computeNodeTemplateIds) { + ComputeTemplateConsolidationData computeTemplateConsolidationData = + typeComputeConsolidationData.getComputeTemplateConsolidationData + (computeNodeTemplateId); + switch(validationType){ + case VALIDATE_GROUP: + validateGroupsInConsolidationData(computeNodeTemplateId, + computeTemplateConsolidationData, expectedServiceTemplate); + break; + case VALIDATE_PORT: + validatePortsInConsolidationData(computeNodeTemplateId, + computeTemplateConsolidationData, + expectedServiceTemplate); + break; + case VALIDATE_VOLUME: + validateVolumeInConsolidationData(computeNodeTemplateId, + computeTemplateConsolidationData, expectedServiceTemplate, testName); + break; + case VALIDATE_CONNECTIVITY: + validateComputeConnectivityIn(computeTemplateConsolidationData, + expectedServiceTemplate); + validateComputeConnectivityOut(computeNodeTemplateId,computeTemplateConsolidationData, + expectedServiceTemplate); + break; + case VALIDATE_DEPENDS_ON: + validateDependsOnInConsolidationData(computeNodeTemplateId, + computeTemplateConsolidationData, + expectedServiceTemplate, testName); + break; + } + } + } + } + } + + public void validateGetAttribute(String testName){ + Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates + (expectedResultMap); + validateGetAttr(translationContext,expectedServiceTemplateModels,testName); + } + + public void validateNestedTemplateConsolidationData(String testName){ + validateNestedConsolidationData(translationContext, testName); + } + + public void validatePortTemplateConsolidationData(ConsolidationDataValidationType + validationType, + String testName) { + ConsolidationData consolidationData = translationContext.getConsolidationData(); + Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates + (expectedResultMap); + Assert.assertNotNull(consolidationData); + Assert.assertNotNull(consolidationData.getPortConsolidationData()); + Set<String> serviceTemplateFileNames = consolidationData.getPortConsolidationData() + .getAllServiceTemplateFileNames(); + Assert.assertNotNull(serviceTemplateFileNames); + for(String serviceTemplateName : serviceTemplateFileNames){ + Assert.assertTrue(expectedServiceTemplateModels.containsKey(serviceTemplateName)); + ServiceTemplate expectedServiceTemplate = expectedServiceTemplateModels.get + (serviceTemplateName); + FilePortConsolidationData filePortConsolidationData = consolidationData + .getPortConsolidationData().getFilePortConsolidationData(serviceTemplateName); + Assert.assertNotNull(filePortConsolidationData); + + Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds(); + Assert.assertNotNull(portNodeTemplateIds); + Assert.assertNotEquals(portNodeTemplateIds.size(), 0); + + for(String portNodeTemplateId : portNodeTemplateIds) { + PortTemplateConsolidationData portTemplateConsolidationData = + filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId); + switch(validationType){ + case VALIDATE_CONNECTIVITY: + validatePortConnectivityIn(portTemplateConsolidationData,expectedServiceTemplate); + validatePortConnectivityOut(portNodeTemplateId, portTemplateConsolidationData, + expectedServiceTemplate); + break; + } + } + } + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ContrailV2VlanToInterfaceResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ContrailV2VlanToInterfaceResourceConnectionTest.java new file mode 100644 index 0000000000..a6944bacad --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ContrailV2VlanToInterfaceResourceConnectionTest.java @@ -0,0 +1,77 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import java.io.IOException; + +/** + * @author SHIRIA + * @since December 06, 2016. + */ +public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanToInterfaceNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanToNetMultiNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVTSBCVendorHeat() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ContrailV2VmInterfaceToNetResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ContrailV2VmInterfaceToNetResourceConnectionTest.java new file mode 100644 index 0000000000..86e9afbbe0 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ContrailV2VmInterfaceToNetResourceConnectionTest.java @@ -0,0 +1,138 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import java.io.IOException; + + +public class ContrailV2VmInterfaceToNetResourceConnectionTest extends BaseResourceTranslationTest { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslateVMIToNetNestedConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nested/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nested/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanToNetNestedConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/VlanToNetConnection/nested/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VlanToNetConnection/nested/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateVMIToNetMultiNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanToNetMultiNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/VlanToNetConnection/nestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VlanToNetConnection/nestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateVMIToSharedNetNestedConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/VMInterfaceToNettworkConnection/shared/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/shared/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanToSharedNetNestedConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/VlanToNetConnection/shared/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VlanToNetConnection/shared/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateVMIToNetSharedMultiNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/sharedNestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/sharedNestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateVMIToNetSharedAddOnConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/VMInterfaceToNettworkConnection/sharedAddOn/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/sharedAddOn/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanToNetSharedAddOnConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/VlanToNetConnection/sharedAddOn/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VlanToNetConnection/sharedAddOn/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateVMIToNetArrayParameterConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nestedArrayParam/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/VMInterfaceToNettworkConnection/nestedArrayParam/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/DependsOnResourceBaseTranslationlTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/DependsOnResourceBaseTranslationlTest.java new file mode 100644 index 0000000000..117dd0cd59 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/DependsOnResourceBaseTranslationlTest.java @@ -0,0 +1,148 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_MULTIPLE_COMPUTE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_OUT; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODE_TEMPLATE_TRANSLATION_ORDER_INVARIANCE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NO_DEPENDENCY; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType; + +import java.io.IOException; + + +public class DependsOnResourceBaseTranslationlTest extends BaseResourceTranslationTest { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslate() throws Exception { + inputFilesPath = "/mock/services/heattotosca/baseResourceTranslation/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/baseResourceTranslation/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testDependsOnConsolidationNodesConnectedOut() throws Exception { + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/nodesConnectedOut/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/nodesConnectedOut/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_DEPENDS_ON, + TEST_DEPENDS_ON_NODES_CONNECTED_OUT); + } + + @Test + public void testDependsOnConsolidationNodesConnectedIn() throws Exception { + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/nodesConnectedIn/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/nodesConnectedIn/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_DEPENDS_ON, + TEST_DEPENDS_ON_NODES_CONNECTED_IN); + } + + @Test + public void testDependsOnConsolidationNodesConnectedInAndOut() throws Exception { + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/nodesConnectedInOut/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/nodesConnectedInOut/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_DEPENDS_ON, + TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT); + } + + @Test + public void testDependsOnConsolidationNoDependency() throws Exception { + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/noDependency/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/noDependency/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_DEPENDS_ON, + TEST_DEPENDS_ON_NO_DEPENDENCY); + } + + @Test + public void testDependsOnConsolidationInvalidDependencyCandidate() throws Exception { + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/noDependency/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/noDependency/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_DEPENDS_ON, + TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE); + } + + @Test + public void testDependsOnConsolidationMultipleCompute() throws Exception { + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/multiplecompute/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource/multiplecompute/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_DEPENDS_ON, + TEST_DEPENDS_ON_MULTIPLE_COMPUTE); + } + + @Test + public void testDependsOnNodeTemplateTranslationOrderInvariance() throws Exception { + //Tests that the resource dependency is independent of the order of resource translation + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/translationorderinvariance/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/translationorderinvariance/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_DEPENDS_ON, + TEST_DEPENDS_ON_NODE_TEMPLATE_TRANSLATION_ORDER_INVARIANCE); + } + + @Test + public void testDependsOnRemoveDependencyForInvalidCandidates() throws Exception { + //Tests the deletion of dependencies of Compute->Compute, Compute->Port, Port->Port, + // Port->Compute from the original tosca data model + inputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/removeInvalidDependencyFromTosca/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/buildconsolidationdata/dependsonresource" + + "/removeInvalidDependencyFromTosca/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/MultipleHeatTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/MultipleHeatTranslationTest.java new file mode 100644 index 0000000000..eae9d5877a --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/MultipleHeatTranslationTest.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + + +public class MultipleHeatTranslationTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslateBaseHeats() throws Exception { + inputFilesPath = "/mock/multiHeat/allHeatsAreBase/inputs"; + outputFilesPath = "/mock/multiHeat/allHeatsAreBase/expectedOutput/"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateOneOutOfFourFilesIsNotBase() throws Exception { + inputFilesPath = "/mock/multiHeat/referencedHeatResources/inputs"; + outputFilesPath = "/mock/multiHeat/referencedHeatResources/expectedOutput/"; + initTranslatorAndTranslate(); + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/NovaToVolResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/NovaToVolResourceConnectionTest.java index 93a8668a2f..fe6d68aa1b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/NovaToVolResourceConnectionTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/NovaToVolResourceConnectionTest.java @@ -1,14 +1,31 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; import org.junit.Before; import org.junit.Test; import java.io.IOException; -/** - * @author avrahamg - * @since July 26, 2016 - */ + public class NovaToVolResourceConnectionTest extends BaseResourceTranslationTest { @Override @Before @@ -17,10 +34,10 @@ public class NovaToVolResourceConnectionTest extends BaseResourceTranslationTest } @Test - public void testNovaToVolumeConnectionMultiConnection() throws Exception { - inputFilesPath = "/mock/services/heattotosca/novatovolumeconnection/multiconnection/inputfiles"; + public void testNovaToVolumeConnectionSharedAddOnConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/novatovolumeconnection/sharedAddOn/inputfiles"; outputFilesPath = - "/mock/services/heattotosca/novatovolumeconnection/multiconnection/expectedoutputfiles"; + "/mock/services/heattotosca/novatovolumeconnection/sharedAddOn/expectedoutputfiles"; initTranslatorAndTranslate(); testTranslation(); } @@ -45,6 +62,7 @@ public class NovaToVolResourceConnectionTest extends BaseResourceTranslationTest "/mock/services/heattotosca/novatovolumeconnection/nestednotconnected/expectedoutputfiles"; initTranslatorAndTranslate(); testTranslation(); + validateSubsMappingInConsolidationData(); } @Test @@ -55,6 +73,7 @@ public class NovaToVolResourceConnectionTest extends BaseResourceTranslationTest "/mock/services/heattotosca/novatovolumeconnection/nestedconnection/expectedoutputfiles"; initTranslatorAndTranslate(); testTranslation(); + validateSubsMappingInConsolidationData(); } @Test @@ -65,6 +84,7 @@ public class NovaToVolResourceConnectionTest extends BaseResourceTranslationTest "/mock/services/heattotosca/novatovolumeconnection/sharednestedconnection/expectedoutputfiles"; initTranslatorAndTranslate(); testTranslation(); + validateSubsMappingInConsolidationData(); } @Test @@ -76,6 +96,7 @@ public class NovaToVolResourceConnectionTest extends BaseResourceTranslationTest "/mock/services/heattotosca/novatovolumeconnection/sharednestednotconnected/expectedoutputfiles"; initTranslatorAndTranslate(); testTranslation(); + validateSubsMappingInConsolidationData(); } @Test @@ -86,6 +107,42 @@ public class NovaToVolResourceConnectionTest extends BaseResourceTranslationTest "/mock/services/heattotosca/novatovolumeconnection/innernestedconnection/expectedoutputfiles"; initTranslatorAndTranslate(); testTranslation(); + validateSubsMappingInConsolidationData(); + } + + @Test + public void testTranslateNovaToVolumeNestedMultiLevelConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/novatovolumeconnection/nestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/novatovolumeconnection/nestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateSubsMappingInConsolidationData(); } -}
\ No newline at end of file + @Test + public void testTranslateNovaToVolumeSharedNestedMultiLevelConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/novatovolumeconnection/sharedNestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/novatovolumeconnection/sharedNestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateSubsMappingInConsolidationData(); + } + + @Test + public void testTranslateNovaToVolumeInnerHeatVolumeNestedMultiLevelConnection() + throws Exception { + inputFilesPath = + "/mock/services/heattotosca/novatovolumeconnection/innerHeatVolNestedMultiLevel/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/novatovolumeconnection/innerHeatVolNestedMultiLevel/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateSubsMappingInConsolidationData(); + } + + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/PortToContrailV2VirtualNetworkResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/PortToContrailV2VirtualNetworkResourceConnectionTest.java new file mode 100644 index 0000000000..bc8c3385f1 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/PortToContrailV2VirtualNetworkResourceConnectionTest.java @@ -0,0 +1,66 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + + +public class PortToContrailV2VirtualNetworkResourceConnectionTest + extends BaseResourceTranslationTest { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testPortToNetNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/nested/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/nested/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testPortToSharedNetNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/shared/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/shared/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testPortToNetSharedAddOnConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/sharedAddOn/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/porttocontrailv2virtualnetworkconnection/sharedAddOn/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/PortToNetResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/PortToNetResourceConnectionTest.java new file mode 100644 index 0000000000..828904e545 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/PortToNetResourceConnectionTest.java @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + + +public class PortToNetResourceConnectionTest extends BaseResourceTranslationTest { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslatePortToNetNestedConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/porttonetconnection/nested/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/porttonetconnection/nested/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslatePortToNetNestedMultiLevelsConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/porttonetconnection/nestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/porttonetconnection/nestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslatePortToNetSharedNestedMultiLevelsConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/porttonetconnection/sharedNestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/porttonetconnection/sharedNestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslatePortToSharedNetNestedConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/porttonetconnection/shared/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/porttonetconnection/shared/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslatePortToNetSharedAddOnConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/porttonetconnection/sharedAddOn/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/porttonetconnection/sharedAddOn/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationCinderVolumeAttachmentImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationCinderVolumeAttachmentImplTest.java new file mode 100644 index 0000000000..786b613d0f --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationCinderVolumeAttachmentImplTest.java @@ -0,0 +1,85 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_VOLUME_NEGATIVE; +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_VOLUME_POSITIVE; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType; + +import java.io.IOException; + + +public class ResourceTranslationCinderVolumeAttachmentImplTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslateAllResourcesInOneFile() throws Exception { + inputFilesPath = "/mock/services/heattotosca/vol_attach/volume_and_attach_one_file/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/vol_attach/volume_and_attach_one_file/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_VOLUME, + TEST_VOLUME_POSITIVE); + } + + @Test + public void testVolFileIsNestedInMainHeatFile() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/vol_attach/volume_file_nested_in_main_file_in_manifest/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/vol_attach/volume_file_nested_in_main_file_in_manifest/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_VOLUME, + TEST_VOLUME_POSITIVE); + } + + @Test + public void testVolFileAsDataOfNested() throws Exception { + inputFilesPath = "/mock/services/heattotosca/vol_attach/nested_with_inner_vol/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/vol_attach/nested_with_inner_vol/out"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_VOLUME, + TEST_VOLUME_POSITIVE); + } + + @Test + public void testVolFileIsParallelToMainHeatFile() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/vol_attach/volume_file_parallel_to_main_file/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/vol_attach/volume_file_parallel_to_main_file/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_VOLUME, + TEST_VOLUME_NEGATIVE); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationCinderVolumeImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationCinderVolumeImplTest.java new file mode 100644 index 0000000000..6afb3cf5bd --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationCinderVolumeImplTest.java @@ -0,0 +1,36 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Test; + + +public class ResourceTranslationCinderVolumeImplTest extends BaseResourceTranslationTest { + public ResourceTranslationCinderVolumeImplTest() { + inputFilesPath = "/mock/services/heattotosca/cinder_volume_translation/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/cinder_volume_translation/expectedoutputfiles"; + } + + @Test + public void testTranslate() throws Exception { + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImplTest.java new file mode 100644 index 0000000000..723766ba78 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailServiceInstanceImplTest.java @@ -0,0 +1,99 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + + +public class ResourceTranslationContrailServiceInstanceImplTest + extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslateOneServiceInstance() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/oneServiceInstance/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/oneServiceInstance/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateDiffServiceTemplate() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/diffServiceTemplate/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/diffServiceTemplate/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateSharedNetworkMulti() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/sharedNetworkMulti/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/sharedNetworkMulti/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateSameServiceTemplate() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/sameServiceTemplate/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/sameServiceTemplate/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + + @Test + public void testTranslateConnectToNetworkMultiNested() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/connectToNetworkMultiNested/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/connectToNetworkMultiNested/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testTranslateConnectToSharedNetworkMultiNested() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/connectToNetworkSharedMultiNested/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrail2serviceinstance/connectToNetworkSharedMultiNested/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailV2Test.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2Test.java index e4e1ad9216..fe47858727 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationContrailV2Test.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2Test.java @@ -1,4 +1,24 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; import org.junit.Before; import org.junit.Test; @@ -53,4 +73,4 @@ public class ResourceTranslationContrailV2Test extends BaseResourceTranslationTe } -}
\ No newline at end of file +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2VlanSubInterfaceImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2VlanSubInterfaceImplTest.java new file mode 100644 index 0000000000..796bb82dbd --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2VlanSubInterfaceImplTest.java @@ -0,0 +1,62 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import java.io.IOException; + +/** + * @author SHIRIA + * @since December 04, 2016. + */ +public class ResourceTranslationContrailV2VlanSubInterfaceImplTest extends + BaseResourceTranslationTest { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanSubInterfaceWithGetResource() throws Exception { + inputFilesPath = "/mock/services/heattotosca/contrailv2Vlan/oneInterface/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/contrailv2Vlan/oneInterface/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + //todo - remove the ignore once we will support VMI as sub port + @Ignore + @Test + public void testTranslateVlanSubInterfaceWithListOfInterfaceAndNetworks() throws Exception { + inputFilesPath = "/mock/services/heattotosca/contrailv2Vlan/listInterface/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrailv2Vlan/listInterface/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2VmInterfaceImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2VmInterfaceImplTest.java new file mode 100644 index 0000000000..3e69ed17c0 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationContrailV2VmInterfaceImplTest.java @@ -0,0 +1,113 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_CONNECTIVITY_POSITIVE; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType; + +import java.io.IOException; + +/** + * @author Avrahamg + * @since August 10, 2016 + */ +public class ResourceTranslationContrailV2VmInterfaceImplTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslateVMIWithGetResource() throws Exception { + inputFilesPath = "/mock/services/heattotosca/contrailv2VMinterface/oneNet/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/contrailv2VMinterface/oneNet/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validatePortTemplateConsolidationData(ConsolidationDataValidationType + .VALIDATE_CONNECTIVITY, TEST_CONNECTIVITY_POSITIVE); + } + + @Test + public void testTranslateVMIWithListOfNetworks() throws Exception { + inputFilesPath = "/mock/services/heattotosca/contrailv2VMinterface/listNet/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/listNet/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validatePortTemplateConsolidationData(ConsolidationDataValidationType + .VALIDATE_CONNECTIVITY, TEST_CONNECTIVITY_POSITIVE); + } + + @Test + public void testMacAddressesValueMapOfListWithOneItem() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueMapOneItem/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueMapOneItem/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testMacAddressesValueMapOfListWithTwoItems() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueMapTwoItems/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueMapTwoItems/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testMacAddressesValueMapOfListWithStaticValue() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressStaticValue/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressStaticValue/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testMacAddressesValueNotList() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueNotAList/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueNotAList/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testMacAddressesValueInProperForm() throws IOException { + inputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueInProperForm/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/contrailv2VMinterface/macAddressesValueInProperForm/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNeutronPortImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNeutronPortImplTest.java new file mode 100644 index 0000000000..854a2632b3 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNeutronPortImplTest.java @@ -0,0 +1,60 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_CONNECTIVITY_POSITIVE; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType; + +import java.io.IOException; + + +public class ResourceTranslationNeutronPortImplTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslate() throws Exception { + inputFilesPath = "/mock/services/heattotosca/neutron_port_translation/inputfiles"; + outputFilesPath = "/mock/services/heattotosca/neutron_port_translation/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validatePortTemplateConsolidationData(ConsolidationDataValidationType + .VALIDATE_CONNECTIVITY, TEST_CONNECTIVITY_POSITIVE); + } + + @Test + public void testTranslateSecure() throws Exception { + inputFilesPath = "/mock/services/heattotosca/neutron_security_group_translation/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/neutron_security_group_translation/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validatePortTemplateConsolidationData(ConsolidationDataValidationType + .VALIDATE_CONNECTIVITY, TEST_CONNECTIVITY_POSITIVE); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNeutronSecurityGroupImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNeutronSecurityGroupImplTest.java new file mode 100644 index 0000000000..a0766d99ba --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNeutronSecurityGroupImplTest.java @@ -0,0 +1,40 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Test; + + +public class ResourceTranslationNeutronSecurityGroupImplTest extends BaseResourceTranslationTest { + + { + inputFilesPath = "/mock/services/heattotosca/neutron_security_group_translation/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/neutron_security_group_translation/expectedoutputfiles"; + } + + @Test + public void testTranslate() throws Exception { + testTranslation(); + } + + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerGroupsImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerGroupsImplTest.java new file mode 100644 index 0000000000..03b9402e01 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerGroupsImplTest.java @@ -0,0 +1,72 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_GROUP_POSITIVE; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType; + +import java.io.IOException; + + +public class ResourceTranslationNovaServerGroupsImplTest extends BaseResourceTranslationTest { + + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslate() throws Exception { + inputFilesPath = "/mock/services/heattotosca/novaservergroups/staticPolicy/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/novaservergroups/staticPolicy/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_GROUP, + TEST_GROUP_POSITIVE); + } + + @Test + public void testTranslateDynamicPolicy() throws Exception { + inputFilesPath = "/mock/services/heattotosca/novaservergroups/dynamicPolicy/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/novaservergroups/dynamicPolicy/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_GROUP, + TEST_GROUP_POSITIVE); + } + + @Test + public void testTranslateServerGroupShared() throws IOException { + inputFilesPath = "/mock/services/heattotosca/novaservergroups/sharedServerGroup/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/novaservergroups/sharedServerGroup/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateComputeTemplateConsolidationData(ConsolidationDataValidationType.VALIDATE_GROUP, + TEST_GROUP_POSITIVE); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationResourceGroupImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationResourceGroupImplTest.java index de1b0bfe29..1488edc16e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/ResourceTranslationResourceGroupImplTest.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationResourceGroupImplTest.java @@ -1,6 +1,25 @@ -package org.openecomp.sdc.translator.services.heattotosca.impl; +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; -import org.openecomp.sdc.common.errors.CoreException; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -10,10 +29,6 @@ import org.mockito.runners.MockitoJUnitRunner; import java.io.IOException; -/** - * @author shiria - * @since July 21, 2016. - */ @RunWith(MockitoJUnitRunner.class) public class ResourceTranslationResourceGroupImplTest extends BaseResourceTranslationTest { @Rule @@ -87,18 +102,6 @@ public class ResourceTranslationResourceGroupImplTest extends BaseResourceTransl } @Test - public void testTranslateResourceGroupInvalidIndexVar() throws Exception { - thrown.expect(CoreException.class); - thrown.expectMessage( - "'index_var' property has invalid value. Actual value is '{get_param=index_parameter}' while 'String' value expected."); - - inputFilesPath = "/mock/heat/nested/resourceGroupInvalid/inputs"; - outputFilesPath = "/mock/heat/nested/resourceGroupInvalid/expectedoutputfiles"; - initTranslatorAndTranslate(); - testTranslation(); - } - - @Test public void testTranslateMDNS() throws Exception { inputFilesPath = "/mock/heat/nested/resourceGroupMDNS/inputs"; outputFilesPath = "/mock/heat/nested/resourceGroupMDNS/expectedoutputfiles"; @@ -107,4 +110,4 @@ public class ResourceTranslationResourceGroupImplTest extends BaseResourceTransl } -}
\ No newline at end of file +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/SecurityGroupToNovaResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/SecurityGroupToNovaResourceConnectionTest.java new file mode 100644 index 0000000000..3aa8cf5545 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/SecurityGroupToNovaResourceConnectionTest.java @@ -0,0 +1,44 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + +public class SecurityGroupToNovaResourceConnectionTest extends BaseResourceTranslationTest { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testSecurityGroupToPortConnectionAddOnConnection() throws Exception { + inputFilesPath = "/mock/services/heattotosca/securityGroupToNovaAddOn/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/securityGroupToNovaAddOn/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/SecurityRulesToPortResourceConnectionTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/SecurityRulesToPortResourceConnectionTest.java new file mode 100644 index 0000000000..724f6247af --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/SecurityRulesToPortResourceConnectionTest.java @@ -0,0 +1,109 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * 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.sdc.translator.services.heattotosca.impl.resourcetranslation; + +import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateNestedNodesConnectedInSecurityRuleToPort; + +import org.junit.Before; +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants; + +import java.io.IOException; + + +public class SecurityRulesToPortResourceConnectionTest extends BaseResourceTranslationTest { + @Override + @Before + public void setUp() throws IOException { + // do not delete this function. it prevents the superclass setup from running + } + + @Test + public void testTranslateSecurityRuleToPortNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportnestedconnection/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityrulestoportnestedconnection/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateNestedNodesConnectedInSecurityRuleToPort(TestConstants + .TEST_SECURITY_RULE_PORT_NESTED_CONNECTION, translationContext); + } + + @Test + public void testTranslateSecurityRuleToPortSharedPortNestedConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityruletosharedportlinking/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityruletosharedportlinking/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateNestedNodesConnectedInSecurityRuleToPort(TestConstants + .TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT, translationContext); + } + + @Test + public void testSecurityRuleToPortConnectionSharedAddOnConnection() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityRulesToPortSharedAddOn/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityRulesToPortSharedAddOn/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + } + + @Test + public void testSecurityRuleToPortConnectionNestedGetResource() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityRulesToPortGetResource/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/securityRulesToPortGetResource/out"; + initTranslatorAndTranslate(); + testTranslation(); + } + + + @Test + public void testSecurityRuleToPortConnectionNestedMultiLevelsGetResource() throws Exception { + inputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/nestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/nestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateNestedNodesConnectedInSecurityRuleToPort(TestConstants + .TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION, translationContext); + } + + @Test + public void testSecurityRuleToPortConnectionSharedNestedMultiLevelsGetResource() + throws Exception { + inputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/sharedNestedMultiLevels/inputfiles"; + outputFilesPath = + "/mock/services/heattotosca/securityrulestoportconnection/sharedNestedMultiLevels/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + validateNestedNodesConnectedInSecurityRuleToPort(TestConstants + .TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT, translationContext); + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaFunctionConverterTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaFunctionConverterTest.java deleted file mode 100644 index 7fccd6c080..0000000000 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaFunctionConverterTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.openecomp.sdc.translator.services.heattotosca.mapping; - -import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; -import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; -import org.openecomp.sdc.tosca.services.ToscaConstants; -import org.openecomp.sdc.tosca.services.ToscaFileOutputService; -import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl; -import org.openecomp.sdc.translator.services.heattotosca.TranslationContext; -import org.openecomp.core.utilities.file.FileUtils; -import org.junit.Assert; -import org.junit.Test; - -import java.util.HashMap; -import java.util.List; - -public class TranslatorHeatToToscaFunctionConverterTest { - - @Test - public void testGetFileWithExtensionFunction() { - String functionName = "get_file"; - Object function = "scripFileName.sh"; - String heatFileName = "heatFileName"; - HeatOrchestrationTemplate heatOrchestrationTemplate = new HeatOrchestrationTemplate(); - NodeTemplate nodeTemplate = new NodeTemplate(); - TranslationContext context = new TranslationContext(); - - testGetToscaFunctionForGetFile(functionName, function, heatFileName, heatOrchestrationTemplate, - nodeTemplate, context); - } - - @Test - public void testGetFileWithoutExtensionFunction() { - String functionName = "get_file"; - Object function = "scripFileName"; - String heatFileName = "heatFileName"; - HeatOrchestrationTemplate heatOrchestrationTemplate = new HeatOrchestrationTemplate(); - NodeTemplate nodeTemplate = new NodeTemplate(); - TranslationContext context = new TranslationContext(); - - //# route_targets: { "Fn::Split" : [ ",", Ref: route_targets ] } - testGetToscaFunctionForGetFile(functionName, function, heatFileName, heatOrchestrationTemplate, - nodeTemplate, context); - } - - private void testGetToscaFunctionForGetFile(String functionName, Object function, - String heatFileName, - HeatOrchestrationTemplate heatOrchestrationTemplate, - NodeTemplate nodeTemplate, - TranslationContext context) { - Object result = TranslatorHeatToToscaFunctionConverter - .getToscaFunction(functionName, function, heatFileName, heatOrchestrationTemplate, - nodeTemplate, context); - Assert.assertNotNull(((HashMap) result).get("get_artifact")); - List artifactParameters = (List) ((HashMap) result).get("get_artifact"); - Assert.assertNotNull(artifactParameters); - Assert.assertEquals(artifactParameters.size(), 2); - Assert.assertEquals(artifactParameters.get(0), ToscaConstants.MODELABLE_ENTITY_NAME_SELF); - Assert.assertEquals(artifactParameters.get(1), ((String) function).split("\\.")[0]); - - Assert.assertNotNull(nodeTemplate.getArtifacts()); - Assert.assertNotNull( - nodeTemplate.getArtifacts().get(FileUtils.getFileWithoutExtention((String) function))); - ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl(); - Assert.assertEquals( - nodeTemplate.getArtifacts().get(FileUtils.getFileWithoutExtention((String) function)) - .getFile(), "../" + toscaFileOutputService.getArtifactsFolderName() + "/" + function); - } -} |