Upgrade SDC from Titan to Janus Graph
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / path / BaseForwardingPathTest.java
1 package org.openecomp.sdc.be.components.path;
2
3 import com.google.common.collect.Lists;
4 import fj.data.Either;
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.JanusGraphTestSetup;
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.janusgraph.JanusGraphClient;
13 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
14 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
15 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
16 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
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.Service;
26 import org.openecomp.sdc.be.model.User;
27 import org.openecomp.sdc.be.model.category.CategoryDefinition;
28 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
29 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
30 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
31 import org.openecomp.sdc.be.tosca.CapabilityRequirementConverter;
32 import org.openecomp.sdc.be.user.Role;
33 import org.openecomp.sdc.common.util.ValidationUtils;
34 import org.openecomp.sdc.exception.ResponseFormat;
35 import org.springframework.beans.factory.annotation.Autowired;
36
37 import java.util.ArrayList;
38 import java.util.HashMap;
39 import java.util.Map;
40
41 import static org.junit.Assert.assertNull;
42 import static org.junit.Assert.assertTrue;
43
44 public abstract class BaseForwardingPathTest extends BeConfDependentTest implements ForwardingPathTestUtils {
45
46
47     protected User user;
48     private ForwardingPathDataDefinition forwardingPathDataDefinition;
49
50     @Autowired
51     protected JanusGraphClient janusGraphClient;
52
53     @Autowired
54     protected CapabilityRequirementConverter capabiltyRequirementConvertor;
55
56     @Autowired
57     protected ToscaOperationFacade toscaOperationFacade;
58
59     @Autowired
60     protected ServiceBusinessLogic bl;
61
62     @Autowired
63     protected IElementOperation elementDao;
64
65     @Autowired
66     protected ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
67
68     @javax.annotation.Resource
69     protected JanusGraphDao janusGraphDao;
70
71     @Before
72     public void initJanusGraph() {
73         JanusGraphTestSetup.createGraph(janusGraphClient.getGraph().left().value());
74         categoryDefinition = new CategoryDefinition();
75         categoryDefinition.setName(CATEGORY_NAME);
76     }
77
78     @Before
79     public void initUser() {
80         // User data and management
81         user = new User();
82         user.setUserId("jh0003");
83         user.setFirstName("Jimmi");
84         user.setLastName("Hendrix");
85         user.setRole(Role.ADMIN.name());
86     }
87
88
89     private CategoryDefinition categoryDefinition;
90     private static final String CATEGORY_NAME = "cat_name";
91     static final String FORWARDING_PATH_ID = "forwarding_pathId";
92     static final String HTTP_PROTOCOL = "http";
93     private static final String INSTANTIATION_TYPE = "A-la-carte";
94     private static final String CAPABILITY_NAME_1 = "CP1";
95     private static final String CAPABILITY_NAME_2 = "CP2";
96     private static final String CAPABILITY_NAME_3 = "CP3";
97     private static final String CI_NAME_1 = "CI1";
98     private static final String CI_NAME_2 = "CI2";
99     private static final String CI_NAME_3 = "CI3";
100
101
102     private void initGraph() {
103         Map<GraphPropertyEnum, Object> props = new HashMap<>();
104         props.put(GraphPropertyEnum.IS_HIGHEST_VERSION, true);
105         props.put(GraphPropertyEnum.STATE, LifecycleStateEnum.CERTIFIED.name());
106         props.put(GraphPropertyEnum.TOSCA_RESOURCE_NAME, "org.openecomp.resource.abstract.nodes.service");
107
108         GraphTestUtils.createServiceVertex(janusGraphDao, props);
109
110         GraphVertex resourceVertex = GraphTestUtils.createResourceVertex(janusGraphDao, props, ResourceTypeEnum.PNF);
111         resourceVertex.setJsonMetadataField(JsonPresentationFields.VERSION, "0.1");
112         Either<GraphVertex, JanusGraphOperationStatus> vertexJanusGraphOperationStatusEither = janusGraphDao
113             .updateVertex(resourceVertex);
114         assertTrue(vertexJanusGraphOperationStatusEither.isLeft());
115     }
116
117     private Service createTestService() {
118         createCategory();
119         createServiceCategory(CATEGORY_NAME);
120         initGraph();
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         service.setInstantiationType(INSTANTIATION_TYPE);
129         ArrayList<CategoryDefinition> categories = new ArrayList<>();
130         CategoryDefinition cd = new CategoryDefinition();
131         cd.setName(CATEGORY_NAME);
132         cd.setNormalizedName("abcde");
133         categories.add(cd);
134         service.setCategories(categories);
135         service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
136         service.setDistributionStatus(DistributionStatusEnum.DISTRIBUTION_APPROVED);
137         return service;
138     }
139
140     private void createCategory() {
141         Either<CategoryDefinition, ActionStatus> category = elementDao.createCategory(categoryDefinition, NodeTypeEnum.ServiceNewCategory);
142         assertTrue("Failed to create category", category.isLeft());
143     }
144
145     private void createServiceCategory(String categoryName) {
146         GraphVertex cat = new GraphVertex(VertexTypeEnum.SERVICE_CATEGORY);
147         Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
148         String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.SERVICE_CATEGORY);
149         cat.setUniqueId(catId);
150         metadataProperties.put(GraphPropertyEnum.UNIQUE_ID, catId);
151         metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.SERVICE_CATEGORY.getName());
152         metadataProperties.put(GraphPropertyEnum.NAME, categoryName);
153         metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
154         cat.setMetadataProperties(metadataProperties);
155         cat.updateMetadataJsonWithCurrentMetadataProperties();
156
157         Either<GraphVertex, JanusGraphOperationStatus> catRes = janusGraphDao.createVertex(cat);
158
159         assertTrue(catRes.isLeft());
160     }
161
162     Service initForwardPath() {
163         ForwardingPathDataDefinition forwardingPathDataDefinition = createMockPath();
164         Service service = new Service();
165         service.setUniqueId(FORWARDING_PATH_ID);
166         assertNull(service.addForwardingPath(forwardingPathDataDefinition));
167         return service;
168     }
169
170     private ForwardingPathDataDefinition createMockPath() {
171         if (forwardingPathDataDefinition != null) {
172             return forwardingPathDataDefinition;
173         }
174         forwardingPathDataDefinition = new ForwardingPathDataDefinition("Yoyo");
175         forwardingPathDataDefinition.setUniqueId(java.util.UUID.randomUUID().toString());
176         forwardingPathDataDefinition.setDestinationPortNumber("414155");
177         forwardingPathDataDefinition.setProtocol(HTTP_PROTOCOL);
178         org.openecomp.sdc.be.datatypes.elements.ListDataDefinition<org.openecomp.sdc.be.datatypes.elements.ForwardingPathElementDataDefinition> forwardingPathElementDataDefinitionListDataDefinition = new org.openecomp.sdc.be.datatypes.elements.ListDataDefinition<>();
179         forwardingPathElementDataDefinitionListDataDefinition.add(new ForwardingPathElementDataDefinition(CI_NAME_1, CI_NAME_2, CAPABILITY_NAME_1, CAPABILITY_NAME_2, "2222", "5555"));
180         forwardingPathElementDataDefinitionListDataDefinition.add(new ForwardingPathElementDataDefinition(CI_NAME_2, CI_NAME_3, CAPABILITY_NAME_2, CAPABILITY_NAME_3, "4", "44"));
181         forwardingPathDataDefinition.setPathElements(forwardingPathElementDataDefinitionListDataDefinition);
182         return forwardingPathDataDefinition;
183     }
184
185     Service createService() {
186         Either<Service, ResponseFormat> serviceCreateResult = bl.createService(createTestService(), user);
187         assertTrue("Failed to create service", serviceCreateResult.isLeft());
188         return serviceCreateResult.left().value();
189     }
190 }
191