diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java')
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionServiceTest.java | 1640 |
1 files changed, 1640 insertions, 0 deletions
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 |