1 package org.openecomp.sdc.be.model.operations.impl;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5 import java.io.BufferedOutputStream;
7 import java.io.FileOutputStream;
8 import java.io.OutputStream;
9 import java.util.ArrayList;
10 import java.util.HashMap;
11 import java.util.Iterator;
12 import java.util.List;
15 import org.apache.tinkerpop.gremlin.structure.io.IoCore;
16 import org.junit.After;
17 import org.junit.Before;
18 import org.junit.BeforeClass;
19 import org.junit.Rule;
20 import org.junit.Test;
21 import org.junit.rules.TestName;
22 import org.junit.runner.RunWith;
23 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
24 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
26 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
27 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
28 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
29 import org.openecomp.sdc.be.datatypes.elements.MapPropertiesDataDefinition;
30 import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
31 import org.openecomp.sdc.be.datatypes.elements.MapDataDefinition;
32 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
33 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
34 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
35 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
36 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
37 import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
38 import org.openecomp.sdc.be.model.LifecycleStateEnum;
39 import org.openecomp.sdc.be.model.ModelTestBase;
40 import org.openecomp.sdc.be.model.category.CategoryDefinition;
41 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
43 import org.openecomp.sdc.be.model.jsontitan.datamodel.NodeType;
44 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
45 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
46 import org.openecomp.sdc.be.model.jsontitan.operations.NodeTypeOperation;
47 import org.openecomp.sdc.be.model.jsontitan.operations.TopologyTemplateOperation;
48 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementLifecycleOperation;
49 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
50 import org.openecomp.sdc.common.util.ValidationUtils;
51 import org.springframework.test.context.ContextConfiguration;
52 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
54 import com.thinkaurelius.titan.core.TitanGraph;
55 import com.thinkaurelius.titan.core.TitanVertex;
57 import fj.data.Either;
59 @RunWith(SpringJUnit4ClassRunner.class)
60 @ContextConfiguration("classpath:application-context-test.xml")
61 public class ToscaElementLifecycleOperationTest extends ModelTestBase {
63 @javax.annotation.Resource
64 protected TitanDao titanDao;
66 @javax.annotation.Resource
67 private NodeTypeOperation nodeTypeOperation;
69 @javax.annotation.Resource
70 private TopologyTemplateOperation topologyTemplateOperation;
72 @javax.annotation.Resource
73 private ToscaElementLifecycleOperation lifecycleOperation;
75 String categoryName = "category";
76 String subcategory = "mycategory";
77 String outputDirectory = "C:\\Output";
80 public TestName name = new TestName();
83 public static void initLifecycleOperation() {
87 private GraphVertex ownerVertex;
88 private GraphVertex modifierVertex;
89 private GraphVertex vfVertex;
90 private GraphVertex serviceVertex;
93 public void setupBefore() {
96 createResourceCategory();
97 createServiceCategory();
99 createNodeType("firstVf");
100 createTopologyTemplate("firstService");
105 public void lifecycleTest() {
106 Either<ToscaElement, StorageOperationStatus> res = lifecycleOperation
107 .checkinToscaELement(LifecycleStateEnum.findState((String) vfVertex.getMetadataProperty(GraphPropertyEnum.STATE)),
108 vfVertex.getUniqueId(), modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
109 StorageOperationStatus status;
111 assertTrue(res.isLeft());
112 String id = res.left().value().getUniqueId();
114 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
115 assertTrue(res.isLeft());
116 id = res.left().value().getUniqueId();
118 PropertyDataDefinition prop55 = new PropertyDataDefinition();
119 prop55.setName("prop55");
120 prop55.setDefaultValue("def55");
122 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop55, JsonPresentationFields.NAME);
123 assertTrue(status == StorageOperationStatus.OK);
125 CapabilityDataDefinition cap1 = new CapabilityDataDefinition();
126 cap1.setName("cap1");
127 cap1.setDescription("create");
128 cap1.setUniqueId(UniqueIdBuilder.buildCapabilityUid(id, "cap1"));
130 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.CAPABILITIES, VertexTypeEnum.CAPABILTIES, cap1, JsonPresentationFields.NAME);
131 assertTrue(status == StorageOperationStatus.OK);
133 res = lifecycleOperation.checkinToscaELement(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
134 assertTrue(res.isLeft());
135 id = res.left().value().getUniqueId();
137 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
138 assertTrue(res.isLeft());
139 id = res.left().value().getUniqueId();
141 prop55.setDefaultValue("AAAAAAAA");
142 status = nodeTypeOperation.updateToscaDataOfToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop55, JsonPresentationFields.NAME);
143 assertTrue(status == StorageOperationStatus.OK);
145 cap1.setDescription("update");
147 status = nodeTypeOperation.updateToscaDataOfToscaElement(id, EdgeLabelEnum.CAPABILITIES, VertexTypeEnum.CAPABILTIES, cap1, JsonPresentationFields.NAME);
148 assertTrue(status == StorageOperationStatus.OK);
150 PropertyDataDefinition prop66 = new PropertyDataDefinition();
151 prop66.setName("prop66");
152 prop66.setDefaultValue("def66");
154 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop66, JsonPresentationFields.NAME);
155 assertTrue(status == StorageOperationStatus.OK);
157 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
158 assertTrue(res.isLeft());
159 id = res.left().value().getUniqueId();
161 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
162 assertTrue(res.isLeft());
163 id = res.left().value().getUniqueId();
165 res = lifecycleOperation.certifyToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
166 assertTrue(res.isLeft());
167 id = res.left().value().getUniqueId();
169 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
170 assertTrue(res.isLeft());
171 id = res.left().value().getUniqueId();
173 PropertyDataDefinition prop77 = new PropertyDataDefinition();
174 prop77.setName("prop77");
175 prop77.setDefaultValue("def77");
177 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop77, JsonPresentationFields.NAME);
178 assertTrue(status == StorageOperationStatus.OK);
180 res = lifecycleOperation.checkinToscaELement(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
181 assertTrue(res.isLeft());
182 id = res.left().value().getUniqueId();
184 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
185 assertTrue(res.isLeft());
186 id = res.left().value().getUniqueId();
188 PropertyDataDefinition prop88 = new PropertyDataDefinition();
189 prop88.setName("prop88");
190 prop88.setDefaultValue("def88");
192 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop88, JsonPresentationFields.NAME);
193 assertTrue(status == StorageOperationStatus.OK);
195 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
196 assertTrue(res.isLeft());
197 id = res.left().value().getUniqueId();
199 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
200 assertTrue(res.isLeft());
201 id = res.left().value().getUniqueId();
203 res = lifecycleOperation.certifyToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
204 assertTrue(res.isLeft());
205 id = res.left().value().getUniqueId();
207 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
208 assertTrue(res.isLeft());
209 id = res.left().value().getUniqueId();
211 PropertyDataDefinition prop99 = new PropertyDataDefinition();
212 prop99.setName("prop99");
213 prop99.setDefaultValue("def99");
215 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop99, JsonPresentationFields.NAME);
216 assertTrue(status == StorageOperationStatus.OK);
218 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
219 assertTrue(res.isLeft());
220 id = res.left().value().getUniqueId();
222 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
223 assertTrue(res.isLeft());
224 id = res.left().value().getUniqueId();
226 status = nodeTypeOperation.deleteToscaDataElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, "prop99", JsonPresentationFields.NAME);
227 assertTrue(status == StorageOperationStatus.OK);
229 //cancel certification
230 res = lifecycleOperation.cancelOrFailCertification(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId(), LifecycleStateEnum.READY_FOR_CERTIFICATION);
231 assertTrue(res.isLeft());
232 id = res.left().value().getUniqueId();
234 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
235 assertTrue(res.isLeft());
236 id = res.left().value().getUniqueId();
239 res = lifecycleOperation.cancelOrFailCertification(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
240 assertTrue(res.isLeft());
241 id = res.left().value().getUniqueId();
243 //exportGraphMl(titanDao.getGraph().left().value());
248 public void serviceConformanceLevelTest() {
249 Either<ToscaElement, StorageOperationStatus> res = lifecycleOperation
250 .checkinToscaELement(LifecycleStateEnum.findState((String) serviceVertex.getMetadataProperty(GraphPropertyEnum.STATE)),
251 serviceVertex.getUniqueId(), modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
253 assertTrue(res.isLeft());
254 String id = res.left().value().getUniqueId();
256 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
257 assertTrue(res.isLeft());
259 String conformanceLevel = res.left().value().getMetadataValue(JsonPresentationFields.CONFORMANCE_LEVEL).toString();
260 assertEquals(conformanceLevel, ModelTestBase.configurationManager.getConfiguration().getToscaConformanceLevel());
263 private void createResourceCategory() {
265 GraphVertex cat = new GraphVertex(VertexTypeEnum.RESOURCE_CATEGORY);
266 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
267 String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.RESOURCE_CATEGORY);
268 cat.setUniqueId(catId);
269 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,catId);
270 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_CATEGORY.getName());
271 metadataProperties.put(GraphPropertyEnum.NAME,categoryName);
272 metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
273 cat.setMetadataProperties(metadataProperties);
274 cat.updateMetadataJsonWithCurrentMetadataProperties();
276 GraphVertex subCat = new GraphVertex(VertexTypeEnum.RESOURCE_SUBCATEGORY);
277 metadataProperties = new HashMap<>();
278 String subCatId = UniqueIdBuilder.buildSubCategoryUid(cat.getUniqueId(), subcategory);
279 subCat.setUniqueId(subCatId);
280 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,subCatId);
281 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_SUBCATEGORY.getName());
282 metadataProperties.put(GraphPropertyEnum.NAME,subcategory);
283 subCat.setMetadataProperties(metadataProperties);
284 subCat.updateMetadataJsonWithCurrentMetadataProperties();
286 Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
288 Either<GraphVertex, TitanOperationStatus> subCatRes = titanDao.createVertex(subCat);
290 TitanOperationStatus status = titanDao.createEdge(catRes.left().value().getVertex(), subCatRes.left().value().getVertex(), EdgeLabelEnum.SUB_CATEGORY, new HashMap<>());
291 assertEquals(TitanOperationStatus.OK, status);
294 private void createServiceCategory() {
296 GraphVertex cat = new GraphVertex(VertexTypeEnum.SERVICE_CATEGORY);
297 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
298 String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.SERVICE_CATEGORY);
299 cat.setUniqueId(catId);
300 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,catId);
301 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.SERVICE_CATEGORY.getName());
302 metadataProperties.put(GraphPropertyEnum.NAME,categoryName);
303 metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
304 cat.setMetadataProperties(metadataProperties);
305 cat.updateMetadataJsonWithCurrentMetadataProperties();
307 Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
309 assertTrue(catRes.isLeft());
312 private TopologyTemplate createTopologyTemplate(String name) {
314 TopologyTemplate service = new TopologyTemplate();
315 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
316 service.setUniqueId(uniqueId);
317 service.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
318 service.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), name);
319 service.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
320 service.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
321 service.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VF.name());
322 service.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(),ComponentTypeEnum.RESOURCE);
323 List<CategoryDefinition> categories = new ArrayList<>();
324 CategoryDefinition cat = new CategoryDefinition();
326 cat.setName(categoryName);
327 service.setCategories(categories);
329 service.setComponentType(ComponentTypeEnum.SERVICE);
330 Either<TopologyTemplate, StorageOperationStatus> createRes = topologyTemplateOperation.createTopologyTemplate(service);
331 assertTrue(createRes.isLeft());
333 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createRes.left().value().getUniqueId());
334 assertTrue(getNodeTyeRes.isLeft());
336 serviceVertex = getNodeTyeRes.left().value();
341 private <T extends ToscaDataDefinition> NodeType createNodeType(String nodeTypeName) {
343 NodeType vf = new NodeType();
344 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
345 vf.setUniqueId(uniqueId);
346 vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
347 vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), nodeTypeName);
348 vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
349 vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
350 vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VF.name());
351 vf.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(),ComponentTypeEnum.RESOURCE);
352 List<CategoryDefinition> categories = new ArrayList<>();
353 CategoryDefinition cat = new CategoryDefinition();
355 cat.setName(categoryName);
356 List<SubCategoryDefinition> subCategories = new ArrayList<>();
357 SubCategoryDefinition subCat = new SubCategoryDefinition();
358 subCat.setName(subcategory);
359 subCategories.add(subCat);
360 cat.setSubcategories(subCategories);
361 vf.setCategories(categories);
364 List<String> derivedFrom = new ArrayList<>();
365 derivedFrom.add("root");
366 vf.setDerivedFrom(derivedFrom);
368 // Map<String, PropertyDataDefinition> properties = new HashMap<>();
369 // PropertyDataDefinition prop1 = new PropertyDataDefinition();
370 // prop1.setName("prop1");
371 // prop1.setDefaultValue("def1");
373 // properties.put("prop1", prop1);
375 // PropertyDataDefinition prop2 = new PropertyDataDefinition();
376 // prop2.setName("prop2");
377 // prop2.setDefaultValue("def2");
378 // properties.put("prop2", prop2);
380 // PropertyDataDefinition prop3 = new PropertyDataDefinition();
381 // prop3.setName("prop3");
382 // prop3.setDefaultValue("def3");
383 // properties.put("prop3", prop3);
385 // vf.setProperties(properties);
386 vf.setComponentType(ComponentTypeEnum.RESOURCE);
387 Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
388 assertTrue(createVFRes.isLeft());
390 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createVFRes.left().value().getUniqueId());
391 assertTrue(getNodeTyeRes.isLeft());
393 vfVertex = getNodeTyeRes.left().value();
397 List<PropertyDataDefinition> addProperties = new ArrayList<>();
398 PropertyDataDefinition prop11 = new PropertyDataDefinition();
399 prop11.setName("prop11");
400 prop11.setDefaultValue("def11");
402 addProperties.add(prop11);
404 PropertyDataDefinition prop22 = new PropertyDataDefinition();
405 prop22.setName("prop22");
406 prop22.setDefaultValue("def22");
407 addProperties.add(prop22);
409 StorageOperationStatus status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, addProperties, JsonPresentationFields.NAME);
410 assertTrue(status == StorageOperationStatus.OK);
412 PropertyDataDefinition prop33 = new PropertyDataDefinition();
413 prop33.setName("prop33");
414 prop33.setDefaultValue("def33");
416 status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop33, JsonPresentationFields.NAME);
417 assertTrue(status == StorageOperationStatus.OK);
419 PropertyDataDefinition prop44 = new PropertyDataDefinition();
420 prop44.setName("prop44");
421 prop44.setDefaultValue("def44");
423 status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex.getUniqueId(), EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop44, JsonPresentationFields.NAME);
424 assertTrue(status == StorageOperationStatus.OK);
427 PropertyDataDefinition capProp = new PropertyDataDefinition();
428 capProp.setName( "capProp");
429 capProp.setDefaultValue( "capPropDef");
431 MapDataDefinition dataToCreate = new MapPropertiesDataDefinition();
432 dataToCreate.put("capProp", capProp);
434 Map<String, MapDataDefinition> capProps = new HashMap();
435 capProps.put("capName", dataToCreate);
437 Either<GraphVertex, StorageOperationStatus> res = nodeTypeOperation.assosiateElementToData(vfVertex, VertexTypeEnum.CAPABILITIES_PROPERTIES, EdgeLabelEnum.CAPABILITIES_PROPERTIES, capProps);
439 // exportGraphMl(titanDao.getGraph().left().value());
441 List<String> pathKeys = new ArrayList<>();
442 pathKeys.add("capName");
443 capProp.setDefaultValue( "BBBB");
444 status = nodeTypeOperation.updateToscaDataDeepElementOfToscaElement(vfVertex, EdgeLabelEnum.CAPABILITIES_PROPERTIES, VertexTypeEnum.CAPABILITIES_PROPERTIES,
445 capProp, pathKeys, JsonPresentationFields.NAME);
449 private void createRootNodeType() {
451 NodeType vf = new NodeType();
452 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
453 vf.setUniqueId(uniqueId);
454 vf.setComponentType(ComponentTypeEnum.RESOURCE);
455 vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
456 vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), "root");
457 vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
458 vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "1.0");
459 vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VFC.name());
460 vf.getMetadata().put(JsonPresentationFields.LIFECYCLE_STATE.getPresentation(), LifecycleStateEnum.CERTIFIED.name());
461 vf.getMetadata().put(JsonPresentationFields.TOSCA_RESOURCE_NAME.getPresentation(), "root");
462 vf.getMetadata().put(JsonPresentationFields.HIGHEST_VERSION.getPresentation(), true);
464 List<CategoryDefinition> categories = new ArrayList<>();
465 CategoryDefinition cat = new CategoryDefinition();
467 cat.setName(categoryName);
468 List<SubCategoryDefinition> subCategories = new ArrayList<>();
469 SubCategoryDefinition subCat = new SubCategoryDefinition();
470 subCat.setName(subcategory);
471 subCategories.add(subCat);
472 cat.setSubcategories(subCategories);
473 vf.setCategories(categories);
476 List<String> derivedFrom = new ArrayList<>();
477 vf.setDerivedFrom(derivedFrom);
479 Map<String, PropertyDataDefinition> properties = new HashMap<>();
480 PropertyDataDefinition prop1 = new PropertyDataDefinition();
481 prop1.setName("derived1");
482 prop1.setDefaultValue("deriveddef1");
484 properties.put("derived1", prop1);
486 PropertyDataDefinition prop2 = new PropertyDataDefinition();
487 prop2.setUniqueId("derived2");
488 prop2.setName("deriveddef2");
489 properties.put("derived2", prop2);
491 PropertyDataDefinition prop3 = new PropertyDataDefinition();
492 prop3.setName("derived3");
493 prop3.setDefaultValue("deriveddef3");
494 properties.put("derived3", prop3);
496 vf.setProperties(properties);
497 vf.setComponentType(ComponentTypeEnum.RESOURCE);
498 Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
499 assertTrue(createVFRes.isLeft());
501 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createVFRes.left().value().getUniqueId());
502 assertTrue(getNodeTyeRes.isLeft());
505 private void createUsers() {
507 GraphVertex ownerV = new GraphVertex(VertexTypeEnum.USER);
508 ownerV.setUniqueId("user1");
510 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
511 metadataProperties.put(GraphPropertyEnum.USERID, ownerV.getUniqueId());
512 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
513 metadataProperties.put(GraphPropertyEnum.NAME, "user1");
514 ownerV.setMetadataProperties(metadataProperties);
515 ownerV.updateMetadataJsonWithCurrentMetadataProperties();
516 ownerV.setJson(new HashMap<>());
517 Either<GraphVertex, TitanOperationStatus> createUserRes = titanDao.createVertex(ownerV);
518 assertTrue(createUserRes.isLeft());
520 ownerVertex = createUserRes.left().value();
522 GraphVertex modifierV = new GraphVertex(VertexTypeEnum.USER);
523 modifierV.setUniqueId("user2");
525 metadataProperties = new HashMap<>();
526 metadataProperties.put(GraphPropertyEnum.USERID, modifierV.getUniqueId());
527 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
528 metadataProperties.put(GraphPropertyEnum.NAME, "user2");
529 modifierV.setMetadataProperties(metadataProperties);
530 modifierV.updateMetadataJsonWithCurrentMetadataProperties();
531 modifierV.setJson(new HashMap<>());
532 createUserRes = titanDao.createVertex(modifierV);
533 assertTrue(createUserRes.isLeft());
535 modifierVertex = createUserRes.left().value();
537 Either<GraphVertex, TitanOperationStatus> getOwnerRes = lifecycleOperation.findUser(ownerVertex.getUniqueId());
538 assertTrue(getOwnerRes.isLeft());
543 public void teardown() {
547 private void clearGraph() {
548 Either<TitanGraph, TitanOperationStatus> graphResult = titanDao.getGraph();
549 TitanGraph graph = graphResult.left().value();
551 Iterable<TitanVertex> vertices = graph.query().vertices();
552 if (vertices != null) {
553 Iterator<TitanVertex> iterator = vertices.iterator();
554 while (iterator.hasNext()) {
555 TitanVertex vertex = iterator.next();
562 private String exportGraphMl(TitanGraph graph) {
563 String result = null;
564 String outputFile = outputDirectory + File.separator + "exportGraph." + System.currentTimeMillis() + ".graphml";
566 try (final OutputStream os = new BufferedOutputStream(new FileOutputStream(outputFile))) {
567 graph.io(IoCore.graphml()).writer().normalize(true).create().writeGraph(os, graph);
571 } catch (Exception e) {
572 graph.tx().rollback();