1 package org.openecomp.sdc.be.model.jsontitan.operations;
3 import static org.junit.Assert.assertTrue;
4 import static org.mockito.ArgumentMatchers.eq;
5 import static org.mockito.Mockito.when;
7 import java.util.HashMap;
11 import org.junit.Assert;
12 import org.junit.BeforeClass;
13 import org.junit.Test;
14 import org.mockito.Mockito;
15 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
16 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
17 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
18 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
19 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
20 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
21 import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
22 import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition;
23 import org.openecomp.sdc.be.datatypes.elements.ListCapabilityDataDefinition;
24 import org.openecomp.sdc.be.datatypes.elements.ListRequirementDataDefinition;
25 import org.openecomp.sdc.be.datatypes.elements.MapArtifactDataDefinition;
26 import org.openecomp.sdc.be.datatypes.elements.MapListCapabiltyDataDefinition;
27 import org.openecomp.sdc.be.datatypes.elements.MapListRequirementDataDefinition;
28 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
29 import org.openecomp.sdc.be.model.ArtifactDefinition;
30 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
31 import org.openecomp.sdc.be.model.Component;
32 import org.openecomp.sdc.be.model.GroupDefinition;
33 import org.openecomp.sdc.be.model.ModelTestBase;
34 import org.openecomp.sdc.be.model.RelationshipImpl;
35 import org.openecomp.sdc.be.model.RelationshipInfo;
36 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
37 import org.openecomp.sdc.be.model.User;
38 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
40 import com.google.common.collect.Lists;
42 import fj.data.Either;
44 public class NodeTemplateOperationTest extends ModelTestBase {
46 private final static String COMPONENT_ID = "componentId";
47 private final static String TO_INSTANCE_ID = "toInstanceId";
48 private final static String FROM_INSTANCE_ID = "fromInstanceId";
49 private final static String RELATION_ID = "relationId";
50 private final static String CAPABILITY_OWNER_ID = "capabilityOwnerId";
51 private final static String CAPABILITY_UID = "capabilityUid";
52 private final static String CAPABILITY_NAME = "capabilityName";
53 private final static String REQUIREMENT_OWNER_ID = "requirementOwnerId";
54 private final static String REQUIREMENT_UID = "requirementUid";
55 private final static String REQUIREMENT_NAME = "requirementName";
56 private final static String RELATIONSHIP_TYPE = "relationshipType";
58 private static Map<String, MapListCapabiltyDataDefinition> fulfilledCapability;
59 private static Map<String, MapListRequirementDataDefinition> fulfilledRequirement;
60 private static CapabilityDataDefinition capability;
61 private static RequirementDataDefinition requirement;
62 private static RequirementCapabilityRelDef relation;
64 private static TitanDao titanDao;
65 private static NodeTemplateOperation operation;
68 public static void setup() {
70 titanDao = Mockito.mock(TitanDao.class);
71 operation = new NodeTemplateOperation();
72 operation.setTitanDao(titanDao);
73 buildDataDefinition();
76 private static void buildDataDefinition() {
77 buildCapabiltyDataDefinition();
78 buildRequirementDataDefinition();
83 public void testGetFulfilledCapabilityByRelationSuccess() {
84 GraphVertex vertex = Mockito.mock(GraphVertex.class);
85 Either<GraphVertex, TitanOperationStatus> vertexRes = Either.left(vertex);
86 when(titanDao.getVertexById(eq(COMPONENT_ID), eq(JsonParseFlagEnum.ParseAll))).thenReturn(vertexRes);
88 GraphVertex dataVertex = new GraphVertex();
89 dataVertex.setJson(fulfilledCapability);
90 Either<GraphVertex, TitanOperationStatus> childVertexRes = Either.left(dataVertex);
91 when(titanDao.getChildVertex(eq(vertex), eq(EdgeLabelEnum.FULLFILLED_CAPABILITIES),
92 eq(JsonParseFlagEnum.ParseJson))).thenReturn(childVertexRes);
93 Either<CapabilityDataDefinition, StorageOperationStatus> result = operation.getFulfilledCapabilityByRelation(
94 COMPONENT_ID, TO_INSTANCE_ID, relation, (rel, cap) -> isBelongingCapability(rel, cap));
95 assertTrue(result.isLeft());
96 assertTrue(result.left().value().equals(capability));
100 public void testGetFulfilledRequirementByRelationSuccess() {
101 GraphVertex vertex = Mockito.mock(GraphVertex.class);
102 Either<GraphVertex, TitanOperationStatus> vertexRes = Either.left(vertex);
103 when(titanDao.getVertexById(eq(COMPONENT_ID), eq(JsonParseFlagEnum.ParseAll))).thenReturn(vertexRes);
105 GraphVertex dataVertex = new GraphVertex();
106 dataVertex.setJson(fulfilledRequirement);
107 Either<GraphVertex, TitanOperationStatus> childVertexRes = Either.left(dataVertex);
108 when(titanDao.getChildVertex(eq(vertex), eq(EdgeLabelEnum.FULLFILLED_REQUIREMENTS),
109 eq(JsonParseFlagEnum.ParseJson))).thenReturn(childVertexRes);
110 Either<RequirementDataDefinition, StorageOperationStatus> result = operation.getFulfilledRequirementByRelation(
111 COMPONENT_ID, FROM_INSTANCE_ID, relation, (rel, req) -> isBelongingRequirement(rel, req));
112 assertTrue(result.isLeft());
113 assertTrue(result.left().value().equals(requirement));
117 public void testGetFulfilledCapabilityByRelationNotFoundFailure() {
118 GraphVertex vertex = Mockito.mock(GraphVertex.class);
119 Either<GraphVertex, TitanOperationStatus> vertexRes = Either.left(vertex);
120 when(titanDao.getVertexById(eq(COMPONENT_ID), eq(JsonParseFlagEnum.ParseAll))).thenReturn(vertexRes);
122 Either<GraphVertex, TitanOperationStatus> childVertexRes = Either.right(TitanOperationStatus.NOT_FOUND);
123 when(titanDao.getChildVertex(eq(vertex), eq(EdgeLabelEnum.FULLFILLED_CAPABILITIES),
124 eq(JsonParseFlagEnum.ParseJson))).thenReturn(childVertexRes);
125 Either<CapabilityDataDefinition, StorageOperationStatus> result = operation.getFulfilledCapabilityByRelation(
126 COMPONENT_ID, TO_INSTANCE_ID, relation, (rel, cap) -> isBelongingCapability(rel, cap));
127 assertTrue(result.isRight());
128 assertTrue(result.right().value() == StorageOperationStatus.NOT_FOUND);
132 public void testGetFulfilledRequirementByRelationNotFoundFailure() {
133 GraphVertex vertex = Mockito.mock(GraphVertex.class);
134 Either<GraphVertex, TitanOperationStatus> vertexRes = Either.left(vertex);
135 when(titanDao.getVertexById(eq(COMPONENT_ID), eq(JsonParseFlagEnum.ParseAll))).thenReturn(vertexRes);
137 Either<GraphVertex, TitanOperationStatus> childVertexRes = Either.right(TitanOperationStatus.NOT_FOUND);
138 when(titanDao.getChildVertex(eq(vertex), eq(EdgeLabelEnum.FULLFILLED_REQUIREMENTS),
139 eq(JsonParseFlagEnum.ParseJson))).thenReturn(childVertexRes);
140 Either<RequirementDataDefinition, StorageOperationStatus> result = operation.getFulfilledRequirementByRelation(
141 COMPONENT_ID, FROM_INSTANCE_ID, relation, (rel, req) -> isBelongingRequirement(rel, req));
142 assertTrue(result.isRight());
143 assertTrue(result.right().value() == StorageOperationStatus.NOT_FOUND);
146 private static void buildRequirementDataDefinition() {
148 fulfilledRequirement = new HashMap<>();
149 MapListRequirementDataDefinition mapListRequirementDataDefinition = new MapListRequirementDataDefinition();
150 mapListRequirementDataDefinition.add(requirement.getCapability(), requirement);
151 fulfilledRequirement.put(FROM_INSTANCE_ID, mapListRequirementDataDefinition);
155 private static void buildRequirement() {
156 requirement = new RequirementDataDefinition();
157 requirement.setOwnerId(REQUIREMENT_OWNER_ID);
158 requirement.setUniqueId(REQUIREMENT_UID);
159 requirement.setName(REQUIREMENT_NAME);
160 requirement.setRelationship(RELATIONSHIP_TYPE);
163 private static void buildCapabiltyDataDefinition() {
165 fulfilledCapability = new HashMap<>();
166 MapListCapabiltyDataDefinition mapListCapabiltyDataDefinition = new MapListCapabiltyDataDefinition();
167 mapListCapabiltyDataDefinition.add(capability.getType(), capability);
168 fulfilledCapability.put(TO_INSTANCE_ID, mapListCapabiltyDataDefinition);
171 private static void buildCapability() {
172 capability = new CapabilityDataDefinition();
173 capability.setOwnerId(CAPABILITY_OWNER_ID);
174 capability.setUniqueId(CAPABILITY_UID);
175 capability.setName(CAPABILITY_NAME);
178 private static void buildRelation() {
180 relation = new RequirementCapabilityRelDef();
181 CapabilityRequirementRelationship relationship = new CapabilityRequirementRelationship();
182 RelationshipInfo relationInfo = new RelationshipInfo();
183 relationInfo.setId(RELATION_ID);
184 relationship.setRelation(relationInfo);
186 relation.setRelationships(Lists.newArrayList(relationship));
187 relation.setToNode(TO_INSTANCE_ID);
188 relation.setFromNode(FROM_INSTANCE_ID);
190 relationInfo.setCapabilityOwnerId(CAPABILITY_OWNER_ID);
191 relationInfo.setCapabilityUid(CAPABILITY_UID);
192 relationInfo.setCapability(CAPABILITY_NAME);
193 relationInfo.setRequirementOwnerId(REQUIREMENT_OWNER_ID);
194 relationInfo.setRequirementUid(REQUIREMENT_UID);
195 relationInfo.setRequirement(REQUIREMENT_NAME);
196 RelationshipImpl relationshipImpl = new RelationshipImpl();
197 relationshipImpl.setType(RELATIONSHIP_TYPE);
198 relationInfo.setRelationships(relationshipImpl);
201 private boolean isBelongingRequirement(RelationshipInfo relationshipInfo, RequirementDataDefinition req) {
202 return req.getRelationship().equals(relationshipInfo.getRelationship().getType())
203 && req.getName().equals(relationshipInfo.getRequirement())
204 && req.getUniqueId().equals(relationshipInfo.getRequirementUid())
205 && req.getOwnerId().equals(relationshipInfo.getRequirementOwnerId());
208 private boolean isBelongingCapability(RelationshipInfo relationshipInfo, CapabilityDataDefinition cap) {
209 return cap.getName().equals(relationshipInfo.getCapability())
210 && cap.getUniqueId().equals(relationshipInfo.getCapabilityUid())
211 && cap.getOwnerId().equals(relationshipInfo.getCapabilityOwnerId());
214 private NodeTemplateOperation createTestSubject() {
220 public void testGetDefaultHeatTimeout() throws Exception {
224 result = NodeTemplateOperation.getDefaultHeatTimeout();
239 public void testPrepareInstDeploymentArtifactPerInstance() throws Exception {
240 NodeTemplateOperation testSubject;
241 Map<String, ArtifactDataDefinition> deploymentArtifacts = null;
242 String componentInstanceId = "";
245 MapArtifactDataDefinition result;
248 testSubject = createTestSubject();
249 deploymentArtifacts = null;
250 result = testSubject.prepareInstDeploymentArtifactPerInstance(deploymentArtifacts, componentInstanceId, user,
252 Assert.assertEquals(null, result);
258 public void testCreateCapPropertyKey() throws Exception {
260 String instanceId = "";
264 result = NodeTemplateOperation.createCapPropertyKey(key, instanceId);
269 public void testPrepareCalculatedCapabiltyForNodeType() throws Exception {
270 NodeTemplateOperation testSubject;
271 Map<String, ListCapabilityDataDefinition> capabilities = null;
272 ComponentInstanceDataDefinition componentInstance = null;
273 MapListCapabiltyDataDefinition result;
276 testSubject = createTestSubject();
278 result = testSubject.prepareCalculatedCapabiltyForNodeType(capabilities, componentInstance);
279 Assert.assertEquals(null, result);
284 public void testPrepareCalculatedRequirementForNodeType() throws Exception {
285 NodeTemplateOperation testSubject;
286 Map<String, ListRequirementDataDefinition> requirements = null;
287 ComponentInstanceDataDefinition componentInstance = null;
288 MapListRequirementDataDefinition result;
291 testSubject = createTestSubject();
293 result = testSubject.prepareCalculatedRequirementForNodeType(requirements, componentInstance);
294 Assert.assertEquals(null, result);
299 public void testAddGroupInstancesToComponentInstance() throws Exception {
300 NodeTemplateOperation testSubject;
301 Component containerComponent = null;
302 ComponentInstanceDataDefinition componentInstance = null;
303 List<GroupDefinition> groups = null;
304 Map<String, List<ArtifactDefinition>> groupInstancesArtifacts = null;
305 StorageOperationStatus result;
308 testSubject = createTestSubject();
309 groupInstancesArtifacts = null;
310 result = testSubject.addGroupInstancesToComponentInstance(containerComponent, componentInstance, groups,
311 groupInstancesArtifacts);
312 Assert.assertEquals(StorageOperationStatus.OK, result);
316 public void testGenerateCustomizationUUIDOnInstanceGroup() throws Exception {
317 NodeTemplateOperation testSubject;
318 String componentId = "";
319 String instanceId = "";
320 List<String> groupInstances = null;
321 StorageOperationStatus result;
324 testSubject = createTestSubject();
325 groupInstances = null;
326 result = testSubject.generateCustomizationUUIDOnInstanceGroup(componentId, instanceId, groupInstances);
327 Assert.assertEquals(StorageOperationStatus.OK, result);