diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org')
10 files changed, 878 insertions, 38 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 1f7167c522..7a07d78c10 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 @@ -30,7 +30,9 @@ 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.datatypes.model.TopologyTemplate; import org.openecomp.sdc.tosca.services.DataModelUtil; +import org.openecomp.sdc.tosca.services.ToscaConstants; import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeConsolidationData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData; @@ -46,6 +48,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData; +import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator; import java.io.File; import java.io.FileInputStream; @@ -691,5 +694,15 @@ public class TestUtils { return Optional.empty(); } + public static ServiceTemplate createInitServiceTemplate() { + ServiceTemplate initServiceTemplate = new ServiceTemplate(); + Map<String, String> templateMetadata = new HashMap<>(); + templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, "Test"); + initServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION); + initServiceTemplate.setMetadata(templateMetadata); + initServiceTemplate.setTopology_template(new TopologyTemplate()); + initServiceTemplate.setImports(GlobalTypesGenerator.getGlobalTypesImportList()); + return initServiceTemplate; + } } 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 index 63ce6b5682..9a36499956 100644 --- 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 @@ -1,3 +1,19 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + package org.openecomp.sdc.translator.services.heattotosca; import static org.mockito.Matchers.any; 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 index 7de9ae5588..646aa47884 100644 --- 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 @@ -1,5 +1,25 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + 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; @@ -40,10 +60,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Matchers.anyString; - public class UnifiedCompositionServiceTest { private static final String BASE_DIRECTORY = "/mock/services/heattotosca/unifiedComposition/"; @InjectMocks @@ -879,11 +895,11 @@ public class UnifiedCompositionServiceTest { context.setConsolidationData( createConsolidationData(Collections.singletonList(FSB1_template), portTypeToIdList)); context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_template, - UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate); + UnifiedCompositionEntity.COMPUTE, cleanedComputeNodeTemplate); context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_INTERNAL1, - UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate); context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_INTERNAL2, - UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate); setUnifiedCompositionData(Arrays.asList(FSB1_template, FSB1_INTERNAL1, FSB1_INTERNAL2)); @@ -910,13 +926,13 @@ public class UnifiedCompositionServiceTest { createConsolidationData(Arrays.asList("FSB1_template_1", "FSB1_template_2"), portTypeToIdList)); context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, "FSB1_template_1", - UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate); + UnifiedCompositionEntity.COMPUTE, cleanedComputeNodeTemplate); context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, "FSB1_template_2", - UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate); + UnifiedCompositionEntity.COMPUTE, cleanedComputeNodeTemplate); context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_INTERNAL1, - UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate); context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB2_INTERNAL1, - UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate); + UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate); setUnifiedCompositionData( Arrays.asList("FSB1_template_1", "FSB1_template_2", FSB1_INTERNAL1, FSB2_INTERNAL1)); 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 index bb1f898dc4..9353de7eb1 100644 --- 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 @@ -1,5 +1,35 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + 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; @@ -37,20 +67,6 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; -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; - public class ConsolidationDataTestUtil { public static void validateVolumeInConsolidationData(String computeNodeTemplateId, @@ -617,7 +633,7 @@ public class ConsolidationDataTestUtil { 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") + .getPortConsolidationData().getFilePortConsolidationData("ep-jsa_netServiceTemplate.yaml") .getPortTemplateConsolidationData("VMI1"); Assert.assertNotNull(portTemplateConsolidationData); Assert.assertEquals(2, portTemplateConsolidationData.getNodesGetAttrIn().size()); @@ -635,7 +651,7 @@ public class ConsolidationDataTestUtil { ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB2 = consolidationData .getComputeConsolidationData() - .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getFileComputeConsolidationData("ep-jsa_netServiceTemplate.yaml") .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB2") .getComputeTemplateConsolidationData("FSB2"); Assert.assertEquals(1,computeTemplateConsolidationDataFSB2.getNodesGetAttrOut().size()); @@ -647,7 +663,7 @@ public class ConsolidationDataTestUtil { .get(0).getAttributeName()); ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB1 = consolidationData .getComputeConsolidationData() - .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getFileComputeConsolidationData("ep-jsa_netServiceTemplate.yaml") .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB1") .getComputeTemplateConsolidationData("FSB1"); Assert.assertEquals(1,computeTemplateConsolidationDataFSB1.getNodesGetAttrOut().size()); @@ -682,7 +698,7 @@ public class ConsolidationDataTestUtil { Assert.assertNotNull(portTemplateConsolidationData); Assert.assertEquals("name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1"). get(0).getFieldName()); - Assert.assertEquals("fq_name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1"). + Assert.assertEquals("tenant_id",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1"). get(0).getAttributeName()); } else if(TestConstants.TEST_GET_ATTR_FOR_NONE_TO_PORT_OR_COMPUTE.equals(testName)){ ComputeTemplateConsolidationData computeTemplateConsolidationData = consolidationData @@ -697,7 +713,7 @@ public class ConsolidationDataTestUtil { } else if(TestConstants.TEST_OUTPUT_GET_ATTR.equals(testName)){ ComputeTemplateConsolidationData computeTemplateConsolidationData1 = consolidationData .getComputeConsolidationData() - .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getFileComputeConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml") .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw") .getComputeTemplateConsolidationData("CGI_FW_SERVER_1"); Assert.assertEquals("cgi_fw_01_left_mac_1",computeTemplateConsolidationData1 @@ -707,7 +723,7 @@ public class ConsolidationDataTestUtil { .get(0).getAttributeName()); ComputeTemplateConsolidationData computeTemplateConsolidationData2 = consolidationData .getComputeConsolidationData() - .getFileComputeConsolidationData("MainServiceTemplate.yaml") + .getFileComputeConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml") .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw") .getComputeTemplateConsolidationData("CGI_FW_SERVER_2"); Assert.assertEquals(1,computeTemplateConsolidationData2 @@ -755,7 +771,7 @@ public class ConsolidationDataTestUtil { Assert.assertEquals("addresses",computeTemplateConsolidationData2 .getOutputParametersGetAttrIn().get(7).getAttributeName()); PortTemplateConsolidationData portTemplateConsolidationData = consolidationData - .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml") + .getPortConsolidationData().getFilePortConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml") .getPortTemplateConsolidationData("contrail_vmi_subinterface"); Assert.assertEquals("cgi_fw_01_left_mac_7",portTemplateConsolidationData .getOutputParametersGetAttrIn().get(0).getFieldName()); 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/UnifiedCompositionSubInterfaceFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSubInterfaceFullTest.java new file mode 100644 index 0000000000..558ebf44b3 --- /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/UnifiedCompositionSubInterfaceFullTest.java @@ -0,0 +1,190 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + +package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest; + +import org.junit.Test; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest; + +import java.io.IOException; + +public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationTest { + + private static final String PATTERN_1A_BASE_DIRECTORY = + "/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1a/"; + private static final String PATTERN_1C1_BASE_DIRECTORY = + "/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/"; + + @Test + public void testSubInterfaceComputePortNetwork() throws IOException { + /** + * Heat file with one compute, one port and one subinterface resource group with only port + * connected to network + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "computePortNetworkSubInterface"); + } + + @Test + public void testSubInterfaceNodesConnectedOut() throws IOException { + /** + * Heat file with one compute, one port and one subinterface resource group with + * 1. Port connected to network + * 2. Sub-interface connected to same network + * 3. Sub-interface has depends on (out) connectivity with network resource + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "subInterfaceNodesConnectedOut"); + } + + @Test + public void testSubInterfaceNodesConnectedIn() throws IOException { + /** + * Heat file with one compute, one port and one subinterface resource group with + * 1. Port connected to network + * 2. Sub-interface connected to different network + * 3. Sub-interface has depends on (in) connectivity from network resource + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "subInterfaceNodesConnectedIn"); + } + + @Test + public void testSubInterfaceGetAttrInOut() throws IOException { + /** + * Heat file with one compute, one port and one subinterface resource group with + * 1. Port connected to network + * 2. Sub-interface connected to different network + * 3. Sub-interface has get attribute (in) connectivity from network resource + * 4. Sub-interface has get attribute (out) connectivity to second network resource + * 5. Sub-interface has get attribute (in) connectivity from output param + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "subInterfaceGetAttrInOut"); + } + + @Test + public void testSubInterfaceMultipleVlanSameNestedFile() throws IOException { + /** + * Heat file with one compute, one port and two subinterface resource groups with + * 1. Port connected to network + * 2. Sub-interfaces with same nested files + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "multipleVlanSameType"); + } + + @Test + public void testSubInterfaceMultipleVlanDiffNestedFile() throws IOException { + /** + * Heat file with one compute, one port and two subinterface resource groups with + * 1. Port connected to network + * 2. Sub-interfaces with different nested files + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "multipleVlanDiffType"); + } + + @Test + public void testSubInterfaceMultiplePortsMultipleVlans() throws IOException { + /** + * Heat file with one compute, two ports and two subinterface resource groups with + * 1. Port connected to network + * 2. Sub-interfaces each with different nested files + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "multiplePortsMultipleVlans"); + } + + @Test + public void testSubInterfaceRegularNested() throws IOException { + /** + * Heat file with one compute, one port and one subinterface resource represented through a + * regular nested resource and not using a resource group + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "regularNestedSubInterface"); + } + + @Test + public void testSubInterfaceNotBoundToPort() throws IOException { + /** + * Heat file with one compute, one port and one subinterface resource group with + * 1. Resource group missing virtual_machine_interface_refs property + * 2. Resource group missing virtual_machine_interface_properties_sub_interface_vlan_tag + * property + * 3. Resource group parent port as get_param + */ + testTranslationWithInit(PATTERN_1A_BASE_DIRECTORY + "notBoundToParentPort"); + } + + //****************** PATTERN 1C1 Tests *************************** + + @Test + public void testSubInterfaceScalingOnePortVlanSameType() throws IOException { + /** + * Heat file with two computes of same type, two ports of same type and two subinterface resource groups of same + * type with + * 1. Compute has one port each + * 2. Port has one sub-interface each + * 3. Port connected to network + * 3. Sub-interface not connected to network + */ + testTranslationWithInit(PATTERN_1C1_BASE_DIRECTORY + "onePortVlanSameType"); + } + + @Test + public void testSubInterfaceScalingMultiplePortsMultipleVlans() throws IOException { + /** + * Heat file with two computes of different type, four ports of two types each and four subinterface resource groups + * of two types each + * 1. Each compute has two ports, one of each type + * 2. Port has one sub-interface each + * 3. Ports connected to different networks + * 4. Sub-interface of one type connected to network + */ + testTranslationWithInit(PATTERN_1C1_BASE_DIRECTORY + "multiplePortsMultipleVlans"); + } + + @Test + public void testSubInterfaceScalingOptionalPropertiesConsolidation() throws IOException { + /** + * Heat file with two computes of same type, four ports of two types each and two subinterface resource groups + * of same type + * 1. Each compute has two ports, one of each type + * 2. One of the ports has a subinterface + * 3. Ports connected to network + * 4. Subinterfaces not connected to network + * 5. Optional properties contained in one subinterface and not in other + */ + testTranslationWithInit(PATTERN_1C1_BASE_DIRECTORY + "optionalPropertiesConsolidation"); + } + + @Test + public void testSubInterfaceScalingRegularNestedSubInterface() throws IOException { + /** + * Heat file with two computes, two ports of same type connected to network and two subinterface resource + * represented through a regular nested resource and not using a resource group not connected to network + */ + testTranslationWithInit(PATTERN_1C1_BASE_DIRECTORY + "regularNestedSubInterface"); + } + + @Test + public void testSubInterfaceScalingAllConnectivities() throws IOException { + /** + * Heat file with two computes of same type, four ports of two types each and two subinterface resource groups + * of same type + * 1. Each compute has two ports, one of each type + * 2. One of the ports has a subinterface + * 3. Port connected to network + * 4. Both ports and subinterfaces connected to network + * 5. All connectivities including dependency, get attribute from nodes and output param + */ + testTranslationWithInit(PATTERN_1C1_BASE_DIRECTORY + "allConnectivities"); + } +} 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/BaseFullTranslationTest.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 17383a9a10..0533961d23 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.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 @@ -65,6 +65,7 @@ public class BaseFullTranslationTest { public static void enableToggleableFeatures(){ manager = new TestFeatureManager(ToggleableFeature.class); manager.enableAll(); + TestFeatureManagerProvider.setFeatureManager(manager); } 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 index 5d73a300e8..f0c4517ea7 100644 --- 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 @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2017 European Support Limited + * Copyright © 2016-2018 European Support Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,18 +16,38 @@ package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation; -import org.junit.AfterClass; +import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; -import org.openecomp.sdc.common.togglz.ToggleableFeature; -import org.togglz.testing.TestFeatureManager; -import org.togglz.testing.TestFeatureManagerProvider; +import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes; +import org.openecomp.sdc.heat.datatypes.model.Resource; +import org.openecomp.sdc.heat.services.HeatConstants; +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.SubInterfaceTemplateConsolidationData; +import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil; import java.io.IOException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourceTranslationTest { + private static final String PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST = "vdbe_untr_1_port"; + private static final int ONE = 1; + private static final int TWO = 2; + private static final String NETWORK_ROLE_INOUT_ATTR_TEST = "untr"; + private static final String NESTED_FILE_NAME_INOUT_ATTR_TEST = "nested.yml"; + private static final String INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/inputfiles"; + private static final String INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/portNetworkRole/inputfiles"; + private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml"; + + @Override @Before public void setUp() throws IOException { @@ -45,6 +65,84 @@ public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourc } @Test + public void testTranslateVlanToInterfaceNestedInOutAttr() throws Exception { + inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST; + outputFilesPath = + "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr" + + "/expectedoutputfiles"; + initTranslatorAndTranslate(); + testTranslation(); + + Assert.assertNotNull(this.translationContext.getConsolidationData().getPortConsolidationData() + .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML) + .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST)); + + List<SubInterfaceTemplateConsolidationData> subInfList = + this.translationContext.getConsolidationData().getPortConsolidationData() + .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML) + .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST) + .getSubInterfaceConsolidationData("org.openecomp.resource.abstract.nodes.heat.subinterface.nested"); + + Assert.assertEquals(ONE, subInfList.size()); + SubInterfaceTemplateConsolidationData data = subInfList.get(0); + + Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST, data.getNetworkRole()); + Assert.assertEquals(ONE, data.getNodesConnectedIn().size()); + Assert.assertEquals(ONE, data.getNodesConnectedOut().size()); + Assert.assertEquals(TWO, data.getNodesConnectedOut().get("control_int_net").size()); + Assert.assertEquals(ONE, data.getNodesGetAttrIn().size()); + Assert.assertEquals(ONE, data.getNodesGetAttrOut().size()); + Assert.assertEquals(ONE, data.getOutputParametersGetAttrIn().size()); + + } + + @Test + public void testGetNetworkRoleFromResourceUtil() throws Exception { + inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST; + initTranslatorAndTranslate(); + Resource targetResource = new Resource(); + targetResource.setType(NESTED_FILE_NAME_INOUT_ATTR_TEST); + + Optional<String> networkRole = HeatToToscaUtil.getNetworkRoleFromResource(targetResource, this + .translationContext); + + Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST,networkRole.get()); + } + + @Test + public void testGetNetworkRoleFromResourceUtil_Port() throws Exception { + inputFilesPath = INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE; + initTranslatorAndTranslate(); + List<String> validNeutronPortTemplateIds = Arrays.asList("vdbe_0_oam_port_1", "vdbe_oam_port", "vdbe_oam_port_2"); + validatePortNetworkRole(validNeutronPortTemplateIds, "oam"); + + List<String> validVmiPortTemplateIds = Arrays.asList("vdbe_0_untr_vmi_0", "vdbe_untr_vmi"); + validatePortNetworkRole(validVmiPortTemplateIds, "untr"); + + List<String> portIdsNotFollowingHeatGuidelines = Arrays.asList("vdbe_0_oam_neutronNotFollowingHeatGuidelines_2", + "vdbe_0_untr_vmiNotFollowingHeatGuidelines_1"); + validatePortNetworkRole(portIdsNotFollowingHeatGuidelines, null); + + } + + + @Test + public void testIsSubInterfaceResourceUtil() throws Exception { + inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST; + initTranslatorAndTranslate(); + Resource targetResource = new Resource(); + targetResource.setType(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource()); + Map<String, Object> propetyMap = new HashMap<>(); + Map<String, Object> resourceDefPropsMap = new HashMap<>(); + resourceDefPropsMap.put("type", NESTED_FILE_NAME_INOUT_ATTR_TEST); + propetyMap.put(HeatConstants.RESOURCE_DEF_PROPERTY_NAME, resourceDefPropsMap); + targetResource.setProperties(propetyMap); + + Assert.assertTrue(HeatToToscaUtil.isSubInterfaceResource(targetResource, this + .translationContext)); + } + + @Test public void testTranslateVlanToNetMultiNestedConnection() throws Exception { inputFilesPath = "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/inputfiles"; @@ -55,4 +153,14 @@ public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourc testTranslation(); } + private void validatePortNetworkRole(List<String> portNodeTemplateIds, String expectedNetworkRole) { + FilePortConsolidationData filePortConsolidationData = + translationContext.getConsolidationData().getPortConsolidationData() + .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML); + for (String portNodeTemplateId : portNodeTemplateIds) { + PortTemplateConsolidationData portTemplateConsolidationData = + filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId); + Assert.assertEquals(expectedNetworkRole, portTemplateConsolidationData.getNetworkRole()); + } + } } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/ComputeNewNodeTemplateIdGeneratorTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/ComputeNewNodeTemplateIdGeneratorTest.java new file mode 100644 index 0000000000..5750de5172 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/ComputeNewNodeTemplateIdGeneratorTest.java @@ -0,0 +1,90 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + +package org.openecomp.sdc.translator.services.heattotosca.unifiedmodel.commands; + +import static org.openecomp.sdc.translator.TestUtils.createInitServiceTemplate; + +import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.datatypes.model.TopologyTemplate; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.UnifiedSubstitutionNodeTemplateIdGenerator; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.impl.ComputeNewNodeTemplateIdGenerator; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +public class ComputeNewNodeTemplateIdGeneratorTest extends BaseResourceTranslationTest { + + private static final String SERVER_PCM = "server_pcm"; + private UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator; + + @BeforeClass + public void setUp(){ + unifiedSubstitutionNodeTemplateIdGenerator = new ComputeNewNodeTemplateIdGenerator(); + } + + @Test + public void testGenerateNewComputeNodeTemplateId() { + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestComputeServiceTemplate(), null, null, + null); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, SERVER_PCM); + if (nodeTemplateId.isPresent()) { + Assert.assertEquals(nodeTemplateId.get(), "pcm_server"); + } else { + Assert.fail(); + } + } + + @Test + public void testGenerateInvalidOriginalNodeTemplateId() { + //node template with id is not present in the service template + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestComputeServiceTemplate(), null, null, + null); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, SERVER_PCM + + "_invalid"); + Assert.assertEquals(nodeTemplateId.isPresent(), false); + } + + @Test + public void testGenerateNullOriginalNodeTemplateId() { + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestComputeServiceTemplate(), null, null, + null); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, null); + Assert.assertEquals(nodeTemplateId.isPresent(), false); + } + + private static ServiceTemplate getTestComputeServiceTemplate() { + ServiceTemplate serviceTemplate = createInitServiceTemplate(); + TopologyTemplate topologyTemplate = serviceTemplate.getTopology_template(); + NodeTemplate nodeTemplate = new NodeTemplate(); + nodeTemplate.setType("org.openecomp.resource.vfc.nodes.heat.pcm_server"); + Map<String, NodeTemplate> nodeTemplateMap = new HashMap<>(); + nodeTemplateMap.put(SERVER_PCM, nodeTemplate); + topologyTemplate.setNode_templates(nodeTemplateMap); + return serviceTemplate; + } + +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java new file mode 100644 index 0000000000..1986ecae4e --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java @@ -0,0 +1,199 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + +package org.openecomp.sdc.translator.services.heattotosca.unifiedmodel.commands; + +import static org.openecomp.sdc.translator.TestUtils.createInitServiceTemplate; + +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.NodeTemplate; +import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.datatypes.model.TopologyTemplate; +import org.openecomp.sdc.tosca.services.ToscaConstants; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.UnifiedSubstitutionNodeTemplateIdGenerator; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.impl.PortNewNodeTemplateIdGenerator; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class PortNewNodeTemplateIdGeneratorTest extends BaseResourceTranslationTest { + + private static final String SERVER_PCM = "server_pcm"; + private static final String PCM_PORT_0 = "pcm_port_0"; + private static final String PCM_PORT_1 = "pcm_port_1"; + + private UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator; + + @BeforeClass + public void setUp(){ + unifiedSubstitutionNodeTemplateIdGenerator = new PortNewNodeTemplateIdGenerator(); + } + + @Test + public void testGenerateNewPortNodeTemplateId() { + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestPortServiceTemplate(), null, + getUnifiedCompositionDataListWithOnePort(), null); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_0); + if (nodeTemplateId.isPresent()) { + Assert.assertEquals(nodeTemplateId.get(), "pcm_server_pcm_port"); + } else { + Assert.fail(); + } + } + + @Test + public void testGeneratePortIdNotBoundToServer() { + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitPortServiceTemplate(), null, + getInitUnifiedCompositionDataList(), null); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_0); + Assert.assertEquals(false, nodeTemplateId.isPresent()); + } + + @Test + public void testGeneratePortIdMultiplePortsSameTypeToOneServer() { + UnifiedCompositionTo unifiedCompositionTo = + new UnifiedCompositionTo(getTestPortServiceTemplateWithTwoPortsOfSameType(), null, + getUnifiedCompositionDataListWithTwoPortsOfSameType(), null); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_0); + if (nodeTemplateId.isPresent()) { + Assert.assertEquals(nodeTemplateId.get(), "pcm_server_pcm_port_0"); + } else { + Assert.fail(); + } + + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_1); + if (nodeTemplateId.isPresent()) { + Assert.assertEquals(nodeTemplateId.get(), "pcm_server_pcm_port_1"); + } else { + Assert.fail(); + } +} + + @Test + public void testGenerateInvalidOriginalNodeTemplateId() { + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestPortServiceTemplate(), null, + getUnifiedCompositionDataListWithOnePort(), null); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, + PCM_PORT_0 + "_Invalid"); + Assert.assertEquals(nodeTemplateId.isPresent(), false); + } + + private static ServiceTemplate getTestInitPortServiceTemplate() { + ServiceTemplate serviceTemplate = createInitServiceTemplate(); + TopologyTemplate topologyTemplate = serviceTemplate.getTopology_template(); + NodeTemplate nodeTemplate = new NodeTemplate(); + nodeTemplate.setType("org.openecomp.resource.vfc.nodes.heat.pcm_server"); + Map<String, NodeTemplate> nodeTemplateMap = new HashMap<>(); + nodeTemplateMap.put(SERVER_PCM, nodeTemplate); + NodeTemplate portNodeTemplate = new NodeTemplate(); + portNodeTemplate.setType(ToscaNodeType.NEUTRON_PORT); + nodeTemplateMap.put(PCM_PORT_0, portNodeTemplate); + topologyTemplate.setNode_templates(nodeTemplateMap); + return serviceTemplate; + } + + private static ServiceTemplate getTestPortServiceTemplate() { + ServiceTemplate serviceTemplate = getTestInitPortServiceTemplate(); + NodeTemplate portNodeTemplate = serviceTemplate.getTopology_template().getNode_templates().get(PCM_PORT_0); + Map<String, RequirementAssignment> portBindingToServer = new HashMap<>(); + RequirementAssignment binding = new RequirementAssignment(); + binding.setRelationship(ToscaRelationshipType.NATIVE_NETWORK_BINDS_TO); + binding.setCapability(ToscaCapabilityType.NATIVE_NETWORK_BINDABLE); + binding.setNode(SERVER_PCM); + portBindingToServer.put(ToscaConstants.BINDING_REQUIREMENT_ID, binding); + List<Map<String, RequirementAssignment>> requirements = new ArrayList<>(1); + requirements.add(portBindingToServer); + portNodeTemplate.setRequirements(requirements); + return serviceTemplate; + } + + private static ServiceTemplate getTestPortServiceTemplateWithTwoPortsOfSameType() { + ServiceTemplate serviceTemplate = getTestInitPortServiceTemplate(); + Map<String, NodeTemplate> nodeTemplateMap = serviceTemplate.getTopology_template().getNode_templates(); + NodeTemplate anotherPortNodeTemplate = new NodeTemplate(); + anotherPortNodeTemplate.setType(ToscaNodeType.NEUTRON_PORT); + nodeTemplateMap.put(PCM_PORT_1, anotherPortNodeTemplate); + + NodeTemplate portNodeTemplate = serviceTemplate.getTopology_template().getNode_templates().get(PCM_PORT_0); + addBindingToServer(portNodeTemplate); + addBindingToServer(anotherPortNodeTemplate); + return serviceTemplate; + } + + private List<UnifiedCompositionData> getInitUnifiedCompositionDataList() { + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(1); + UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); + ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData(); + computeTemplateConsolidationData.setNodeTemplateId(SERVER_PCM); + unifiedCompositionData.setComputeTemplateConsolidationData(computeTemplateConsolidationData); + unifiedCompositionDataList.add(unifiedCompositionData); + return unifiedCompositionDataList; + } + + private List<UnifiedCompositionData> getUnifiedCompositionDataListWithOnePort() { + List<UnifiedCompositionData> unifiedCompositionDataList = getInitUnifiedCompositionDataList(); + ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionDataList.get(0) + .getComputeTemplateConsolidationData(); + List<String> ports = new ArrayList<>(1); + ports.add(PCM_PORT_0); + Map<String, List<String>> portMap = new HashMap<>(); + portMap.put("pcm_port", ports); + computeTemplateConsolidationData.setPorts(portMap); + return unifiedCompositionDataList; + } + + private List<UnifiedCompositionData> getUnifiedCompositionDataListWithTwoPortsOfSameType() { + List<UnifiedCompositionData> unifiedCompositionDataList = getUnifiedCompositionDataListWithOnePort(); + ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionDataList.get(0) + .getComputeTemplateConsolidationData(); + List<String> ports = new ArrayList<>(2); + ports.add(PCM_PORT_0); + ports.add(PCM_PORT_1); + Map<String, List<String>> portMap = new HashMap<>(); + portMap.put("pcm_port", ports); + computeTemplateConsolidationData.setPorts(portMap); + return unifiedCompositionDataList; + } + + private static void addBindingToServer(NodeTemplate portNodeTemplate) { + Map<String, RequirementAssignment> portBindingToServer = new HashMap<>(); + RequirementAssignment binding = new RequirementAssignment(); + binding.setRelationship(ToscaRelationshipType.NATIVE_NETWORK_BINDS_TO); + binding.setCapability(ToscaCapabilityType.NATIVE_NETWORK_BINDABLE); + binding.setNode(SERVER_PCM); + portBindingToServer.put(ToscaConstants.BINDING_REQUIREMENT_ID, binding); + List<Map<String, RequirementAssignment>> requirements = new ArrayList<>(1); + requirements.add(portBindingToServer); + portNodeTemplate.setRequirements(requirements); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/SubInterfaceNewNodeTemplateIdGeneratorTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/SubInterfaceNewNodeTemplateIdGeneratorTest.java new file mode 100644 index 0000000000..11b20fa0b1 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/SubInterfaceNewNodeTemplateIdGeneratorTest.java @@ -0,0 +1,191 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + +package org.openecomp.sdc.translator.services.heattotosca.unifiedmodel.commands; + +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +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.commands.UnifiedSubstitutionNodeTemplateIdGenerator; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.impl.SubInterfaceNewNodeTemplateIdGenerator; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo; +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.FilePortConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData; +import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData; +import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class SubInterfaceNewNodeTemplateIdGeneratorTest extends BaseResourceTranslationTest { + + private static final String VDBE_UNTR_1_PORT = "vdbe_untr_1_port"; + private static final String VDBE_UNTR_1_SUBPORTS = "vdbe_untr_1_subports"; + private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml"; + private static final String VDBE_UNTR_2_SUBPORTS = "vdbe_untr_2_subports"; + private static final String SUBINTERFACE_TYPE_NESTED = + "org.openecomp.resource.abstract.nodes.heat.subinterface.nested"; + + private UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator; + + @BeforeClass + public void setUp(){ + unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator(); + } + + @Test + public void testGenerateNewSubInterfaceNodeTemplateId() throws IOException { + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null, + getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false)); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS); + if (nodeTemplateId.isPresent()) { + Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_nested"); + } else { + Assert.fail(); + } + } + + @Test + public void testGeneratePortIdMultipleSubInterfacesOfSameTypeToOnePort() throws IOException { + UnifiedCompositionTo unifiedCompositionTo = + new UnifiedCompositionTo(getTestSubInterfaceServiceTemplateMultipleVlan(), null, + getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType(), getContext(true)); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS); + if (nodeTemplateId.isPresent()) { + Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_1_subports"); + } else { + Assert.fail(); + } + + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_2_SUBPORTS); + if (nodeTemplateId.isPresent()) { + Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_2_subports"); + } else { + Assert.fail(); + } + } + + @Test + public void testGenerateInvalidOriginalNodeTemplateId() throws IOException { + UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null, + getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false)); + Optional<String> + nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, + VDBE_UNTR_1_SUBPORTS + "_Invalid"); + Assert.assertEquals(nodeTemplateId.isPresent(), false); + } + + private ServiceTemplate getTestInitSubInterfaceServiceTemplate() throws IOException { + ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/oneportsubinterfacetype", + null, null); + Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml"); + return serviceTemplate.get(); + } + + private ServiceTemplate getTestSubInterfaceServiceTemplateMultipleVlan() throws IOException { + ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel + ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/multiplevlansametype", + null, null); + Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml"); + return serviceTemplate.get(); + } + + private List<UnifiedCompositionData> getInitUnifiedCompositionDataList() { + List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(1); + UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData(); + ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData(); + computeTemplateConsolidationData.setNodeTemplateId("vdbe_node_1"); + unifiedCompositionData.setComputeTemplateConsolidationData(computeTemplateConsolidationData); + unifiedCompositionDataList.add(unifiedCompositionData); + return unifiedCompositionDataList; + } + + private List<UnifiedCompositionData> getUnifiedCompositionDataListWithOnePortAndSubInterface() { + List<UnifiedCompositionData> unifiedCompositionDataList = getInitUnifiedCompositionDataList(); + UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0); + ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData + .getComputeTemplateConsolidationData(); + List<String> ports = new ArrayList<>(1); + ports.add(VDBE_UNTR_1_PORT); + Map<String, List<String>> portMap = new HashMap<>(); + portMap.put(VDBE_UNTR_1_PORT, ports); + computeTemplateConsolidationData.setPorts(portMap); + + + PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData(); + portTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_PORT); + SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData = new + SubInterfaceTemplateConsolidationData(); + subInterfaceTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_SUBPORTS); + subInterfaceTemplateConsolidationData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT); + List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = new ArrayList<>(1); + subInterfaceTemplateConsolidationDataList.add(subInterfaceTemplateConsolidationData); + portTemplateConsolidationData.addSubInterfaceConsolidationData( + SUBINTERFACE_TYPE_NESTED, + subInterfaceTemplateConsolidationData); + + List<PortTemplateConsolidationData> portTemplateConsolidationDataList = new ArrayList<>(1); + portTemplateConsolidationDataList.add(portTemplateConsolidationData); + unifiedCompositionData.setPortTemplateConsolidationDataList(portTemplateConsolidationDataList); + unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(subInterfaceTemplateConsolidationDataList); + + + return unifiedCompositionDataList; + } + + private List<UnifiedCompositionData> getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType() { + List<UnifiedCompositionData> unifiedCompositionDataList = getUnifiedCompositionDataListWithOnePortAndSubInterface(); + List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = unifiedCompositionDataList + .get(0).getSubInterfaceTemplateConsolidationDataList(); + SubInterfaceTemplateConsolidationData anotherSubInterfaceData = new SubInterfaceTemplateConsolidationData(); + anotherSubInterfaceData.setNodeTemplateId(VDBE_UNTR_2_SUBPORTS); + anotherSubInterfaceData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT); + subInterfaceTemplateConsolidationDataList.add(anotherSubInterfaceData); + unifiedCompositionDataList.get(0).getPortTemplateConsolidationDataList().get(0).addSubInterfaceConsolidationData + (SUBINTERFACE_TYPE_NESTED, anotherSubInterfaceData); + return unifiedCompositionDataList; + } + + private TranslationContext getContext(boolean isMultipleSubInterfaceTest) { + FilePortConsolidationData filePortConsolidationData = new FilePortConsolidationData(); + PortTemplateConsolidationData portTemplateConsolidationData = isMultipleSubInterfaceTest + ? getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType().get(0).getPortTemplateConsolidationDataList().get(0) + : getUnifiedCompositionDataListWithOnePortAndSubInterface().get(0).getPortTemplateConsolidationDataList().get(0); + filePortConsolidationData.setPortTemplateConsolidationData(portTemplateConsolidationData + .getNodeTemplateId(), portTemplateConsolidationData); + TranslationContext context = new TranslationContext(); + context.setConsolidationData(new ConsolidationData()); + context.getConsolidationData().getPortConsolidationData() + .setFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, filePortConsolidationData); + context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML); + return context; + } + +} |