2  * Copyright © 2016-2018 European Support Limited
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *      http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  17 package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation;
 
  19 import com.google.common.collect.ArrayListMultimap;
 
  20 import com.google.common.collect.ListMultimap;
 
  21 import org.junit.Assert;
 
  22 import org.junit.Before;
 
  23 import org.junit.Test;
 
  24 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
 
  25 import org.openecomp.sdc.heat.datatypes.model.Resource;
 
  26 import org.openecomp.sdc.heat.services.HeatConstants;
 
  27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
 
  28 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
 
  29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
 
  30 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
 
  32 import java.io.IOException;
 
  33 import java.util.Arrays;
 
  34 import java.util.HashMap;
 
  35 import java.util.List;
 
  37 import java.util.Optional;
 
  39 public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourceTranslationTest {
 
  41   private static final String PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST = "vdbe_untr_1_port";
 
  42   private static final int ONE = 1;
 
  43   private static final int TWO = 2;
 
  44   private static final String NETWORK_ROLE_INOUT_ATTR_TEST = "untr";
 
  45   private static final String NESTED_FILE_NAME_INOUT_ATTR_TEST = "nested.yml";
 
  46   private static final String INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST =
 
  47       "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/inputfiles";
 
  48   private static final String INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE =
 
  49       "/mock/services/heattotosca/subInterfaceToInterfaceConnection/portNetworkRole/inputfiles";
 
  50   private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml";
 
  55   public void setUp() throws IOException {
 
  56     // do not delete this function. it prevents the superclass setup from running
 
  60   public void testTranslateVlanToInterfaceNestedConnection() throws Exception {
 
  62         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/inputfiles";
 
  64         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/expectedoutputfiles";
 
  65     initTranslatorAndTranslate();
 
  70   public void testTranslateVlanToInterfaceNestedInOutAttr() throws Exception {
 
  71     inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
 
  73         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr" +
 
  74             "/expectedoutputfiles";
 
  75     initTranslatorAndTranslate();
 
  78     Assert.assertNotNull(this.translationContext.getConsolidationData().getPortConsolidationData()
 
  79         .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
 
  80         .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST));
 
  82     PortTemplateConsolidationData portTemplateConsolidationData =
 
  83         this.translationContext.getConsolidationData().getPortConsolidationData()
 
  84             .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
 
  85             .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST);
 
  86     ListMultimap<String, SubInterfaceTemplateConsolidationData> subInfMap = ArrayListMultimap.create();
 
  87     portTemplateConsolidationData.copyMappedInto(subInfMap);
 
  88     List<SubInterfaceTemplateConsolidationData> subInfList =
 
  89         subInfMap.get("org.openecomp.resource.abstract.nodes.heat.subinterface.nested");
 
  91     Assert.assertEquals(ONE, subInfList.size());
 
  92     SubInterfaceTemplateConsolidationData data = subInfList.get(0);
 
  94     Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST, data.getNetworkRole());
 
  95     Assert.assertEquals(ONE, data.getNodesConnectedIn().size());
 
  96     Assert.assertEquals(ONE, data.getNodesConnectedOut().size());
 
  97     Assert.assertEquals(TWO, data.getNodesConnectedOut().get("control_int_net").size());
 
  98     Assert.assertEquals(ONE, data.getNodesGetAttrIn().size());
 
  99     Assert.assertEquals(ONE, data.getNodesGetAttrOut().size());
 
 100     Assert.assertEquals(ONE, data.getOutputParametersGetAttrIn().size());
 
 105   public void testGetNetworkRoleFromResourceUtil() throws Exception {
 
 106     inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
 
 107     initTranslatorAndTranslate();
 
 108     Resource targetResource = new Resource();
 
 109     targetResource.setType(NESTED_FILE_NAME_INOUT_ATTR_TEST);
 
 111     Optional<String> networkRole = HeatToToscaUtil.getNetworkRoleFromResource(targetResource, this
 
 112         .translationContext);
 
 114     Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST,networkRole.get());
 
 118   public void testGetNetworkRoleFromResourceUtil_Port() throws Exception {
 
 119     inputFilesPath = INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE;
 
 120     initTranslatorAndTranslate();
 
 121     List<String> validNeutronPortTemplateIds = Arrays.asList("vdbe_0_oam_port_1", "vdbe_oam_port", "vdbe_oam_port_2",
 
 122         "vdbe_0_int_oam_port_1", "vdbe_int_oam_port", "vdbe_int_oam_port_2");
 
 123     validatePortNetworkRole(validNeutronPortTemplateIds, "oam");
 
 125     List<String> validVmiPortTemplateIds = Arrays.asList("vdbe_0_untr_vmi_0", "vdbe_untr_vmi");
 
 126     validatePortNetworkRole(validVmiPortTemplateIds, "untr");
 
 128     List<String> portIdsNotFollowingHeatGuidelines = Arrays.asList("vdbe_0_oam_neutronNotFollowingHeatGuidelines_2",
 
 129         "vdbe_0_untr_vmiNotFollowingHeatGuidelines_1");
 
 130     validatePortNetworkRole(portIdsNotFollowingHeatGuidelines, null);
 
 136   public void testIsSubInterfaceResourceUtil() throws Exception {
 
 137     inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
 
 138     initTranslatorAndTranslate();
 
 139     Resource targetResource = new Resource();
 
 140     targetResource.setType(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource());
 
 141     Map<String, Object> propetyMap = new HashMap<>();
 
 142     Map<String, Object> resourceDefPropsMap = new HashMap<>();
 
 143     resourceDefPropsMap.put("type", NESTED_FILE_NAME_INOUT_ATTR_TEST);
 
 144     propetyMap.put(HeatConstants.RESOURCE_DEF_PROPERTY_NAME, resourceDefPropsMap);
 
 145     targetResource.setProperties(propetyMap);
 
 147     Assert.assertTrue(HeatToToscaUtil.isSubInterfaceResource(targetResource, this
 
 148         .translationContext));
 
 152   public void testTranslateVlanToNetMultiNestedConnection() throws Exception {
 
 154         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/inputfiles";
 
 156         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels" +
 
 157             "/expectedoutputfiles";
 
 158     initTranslatorAndTranslate();
 
 162   private void validatePortNetworkRole(List<String> portNodeTemplateIds, String expectedNetworkRole) {
 
 163     FilePortConsolidationData filePortConsolidationData =
 
 164         translationContext.getConsolidationData().getPortConsolidationData()
 
 165             .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML);
 
 166     for (String portNodeTemplateId : portNodeTemplateIds) {
 
 167       PortTemplateConsolidationData portTemplateConsolidationData =
 
 168           filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
 
 169       Assert.assertEquals(expectedNetworkRole, portTemplateConsolidationData.getNetworkRole());