3 * Copyright (c) 2018 Huawei Intellectual Property.
7 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
19 * Unless required by applicable law or agreed to in writing, software
21 * distributed under the License is distributed on an "AS IS" BASIS,
23 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25 * See the License for the specific language governing permissions and
27 * limitations under the License.
30 package org.openecomp.sdc.be.model.jsonjanusgraph.utils;
33 import java.util.HashMap;
35 import org.junit.jupiter.api.Test;
36 import org.junit.jupiter.api.extension.ExtendWith;
37 import org.mockito.InjectMocks;
39 import org.mockito.junit.jupiter.MockitoExtension;
40 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
41 import org.openecomp.sdc.be.datatypes.elements.AttributeDataDefinition;
42 import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
43 import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition;
44 import org.openecomp.sdc.be.datatypes.elements.ListCapabilityDataDefinition;
45 import org.openecomp.sdc.be.datatypes.elements.MapAttributesDataDefinition;
46 import org.openecomp.sdc.be.datatypes.elements.MapCapabilityProperty;
47 import org.openecomp.sdc.be.datatypes.elements.MapPropertiesDataDefinition;
48 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
49 import org.openecomp.sdc.be.datatypes.elements.RelationshipInstDataDefinition;
50 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
51 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
52 import org.openecomp.sdc.be.model.AttributeDefinition;
53 import org.openecomp.sdc.be.model.ComponentInstance;
54 import org.openecomp.sdc.be.model.CapabilityDefinition;
55 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
56 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
57 import org.openecomp.sdc.be.model.OutputDefinition;
58 import org.openecomp.sdc.be.model.Resource;
59 import org.openecomp.sdc.be.model.RelationshipInfo;
60 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
61 import org.openecomp.sdc.be.model.RelationshipTypeDefinition;
62 import org.openecomp.sdc.be.model.RelationshipImpl;
64 import org.openecomp.sdc.be.model.Service;
65 import org.openecomp.sdc.be.model.Component;
68 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.TopologyTemplate;
69 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.NodeType;
70 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElementTypeEnum;
72 import java.util.LinkedList;
73 import java.util.List;
76 import static org.junit.jupiter.api.Assertions.assertEquals;
77 import static org.junit.jupiter.api.Assertions.assertFalse;
78 import static org.junit.jupiter.api.Assertions.assertTrue;
79 import static org.junit.jupiter.api.Assertions.assertNull;
80 import static org.junit.jupiter.api.Assertions.assertNotNull;
83 @ExtendWith(MockitoExtension.class)
84 public class ModelConverterTest {
86 private ModelConverter test;
89 public void testConvertToToscaElementService()
91 Service service = new Service();
92 service.setComponentType(ComponentTypeEnum.SERVICE);
93 TopologyTemplate template = test.convertToToscaElement(service);
94 assertEquals(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE, template.getToscaType());
98 public void testConvertToToscaElementResource()
100 Resource resource = new Resource();
101 resource.setComponentType(ComponentTypeEnum.RESOURCE);
102 NodeType nodeType = test.convertToToscaElement(resource);
103 assertEquals(ToscaElementTypeEnum.NODE_TYPE, nodeType.getToscaType());
107 public void testConvertFromToscaElementService()
109 TopologyTemplate topologyTemplate = new TopologyTemplate();
110 topologyTemplate.setComponentType(ComponentTypeEnum.SERVICE);
111 Component component = test.convertFromToscaElement(topologyTemplate);
112 assertEquals(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue(), component.getToscaType());
114 topologyTemplate.setComponentType(ComponentTypeEnum.PRODUCT);
115 component = test.convertFromToscaElement(topologyTemplate);
116 assertEquals(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue(), component.getToscaType());
118 NodeType nodeType = new NodeType();
119 nodeType.setComponentType(ComponentTypeEnum.RESOURCE);
120 topologyTemplate.setToscaType(ToscaElementTypeEnum.NODE_TYPE);
121 component = test.convertFromToscaElement(nodeType);
122 assertEquals(ToscaElementTypeEnum.NODE_TYPE.getValue(), component.getToscaType());
124 topologyTemplate.setComponentType(ComponentTypeEnum.RESOURCE_INSTANCE);
125 assertNull(test.convertFromToscaElement(topologyTemplate));
129 public void testConvertFromToscaElementServiceWithSelfCapabilities()
131 TopologyTemplate topologyTemplate = new TopologyTemplate();
133 Map<String, MapPropertiesDataDefinition> capabilitiesProperties = CapabilityTestUtils
134 .createCapPropsForTopologyTemplate(topologyTemplate);
136 topologyTemplate.setCapabilitiesProperties(capabilitiesProperties);
138 topologyTemplate.setComponentType(ComponentTypeEnum.SERVICE);
139 Component component = test.convertFromToscaElement(topologyTemplate);
140 assertEquals(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue(), component.getToscaType());
144 public void testConvertFromToscaElementResource()
146 TopologyTemplate topologyTemplate = new TopologyTemplate();
147 topologyTemplate.setComponentType(ComponentTypeEnum.RESOURCE);
148 Component component = test.convertFromToscaElement(topologyTemplate);
149 assertEquals(ToscaElementTypeEnum.TOPOLOGY_TEMPLATE.getValue(), component.getToscaType());
153 public void testConvertFromToscaElementResourceType() {
154 TopologyTemplate topologyTemplate = new TopologyTemplate();
155 topologyTemplate.setComponentType(ComponentTypeEnum.RESOURCE);
156 topologyTemplate.setResourceType(ResourceTypeEnum.PNF);
157 Resource resource = test.convertFromToscaElement(topologyTemplate);
158 assertEquals(ResourceTypeEnum.PNF, resource.getResourceType());
162 public void testConvertFromToscaElementResourceOutputs() {
163 final TopologyTemplate topologyTemplate = new TopologyTemplate();
164 topologyTemplate.setComponentType(ComponentTypeEnum.RESOURCE);
165 final OutputDefinition outputDefinition = new OutputDefinition();
166 final Map<String, AttributeDataDefinition> map = new HashMap<>();
167 map.put("mock", outputDefinition);
168 topologyTemplate.setOutputs(map);
169 final Resource resource = test.convertFromToscaElement(topologyTemplate);
170 assertNotNull(resource.getOutputs());
171 assertFalse(resource.getOutputs().isEmpty());
175 public void testConvertFromToscaElementResourceComponentInstancesOutputs() {
176 final TopologyTemplate topologyTemplate = new TopologyTemplate();
177 topologyTemplate.setComponentType(ComponentTypeEnum.RESOURCE);
179 final Map<String, MapAttributesDataDefinition> instOutputs = new HashMap<>();
180 final MapAttributesDataDefinition mapAttributesDataDefinition = new MapAttributesDataDefinition();
181 final AttributeDefinition attributeDefinition = new AttributeDefinition();
182 final Map<String, AttributeDataDefinition> mapToscaDataDefinition = new HashMap<>();
183 mapToscaDataDefinition.put("mock", attributeDefinition);
184 mapAttributesDataDefinition.setMapToscaDataDefinition(mapToscaDataDefinition);
185 instOutputs.put("mock", mapAttributesDataDefinition);
186 topologyTemplate.setInstOutputs(instOutputs);
188 final Map<String, ComponentInstanceDataDefinition> componentInstanceDataDefinitionMap = new HashMap<>();
189 componentInstanceDataDefinitionMap.put("mock", new ComponentInstance());
190 topologyTemplate.setComponentInstances(componentInstanceDataDefinitionMap);
192 final Resource resource = test.convertFromToscaElement(topologyTemplate);
193 assertNotNull(resource);
194 assertNotNull(resource.getComponentInstancesOutputs());
195 assertFalse(resource.getComponentInstancesOutputs().isEmpty());
199 public void testIsAtomicComponent() {
200 Resource component = new Resource();
201 component.setComponentType(ComponentTypeEnum.SERVICE);
202 assertFalse(test.isAtomicComponent(component));
204 component.setComponentType(ComponentTypeEnum.RESOURCE);
205 assertTrue(test.isAtomicComponent(component));
207 ResourceTypeEnum resourceType = null;
208 assertFalse(test.isAtomicComponent(resourceType));
212 public void testGetVertexType()
214 VertexTypeEnum result;
215 Resource component = new Resource();
216 component.setComponentType(ComponentTypeEnum.SERVICE);
217 assertEquals("topology_template", test.getVertexType(component).getName());
218 component.setComponentType(ComponentTypeEnum.RESOURCE);
219 assertEquals("node_type", test.getVertexType(component).getName());
221 assertEquals(VertexTypeEnum.TOPOLOGY_TEMPLATE, test.getVertexType("Service"));
222 assertEquals(VertexTypeEnum.NODE_TYPE, test.getVertexType("VFC"));
226 public void testConvertRelation()
228 RelationshipTypeDefinition relationshipDef = new RelationshipTypeDefinition();
229 relationshipDef.setFromId("formId");
230 relationshipDef.setToId("toId");
231 relationshipDef.setOriginUI(true);
232 RequirementCapabilityRelDef result = ModelConverter.convertRelation(relationshipDef);
234 assertEquals("formId", result.getFromNode());
235 assertEquals("toId", result.getToNode());
236 assertEquals(true, result.isOriginUI());
237 assertEquals(1, result.getRelationships().size());
241 public void testConvertRelationToToscaRelation()
243 RequirementCapabilityRelDef reqCap = new RequirementCapabilityRelDef();
244 reqCap.setOriginUI(true);
245 reqCap.setFromNode("fromNode");
246 reqCap.setToNode("toNode");
247 List<CapabilityRequirementRelationship> list = new LinkedList<>();
248 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
249 RelationshipInfo info = new RelationshipInfo();
250 info.setCapabilityOwnerId("capOwnerId");
252 info.setCapabilityUid("capUid");
253 info.setRequirementOwnerId("reqOwnerId");
254 info.setRequirementUid("reqUid");
255 info.setRequirement("req");
256 info.setCapability("cap");
257 RelationshipImpl relationshipImpl = new RelationshipImpl();
258 relationshipImpl.setType("type");
259 info.setRelationships(relationshipImpl);
260 relationship.setRelation(info);
261 list.add(relationship);
262 reqCap.setRelationships(list);
264 List<RelationshipInstDataDefinition> result = ModelConverter.convertRelationToToscaRelation(reqCap);
265 assertEquals(1, result.size());
266 assertEquals("capOwnerId", result.get(0).getCapabilityOwnerId());
267 assertEquals("id", result.get(0).getUniqueId());
268 assertEquals("capUid", result.get(0).getCapabilityId());
269 assertEquals("reqOwnerId", result.get(0).getRequirementOwnerId());
270 assertEquals("reqUid", result.get(0).getRequirementId());
271 assertEquals("req", result.get(0).getRequirement());
272 assertEquals("cap", result.get(0).getCapability());
273 assertEquals("type", result.get(0).getType());
274 assertEquals(true, result.get(0).isOriginUI());
275 assertEquals("fromNode", result.get(0).getFromId());
276 assertEquals("toNode", result.get(0).getToId());
280 public void testConvertToMapOfMapCapabilityPropertiesonvertRelation()
282 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
283 MapCapabilityProperty result = ModelConverter.convertToMapOfMapCapabilityProperties(capabilities, "ownerId", true);
284 assertNotNull(result);
285 assertEquals(0, result.getMapToscaDataDefinition().size());
287 List<CapabilityDefinition> list = new LinkedList<>();
288 CapabilityDefinition capDef = new CapabilityDefinition();
289 List<ComponentInstanceProperty> properties = new LinkedList<>();
290 ComponentInstanceProperty property = new ComponentInstanceProperty();
291 properties.add(property);
292 capDef.setProperties(properties);
294 capabilities.put("test", list);
295 result = ModelConverter.convertToMapOfMapCapabilityProperties(capabilities, "ownerId", true);
296 assertEquals(1, result.getMapToscaDataDefinition().size());
300 public void testBuildCapabilityPropertyKey()
302 CapabilityDefinition capDef = new CapabilityDefinition();
303 capDef.setOwnerId("owner");
304 String result = ModelConverter.buildCapabilityPropertyKey(true,"type","name", "capId", capDef);
306 assertEquals("capId#owner#type#name", result);
310 public void testConvertToMapOfMapCapabiltyProperties()
312 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
313 List<CapabilityDefinition> list = new LinkedList<>();
314 CapabilityDefinition capDef = new CapabilityDefinition();
315 List<ComponentInstanceProperty> properties = new LinkedList<>();
316 ComponentInstanceProperty property = new ComponentInstanceProperty();
317 properties.add(property);
318 capDef.setProperties(properties);
320 capabilities.put("test", list);
322 MapCapabilityProperty result = ModelConverter.convertToMapOfMapCapabiltyProperties(capabilities, "ownerId", true);
324 assertEquals(1, result.getMapToscaDataDefinition().size());
325 assertNotNull(result.getMapToscaDataDefinition().get("ownerId#ownerId#test#null"));
329 public void testGetCapabilitiesMapFromMapObject()
331 assertNull(ModelConverter.getCapabilitiesMapFromMapObject(null, null));
333 Map<String, ListCapabilityDataDefinition> toscaCapabilities = new HashMap<>();
334 Map<String, MapPropertiesDataDefinition> toscaCapPropMap = new HashMap<>();
335 ListCapabilityDataDefinition dataDefList = new ListCapabilityDataDefinition();
336 List<CapabilityDataDefinition> capDataDefList = new LinkedList<>();
337 CapabilityDataDefinition capDataDef = new CapabilityDataDefinition();
338 capDataDef.setName("test");
339 capDataDefList.add(capDataDef);
340 dataDefList.setListToscaDataDefinition(capDataDefList);
341 MapPropertiesDataDefinition dataDefMap = new MapPropertiesDataDefinition();
342 Map<String, PropertyDataDefinition> propDataMap = new HashMap<>();
343 PropertyDataDefinition propertyDataDefinition = new PropertyDataDefinition();
344 propDataMap.put("propMap", propertyDataDefinition);
345 dataDefMap.setMapToscaDataDefinition(propDataMap);
346 toscaCapabilities.put("prop", dataDefList);
347 toscaCapPropMap.put("prop#test", dataDefMap);
349 Map<String, List<CapabilityDefinition>> result = ModelConverter.getCapabilitiesMapFromMapObject(toscaCapabilities, toscaCapPropMap);
350 assertEquals(1, result.size());