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.be.components.path;
19 import org.junit.Assert;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
24 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
25 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
26 import org.openecomp.sdc.be.model.*;
27 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
28 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
29 import org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil;
30 import org.springframework.test.context.ContextConfiguration;
31 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
35 import static org.junit.Assert.assertEquals;
36 import static org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil.*;
39 * @author KATYR, ORENK
40 * @since November 19, 2017
42 @RunWith(SpringJUnit4ClassRunner.class)
43 @ContextConfiguration(locations = "/paths/path-context.xml")
44 public class ForwardingPathToscaUtilTest extends BaseForwardingPathTest {
46 private static final String NODE_NAME_1 = "nodeA-name";
47 private static final String NODE_NAME_2 = "nodeB-name";
48 private static final String PATH_1_PROTOCOL = "protocol-path1";
49 private static final String PATH_1_DESC = "path1-desc";
50 private static final String PATH_1_PORTS = "8585";
51 private static final String PATH_1_NAME = "pathName1";
52 private Service service;
53 private Map<String, Component> originComponents = new HashMap<>();
54 private static final String NODE_ID_1 = "nodeA-id";
55 private static final String NODE_ID_2 = "nodeB-id";
56 private static final String FORWARDING_PATH_TOSCA_TYPE = "org.openecomp.nodes.ForwardingPath";
60 public void setUpForwardingPath() {
61 service = initForwardPath();
62 List<ComponentInstance> componentInstances = new ArrayList<>();
63 componentInstances.add(generateComponentInstance(NODE_NAME_1, NODE_ID_1));
64 componentInstances.add(generateComponentInstance(NODE_NAME_2, NODE_ID_2));
65 service.setComponentInstances(componentInstances);
68 private ComponentInstance generateComponentInstance(String name, String uuid) {
69 ComponentInstance componentInstance = new ComponentInstance();
70 componentInstance.setName(name);
71 componentInstance.setUniqueId(uuid);
72 componentInstance.setComponentUid(uuid);
73 Map<String, List<CapabilityDefinition>> capabiltiesMap = new HashMap<>();
74 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
75 capabilityDefinition.setMinOccurrences(Integer.toString(1));
76 capabilityDefinition.setMaxOccurrences(Integer.toString(100));
77 capabilityDefinition.setType(ForwardingPathToscaUtil.FORWARDS_TO_TOSCA_NAME);
78 capabilityDefinition.setName(name);
79 capabilityDefinition.setUniqueId(name);
80 capabilityDefinition.setPath(Arrays.asList("Just", "something", "to", "read"));
81 capabiltiesMap.put(capabilityDefinition.getName(),
82 Collections.singletonList(capabilityDefinition));
83 componentInstance.setCapabilities(capabiltiesMap);
84 Resource resource = new Resource();
85 resource.setToscaResourceName("test");
86 originComponents.put(uuid, resource);
87 return componentInstance;
92 public void singleElementPath() {
94 createPathSingleElement();
95 Map<String, ToscaNodeTemplate> nodeTemplatesRes = new HashMap<>();
97 Map<String, ToscaNodeTemplate> expectedNodeTemplatesRes = new HashMap<>();
98 ToscaNodeTemplate pathEntry = new ToscaNodeTemplate();
99 pathEntry.setType(FORWARDING_PATH_TOSCA_TYPE);
100 Map<String, Object> expectedProps = new HashMap<>();
101 expectedProps.put(PORTS_RANGE, Collections.singletonList(PATH_1_PORTS));
102 expectedProps.put(PROTOCOL, PATH_1_PROTOCOL);
103 pathEntry.setProperties(expectedProps);
104 List<Map<String, ToscaTemplateRequirement>> requirements = new ArrayList<>();
105 ToscaTemplateRequirement firstEntryReq = new ToscaTemplateRequirement();
106 ToscaTemplateRequirement secondEntryReq = new ToscaTemplateRequirement();
108 firstEntryReq.setCapability("null." + NODE_NAME_1);
109 secondEntryReq.setCapability("null." + NODE_NAME_2);
111 firstEntryReq.setNode(NODE_NAME_1);
112 secondEntryReq.setNode(NODE_NAME_2);
114 firstEntryReq.setRelationship(FORWARDS_TO_TOSCA_NAME);
115 secondEntryReq.setRelationship(FORWARDS_TO_TOSCA_NAME);
117 Map<String, ToscaTemplateRequirement> entryMap1 = new HashMap<>();
118 Map<String, ToscaTemplateRequirement> entryMap2 = new HashMap<>();
120 entryMap1.put(FORWARDER, firstEntryReq);
121 entryMap2.put(FORWARDER, secondEntryReq);
123 requirements.add(entryMap1);
124 requirements.add(entryMap2);
126 pathEntry.setRequirements(requirements);
127 expectedNodeTemplatesRes.put(PATH_1_NAME, pathEntry);
128 addForwardingPaths(service, nodeTemplatesRes, capabiltyRequirementConvertor, originComponents,
129 toscaOperationFacade);
131 assertEquals(2, nodeTemplatesRes.get(PATH_1_NAME).getRequirements().size());
132 compareToscaPathEntry(expectedNodeTemplatesRes, nodeTemplatesRes);
133 } catch (Exception e){
135 Assert.fail(e.getMessage());
139 private void compareToscaPathEntry(Map<String, ToscaNodeTemplate> expectedNodeTemplatesRes,
140 Map<String, ToscaNodeTemplate> nodeTemplatesRes) {
141 final ToscaNodeTemplate expectedTemplate = expectedNodeTemplatesRes.get(PATH_1_NAME);
142 final ToscaNodeTemplate actualTemplate = nodeTemplatesRes.get(PATH_1_NAME);
143 assertEquals(expectedTemplate.getProperties(), actualTemplate.getProperties());
144 final int size = expectedTemplate.getRequirements().size();
146 actualTemplate.getRequirements().size());
147 for (int i = 0; i < size; i++) {
148 compareToscaRequirement(expectedTemplate, actualTemplate, i);
152 private void compareToscaRequirement(ToscaNodeTemplate expectedTemplate,
153 ToscaNodeTemplate actualTemplate,
155 final ToscaTemplateRequirement actualRequirement =
156 actualTemplate.getRequirements().get(i).get(FORWARDER);
157 final ToscaTemplateRequirement expectedToscaRequirement = expectedTemplate
159 .get(i).get(FORWARDER);
160 assertEquals(actualRequirement.getCapability(), expectedToscaRequirement.getCapability());
161 assertEquals(actualRequirement.getNode(), expectedToscaRequirement.getNode());
164 private void createPathSingleElement() {
165 ForwardingPathElementDataDefinition element1 = initElement(NODE_NAME_1, NODE_NAME_2, NODE_NAME_1,
168 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
172 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
173 path.setDescription(PATH_1_DESC);
174 path.setProtocol(PATH_1_PROTOCOL);
175 path.setDestinationPortNumber(PATH_1_PORTS);
176 path.setToscaResourceName(FORWARDING_PATH_TOSCA_TYPE);
177 path.setPathElements(list);
178 path.setName(PATH_1_NAME);
180 Map<String, ForwardingPathDataDefinition> paths = new HashMap<>();
181 paths.put(PATH_1_NAME, path);
183 service.setForwardingPaths(paths);
186 private ForwardingPathElementDataDefinition initElement(String fromId, String toId, String
187 fromCP, String toCP) {
188 ForwardingPathElementDataDefinition element = new ForwardingPathElementDataDefinition();
189 element.setFromCP(fromCP);
190 element.setFromNode(fromId);
191 element.setToCP(toCP);
192 element.setToNode(toId);