2 * Copyright © 2016-2019 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.tosca;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.mockito.Mockito;
23 import org.mockito.MockitoAnnotations;
24 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
25 import org.openecomp.sdc.be.model.CapabilityDefinition;
26 import org.openecomp.sdc.be.model.Component;
27 import org.openecomp.sdc.be.model.ComponentInstance;
28 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
29 import org.openecomp.sdc.be.model.Resource;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.Collections;
34 import java.util.HashMap;
35 import java.util.List;
37 import java.util.stream.Collectors;
39 import static java.util.Arrays.asList;
40 import static org.assertj.core.api.Assertions.assertThat;
41 import static org.mockito.Mockito.doReturn;
43 public class CapabilityRequirementConverterTest {
45 CapabilityRequirementConverter capabiltyRequirementConvertor = Mockito.spy(new CapabilityRequirementConverter());
46 ComponentInstance instanceProxy = Mockito.spy( new ComponentInstance() );
47 ComponentInstance vfInstance = Mockito.spy( new ComponentInstance() );
48 Component vfComponent = Mockito.spy( new Resource() );
49 ComponentInstance vfcInstance = Mockito.spy( new ComponentInstance() );
50 Component vfcComponent = Mockito.spy( new Resource() );
53 public void setUpMock() throws Exception {
54 MockitoAnnotations.initMocks(this);
58 public void testGetInstance() {
59 CapabilityRequirementConverter.getInstance();
63 public void testGetReducedPathByOwner() throws Exception {
64 List<String> pathList = new ArrayList<>();
65 String uniqueId = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_2";
67 String exerpt = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1";
68 String duplicate = "a77df84e-83eb-4edc-9823-d1f9f6549693.c79e9a4a-b172-4323-a2e2-1c48d6603241.lb_swu_direct_4_rvmi";
70 pathList.add(duplicate);
71 pathList.add(duplicate);
72 pathList.add(uniqueId);
74 pathList.add("5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
75 pathList.add("86ae128e-3d0a-41f7-a957-db1df9fe598c.9cc8f8ac-6869-4dd6-a6e1-74ecb9570dc4.vepdgtp4837svc_proxy0");
77 List<String> reducedMap = new CapabilityRequirementConverter().getReducedPathByOwner( pathList , uniqueId );
79 assertThat(reducedMap).isNotNull().doesNotContain(exerpt).containsOnlyOnce(duplicate).hasSize(4);
81 List<String> path = new ArrayList<String>();
83 capabiltyRequirementConvertor.getReducedPathByOwner(path, uniqueId);
86 capabiltyRequirementConvertor.getReducedPathByOwner(path, uniqueId);
87 capabiltyRequirementConvertor.getReducedPathByOwner(path, "");
90 // generate stub capability
91 private Map<String, List<CapabilityDefinition>> newCapabilities(String capabilityName) {
92 Map<String, List<CapabilityDefinition>> capabilities = new HashMap<>();
93 List<CapabilityDefinition> list = new ArrayList<>();
94 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
95 capabilityDefinition.setName(capabilityName);
96 capabilityDefinition.setType("att.Node");
97 List<ComponentInstanceProperty> properties = new ArrayList<>();
98 ComponentInstanceProperty prop = new ComponentInstanceProperty();
99 prop.setValue("value");
100 properties.add(prop);
101 capabilityDefinition.setProperties(properties);
102 List<String> pathList = new ArrayList<>();
104 capabilityDefinition.setOwnerId("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693");
105 pathList.add("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1");
106 // pathList.add("a77df84e-83eb-4edc-9823-d1f9f6549693.c79e9a4a-b172-4323-a2e2-1c48d6603241.lb_swu_direct_4_rvmi");
107 pathList.add("5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
108 pathList.add("86ae128e-3d0a-41f7-a957-db1df9fe598c.9cc8f8ac-6869-4dd6-a6e1-74ecb9570dc4.vepdgtp4837svc_proxy0");
110 capabilityDefinition.setPath(pathList);
111 list.add(capabilityDefinition);
112 capabilities.put(capabilityDefinition.getType(), list);
118 public void testBuildName() {
119 doReturn("1").when(instanceProxy).getActualComponentUid();
120 doReturn("2").when(vfInstance).getActualComponentUid();
121 doReturn("3").when(vfcInstance).getActualComponentUid();
123 Component proxyOrigin = new Resource();
125 proxyOrigin.setName("vepdgtp4837svc_proxy0");
126 proxyOrigin.setComponentType(ComponentTypeEnum.RESOURCE);
127 proxyOrigin.setComponentInstances(asList(vfInstance));
131 vfInstance.setName("vepdgtp4837vf0");
132 vfInstance.setNormalizedName("vepdgtp4837vf0");
133 vfInstance.setUniqueId(
134 "5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
135 vfComponent.setName("vepdgtp4837vf0"); // origin
136 vfComponent.setComponentInstances(Arrays.asList(vfcInstance));
137 vfcInstance.setUniqueId("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1");
138 vfcInstance.setName("lb_1");
139 vfcInstance.setNormalizedName("lb_1");
140 vfcInstance.setName("41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1");
141 vfcComponent.setName("lb_1");
143 Map<String, List<CapabilityDefinition>> capabilities = newCapabilities("port");
144 vfcComponent.setCapabilities(capabilities);
145 Map<Component, ComponentInstance> map = Collections
146 .unmodifiableMap(new HashMap<Component, ComponentInstance>() {
148 put(proxyOrigin, null);
149 put(vfComponent, vfInstance);
150 put(vfcComponent, vfcInstance);
153 Map<String, Component> cache = Collections.unmodifiableMap(new HashMap<String, Component>() {
155 put("1", proxyOrigin);
156 put("2", vfComponent);
157 put("3", vfcComponent);
160 instanceProxy.setCapabilities(capabilities);
161 proxyOrigin.setCapabilities(capabilities);
162 List<CapabilityDefinition> flatList = capabilities.values().stream().flatMap(List::stream)
163 .collect(Collectors.toList());
164 flatList.stream().forEach((CapabilityDefinition capabilityDefinition) -> {
165 String name = capabiltyRequirementConvertor.buildCapabilityNameForComponentInstance(cache, instanceProxy,
166 capabilityDefinition);
167 System.out.println("built name -> " + name);
168 assertThat(name).isEqualTo("vepdgtp4837vf0.lb_1." + capabilityDefinition.getName());
172 public void getReducedPathByOwner() throws Exception {
173 List<String> pathList = new ArrayList<>();
174 String uniqueId = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_2";
176 String exerpt = "41d3a665-1313-4b5e-9bf0-e901ecf4b806.a77df84e-83eb-4edc-9823-d1f9f6549693.lb_1";
177 String duplicate = "a77df84e-83eb-4edc-9823-d1f9f6549693.c79e9a4a-b172-4323-a2e2-1c48d6603241.lb_swu_direct_4_rvmi";
178 pathList.add(exerpt);
179 pathList.add(duplicate);
180 pathList.add(duplicate);
181 pathList.add(uniqueId);
183 pathList.add("5f172af9-1588-443e-8897-1432b19aad8c.2cb7514a-1e50-4280-8457-baacb97b50bf.vepdgtp4837vf0");
184 pathList.add("86ae128e-3d0a-41f7-a957-db1df9fe598c.9cc8f8ac-6869-4dd6-a6e1-74ecb9570dc4.vepdgtp4837svc_proxy0");
186 List<String> reducedMap = new CapabilityRequirementConverter().getReducedPathByOwner( pathList , uniqueId );
188 assertThat( reducedMap ).isNotNull().doesNotContain(exerpt).containsOnlyOnce(duplicate).hasSize(4);