1 package org.openecomp.sdc.be.components.path;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
6 import java.util.ArrayList;
7 import java.util.HashMap;
10 import org.junit.Before;
11 import org.openecomp.sdc.be.components.BeConfDependentTest;
12 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
13 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
14 import org.openecomp.sdc.be.components.path.beans.TitanGraphTestSetup;
15 import org.openecomp.sdc.be.components.path.utils.GraphTestUtils;
16 import org.openecomp.sdc.be.dao.api.ActionStatus;
17 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
18 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
19 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
20 import org.openecomp.sdc.be.dao.titan.TitanGraphClient;
21 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
22 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathDataDefinition;
23 import org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition;
24 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
25 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
26 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
27 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
28 import org.openecomp.sdc.be.model.DistributionStatusEnum;
29 import org.openecomp.sdc.be.model.LifecycleStateEnum;
30 import org.openecomp.sdc.be.model.Resource;
31 import org.openecomp.sdc.be.model.Service;
32 import org.openecomp.sdc.be.model.User;
33 import org.openecomp.sdc.be.model.category.CategoryDefinition;
34 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
35 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
36 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
37 import org.openecomp.sdc.be.tosca.CapabiltyRequirementConvertor;
38 import org.openecomp.sdc.be.user.Role;
39 import org.openecomp.sdc.common.util.ValidationUtils;
40 import org.openecomp.sdc.exception.ResponseFormat;
41 import org.springframework.beans.factory.annotation.Autowired;
43 import com.google.common.collect.Lists;
45 import fj.data.Either;
47 public class BaseForwardingPathTest extends BeConfDependentTest implements ForwardingPathTestUtils {
50 protected ForwardingPathDataDefinition forwardingPathDataDefinition;
53 protected TitanGraphClient titanGraphClient;
56 protected CapabiltyRequirementConvertor capabiltyRequirementConvertor;
59 protected ToscaOperationFacade toscaOperationFacade;
62 protected ServiceBusinessLogic bl;
65 protected IElementOperation elementDao;
68 protected ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
70 @javax.annotation.Resource
71 protected TitanDao titanDao;
74 public void initTitan() {
75 TitanGraphTestSetup.createGraph(titanGraphClient.getGraph().left().value());
76 categoryDefinition = new CategoryDefinition();
77 categoryDefinition.setName(CATEGORY_NAME);
81 public void initUser() {
82 // User data and management
84 user.setUserId("jh0003");
85 user.setFirstName("Jimmi");
86 user.setLastName("Hendrix");
87 user.setRole(Role.ADMIN.name());
91 protected CategoryDefinition categoryDefinition;
92 protected static final String GENERIC_SERVICE_NAME = "org.openecomp.resource.abstract.nodes.service";
93 protected static final String CATEGORY_NAME = "cat_name";
94 protected static final String FORWARDING_PATH_ID = "forwarding_pathId";
95 protected static final String HTTP_PROTOCOL = "http";
98 protected Resource setupGenericServiceMock() {
99 Resource genericService = new Resource();
100 genericService.setVersion("1.0");
101 genericService.setToscaResourceName(GENERIC_SERVICE_NAME);
102 return genericService;
105 protected void initGraph() {
106 Map<GraphPropertyEnum, Object> props = new HashMap<>();
107 props.put(GraphPropertyEnum.IS_HIGHEST_VERSION, true);
108 props.put(GraphPropertyEnum.STATE, LifecycleStateEnum.CERTIFIED.name());
109 props.put(GraphPropertyEnum.TOSCA_RESOURCE_NAME, "org.openecomp.resource.abstract.nodes.service");
111 GraphTestUtils.createServiceVertex(titanDao, props);
113 GraphVertex resourceVertex = GraphTestUtils.createResourceVertex(titanDao, props, ResourceTypeEnum.PNF);
114 resourceVertex.setJsonMetadataField(JsonPresentationFields.VERSION, "0.1");
115 Either<GraphVertex, TitanOperationStatus> vertexTitanOperationStatusEither = titanDao.updateVertex(resourceVertex);
116 assertTrue(vertexTitanOperationStatusEither.isLeft());
119 protected Service createTestService() {
121 createServiceCategory(CATEGORY_NAME);
123 Service service = new Service();
124 service.setName("ForwardingPathTestingService");
125 service.setDescription("Just a comment.");
126 service.setTags(Lists.newArrayList(service.getName(), service.getComponentType().getValue() + service.getName() + "2"));
127 service.setContactId("as123y");
128 service.setIcon("MyIcon");
129 service.setProjectCode("414155");
130 ArrayList<CategoryDefinition> categories = new ArrayList<>();
131 CategoryDefinition cd = new CategoryDefinition();
132 cd.setName(CATEGORY_NAME);
133 cd.setNormalizedName("abcde");
135 service.setCategories(categories);
136 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
137 service.setDistributionStatus(DistributionStatusEnum.DISTRIBUTION_APPROVED);
141 protected void createCategory() {
142 Either<CategoryDefinition, ActionStatus> category = elementDao.createCategory(categoryDefinition, NodeTypeEnum.ServiceNewCategory);
143 assertTrue("Failed to create category", category.isLeft());
146 protected void createServiceCategory(String categoryName) {
147 GraphVertex cat = new GraphVertex(VertexTypeEnum.SERVICE_CATEGORY);
148 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
149 String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.SERVICE_CATEGORY);
150 cat.setUniqueId(catId);
151 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID, catId);
152 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.SERVICE_CATEGORY.getName());
153 metadataProperties.put(GraphPropertyEnum.NAME, categoryName);
154 metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
155 cat.setMetadataProperties(metadataProperties);
156 cat.updateMetadataJsonWithCurrentMetadataProperties();
158 Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
160 assertTrue(catRes.isLeft());
163 protected Service initForwardPath() {
164 ForwardingPathDataDefinition forwardingPathDataDefinition = createMockPath();
165 Service service = new Service();
166 service.setUniqueId(FORWARDING_PATH_ID);
167 assertEquals(null, service.addForwardingPath(forwardingPathDataDefinition));
171 protected ForwardingPathDataDefinition createMockPath() {
172 if (forwardingPathDataDefinition != null) {
173 return forwardingPathDataDefinition;
175 forwardingPathDataDefinition = new ForwardingPathDataDefinition("Yoyo");
176 forwardingPathDataDefinition.setUniqueId(java.util.UUID.randomUUID().toString());
177 forwardingPathDataDefinition.setDestinationPortNumber("414155");
178 forwardingPathDataDefinition.setProtocol(HTTP_PROTOCOL);
179 org.openecomp.sdc.be.datatypes.elements.ListDataDefinition<org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition> forwardingPathElementDataDefinitionListDataDefinition = new org.openecomp.sdc.be.datatypes.elements.ListDataDefinition<>();
180 forwardingPathElementDataDefinitionListDataDefinition.add(new ForwardingPathElementDataDefinition("fromNode", "toNode", "333", "444", "2222", "5555"));
181 forwardingPathElementDataDefinitionListDataDefinition.add(new ForwardingPathElementDataDefinition("toNode", "toNode2", "4444", "44444", "4", "44"));
182 forwardingPathDataDefinition.setPathElements(forwardingPathElementDataDefinitionListDataDefinition);
183 return forwardingPathDataDefinition;
186 protected Service createService() {
187 Either<Service, ResponseFormat> serviceCreateResult = bl.createService(createTestService(), user);
188 assertTrue("Failed to create service", serviceCreateResult.isLeft());
189 Service service = serviceCreateResult.left().value();
190 // ComponentInstance componentInstance = new ComponentInstance();
191 // componentInstance.setName("Test1");
192 // componentInstance.setNormalizedName("Test1");
193 // componentInstance.setUniqueId("Test1");
194 // componentInstance.setInputValueCounter(1);
195 // componentInstance.setAttributeValueCounter(1);
196 // componentInstance.setIcon("network");
197 // componentInstance.setComponentVersion("1.0");
198 // componentInstance.setIsProxy(true);
199 // componentInstance.setComponentUid(service.getUniqueId());
200 // componentInstance.setPropertyValueCounter(1);
201 // componentInstance.setPosX("333");
202 // componentInstance.setPosY("333");
203 // componentInstance.setOriginType(OriginTypeEnum.VF);
205 // Either<ComponentInstance, ResponseFormat> instanceResult = serviceComponentInstanceBusinessLogic.createComponentInstance("services", service.getUniqueId(), user.getUserId(), componentInstance);
206 // assertTrue("Failed to create instance", instanceResult.isLeft());