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