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/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java')
1 files changed, 199 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/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); + } +} |