1 package org.openecomp.sdc.be.components.path;
3 import org.junit.Before;
5 import org.junit.runner.RunWith;
6 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
7 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
8 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
9 import org.openecomp.sdc.be.model.CapabilityDefinition;
10 import org.openecomp.sdc.be.model.Component;
11 import org.openecomp.sdc.be.model.ComponentInstance;
12 import org.openecomp.sdc.be.model.Resource;
13 import org.openecomp.sdc.be.model.Service;
14 import org.openecomp.sdc.be.tosca.model.ToscaNodeTemplate;
15 import org.openecomp.sdc.be.tosca.model.ToscaTemplateRequirement;
16 import org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil;
17 import org.springframework.test.context.ContextConfiguration;
18 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
20 import java.util.ArrayList;
21 import java.util.Arrays;
22 import java.util.Collections;
23 import java.util.HashMap;
24 import java.util.List;
27 import static org.junit.Assert.assertEquals;
28 import static org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil.FORWARDER;
29 import static org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil.FORWARDS_TO_TOSCA_NAME;
30 import static org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil.PORTS_RANGE;
31 import static org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil.PROTOCOL;
32 import static org.openecomp.sdc.be.tosca.utils.ForwardingPathToscaUtil.addForwardingPaths;
35 * @author KATYR, ORENK
36 * @since November 19, 2017
38 @RunWith(SpringJUnit4ClassRunner.class)
39 @ContextConfiguration(locations = "/paths/path-context.xml")
40 public class ForwardingPathToscaUtilTest extends BaseForwardingPathTest {
42 private static final String NODE_NAME_1 = "nodeA-name";
43 private static final String NODE_NAME_2 = "nodeB-name";
44 private static final String PATH_1_PROTOCOL = "protocol-path1";
45 private static final String PATH_1_DESC = "path1-desc";
46 private static final String PATH_1_PORTS = "8585";
47 private static final String PATH_1_NAME = "pathName1";
48 private Service service;
49 private Map<String, Component> originComponents = new HashMap<>();
50 private static final String NODE_ID_1 = "nodeA-id";
51 private static final String NODE_ID_2 = "nodeB-id";
52 private static final String FORWARDING_PATH_TOSCA_TYPE = "org.openecomp.nodes.ForwardingPath";
56 public void setUpForwardingPath() {
57 service = initForwardPath();
58 List<ComponentInstance> componentInstances = new ArrayList<>();
59 componentInstances.add(generateComponentInstance(NODE_NAME_1, NODE_ID_1));
60 componentInstances.add(generateComponentInstance(NODE_NAME_2, NODE_ID_2));
61 service.setComponentInstances(componentInstances);
64 private ComponentInstance generateComponentInstance(String name, String uuid) {
65 ComponentInstance componentInstance = new ComponentInstance();
66 componentInstance.setName(name);
67 componentInstance.setUniqueId(uuid);
68 componentInstance.setComponentUid(uuid);
69 Map<String, List<CapabilityDefinition>> capabiltiesMap = new HashMap<>();
70 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
71 capabilityDefinition.setMinOccurrences(Integer.toString(1));
72 capabilityDefinition.setMaxOccurrences(Integer.toString(100));
73 capabilityDefinition.setType(ForwardingPathToscaUtil.FORWARDS_TO_TOSCA_NAME);
74 capabilityDefinition.setName(name);
75 capabilityDefinition.setUniqueId(name);
76 capabilityDefinition.setPath(Arrays.asList("Just", "something", "to", "read"));
77 capabiltiesMap.put(capabilityDefinition.getName(),
78 Collections.singletonList(capabilityDefinition));
79 componentInstance.setCapabilities(capabiltiesMap);
80 Resource resource = new Resource();
81 resource.setToscaResourceName("test");
82 originComponents.put(uuid, resource);
83 return componentInstance;
88 public void singleElementPath() {
89 createPathSingleElement();
90 Map<String, ToscaNodeTemplate> nodeTemplatesRes = new HashMap<>();
92 Map<String, ToscaNodeTemplate> expectedNodeTemplatesRes = new HashMap<>();
93 ToscaNodeTemplate pathEntry = new ToscaNodeTemplate();
94 pathEntry.setType(FORWARDING_PATH_TOSCA_TYPE);
95 Map<String, Object> expectedProps = new HashMap<>();
96 expectedProps.put(PORTS_RANGE, Collections.singletonList(PATH_1_PORTS));
97 expectedProps.put(PROTOCOL, PATH_1_PROTOCOL);
98 pathEntry.setProperties(expectedProps);
99 List<Map<String, ToscaTemplateRequirement>> requirements = new ArrayList<>();
100 ToscaTemplateRequirement firstEntryReq = new ToscaTemplateRequirement();
101 ToscaTemplateRequirement secondEntryReq = new ToscaTemplateRequirement();
103 firstEntryReq.setCapability("null." + NODE_NAME_1);
104 secondEntryReq.setCapability("null." + NODE_NAME_2);
106 firstEntryReq.setNode(NODE_NAME_1);
107 secondEntryReq.setNode(NODE_NAME_2);
109 firstEntryReq.setRelationship(FORWARDS_TO_TOSCA_NAME);
110 secondEntryReq.setRelationship(FORWARDS_TO_TOSCA_NAME);
112 Map<String, ToscaTemplateRequirement> entryMap1 = new HashMap<>();
113 Map<String, ToscaTemplateRequirement> entryMap2 = new HashMap<>();
115 entryMap1.put(FORWARDER, firstEntryReq);
116 entryMap2.put(FORWARDER, secondEntryReq);
118 requirements.add(entryMap1);
119 requirements.add(entryMap2);
121 pathEntry.setRequirements(requirements);
122 expectedNodeTemplatesRes.put(PATH_1_NAME, pathEntry);
123 addForwardingPaths(service, nodeTemplatesRes, capabiltyRequirementConvertor, originComponents,
124 toscaOperationFacade);
126 assertEquals(2, nodeTemplatesRes.get(PATH_1_NAME).getRequirements().size());
127 compareToscaPathEntry(expectedNodeTemplatesRes, nodeTemplatesRes);
130 private void compareToscaPathEntry(Map<String, ToscaNodeTemplate> expectedNodeTemplatesRes,
131 Map<String, ToscaNodeTemplate> nodeTemplatesRes) {
132 final ToscaNodeTemplate expectedTemplate = expectedNodeTemplatesRes.get(PATH_1_NAME);
133 final ToscaNodeTemplate actualTemplate = nodeTemplatesRes.get(PATH_1_NAME);
134 assertEquals(expectedTemplate.getProperties(), actualTemplate.getProperties());
135 final int size = expectedTemplate.getRequirements().size();
137 actualTemplate.getRequirements().size());
138 for (int i = 0; i < size; i++) {
139 compareToscaRequirement(expectedTemplate, actualTemplate, i);
143 private void compareToscaRequirement(ToscaNodeTemplate expectedTemplate,
144 ToscaNodeTemplate actualTemplate,
146 final ToscaTemplateRequirement actualRequirement =
147 actualTemplate.getRequirements().get(i).get(FORWARDER);
148 final ToscaTemplateRequirement expectedToscaRequirement = expectedTemplate
150 .get(i).get(FORWARDER);
151 assertEquals(actualRequirement.getCapability(), expectedToscaRequirement.getCapability());
152 assertEquals(actualRequirement.getNode(), expectedToscaRequirement.getNode());
155 private void createPathSingleElement() {
156 ForwardingPathElementDataDefinition element1 = initElement(NODE_ID_1, NODE_ID_2, NODE_NAME_1,
159 ListDataDefinition<ForwardingPathElementDataDefinition> list = new ListDataDefinition<>();
163 ForwardingPathDataDefinition path = new ForwardingPathDataDefinition();
164 path.setDescription(PATH_1_DESC);
165 path.setProtocol(PATH_1_PROTOCOL);
166 path.setDestinationPortNumber(PATH_1_PORTS);
167 path.setToscaResourceName(FORWARDING_PATH_TOSCA_TYPE);
168 path.setPathElements(list);
169 path.setName(PATH_1_NAME);
171 Map<String, ForwardingPathDataDefinition> paths = new HashMap<>();
172 paths.put(PATH_1_NAME, path);
174 service.setForwardingPaths(paths);
177 private ForwardingPathElementDataDefinition initElement(String fromId, String toId, String
178 fromCP, String toCP) {
179 ForwardingPathElementDataDefinition element = new ForwardingPathElementDataDefinition();
180 element.setFromCP(fromCP);
181 element.setFromNode(fromId);
182 element.setToCP(toCP);
183 element.setToNode(toId);