2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.model.operations.impl;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25 import java.io.BufferedOutputStream;
27 import java.io.FileOutputStream;
28 import java.io.OutputStream;
29 import java.util.ArrayList;
30 import java.util.HashMap;
31 import java.util.Iterator;
32 import java.util.List;
35 import org.apache.tinkerpop.gremlin.structure.io.IoCore;
36 import org.junit.After;
37 import org.junit.Before;
38 import org.junit.BeforeClass;
39 import org.junit.Rule;
40 import org.junit.Test;
41 import org.junit.rules.TestName;
42 import org.junit.runner.RunWith;
43 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
44 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
46 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
47 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
48 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
49 import org.openecomp.sdc.be.datatypes.elements.MapPropertiesDataDefinition;
50 import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
51 import org.openecomp.sdc.be.datatypes.elements.MapDataDefinition;
52 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
53 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
54 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
55 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
56 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
57 import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
58 import org.openecomp.sdc.be.model.LifecycleStateEnum;
59 import org.openecomp.sdc.be.model.ModelTestBase;
60 import org.openecomp.sdc.be.model.category.CategoryDefinition;
61 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
63 import org.openecomp.sdc.be.model.jsontitan.datamodel.NodeType;
64 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
65 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
66 import org.openecomp.sdc.be.model.jsontitan.operations.NodeTypeOperation;
67 import org.openecomp.sdc.be.model.jsontitan.operations.TopologyTemplateOperation;
68 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementLifecycleOperation;
69 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
70 import org.openecomp.sdc.common.util.ValidationUtils;
71 import org.springframework.test.context.ContextConfiguration;
72 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
74 import com.thinkaurelius.titan.core.TitanGraph;
75 import com.thinkaurelius.titan.core.TitanVertex;
77 import fj.data.Either;
79 @RunWith(SpringJUnit4ClassRunner.class)
80 @ContextConfiguration("classpath:application-context-test.xml")
81 public class ToscaElementLifecycleOperationTest extends ModelTestBase {
83 @javax.annotation.Resource
84 protected TitanDao titanDao;
86 @javax.annotation.Resource
87 private NodeTypeOperation nodeTypeOperation;
89 @javax.annotation.Resource
90 private TopologyTemplateOperation topologyTemplateOperation;
92 @javax.annotation.Resource
93 private ToscaElementLifecycleOperation lifecycleOperation;
95 String categoryName = "category";
96 String subcategory = "mycategory";
97 String outputDirectory = "C:\\Output";
100 public TestName name = new TestName();
103 public static void initLifecycleOperation() {
104 ModelTestBase.init();
107 private GraphVertex ownerVertex;
108 private GraphVertex modifierVertex;
109 private GraphVertex vfVertex;
110 private GraphVertex serviceVertex;
113 public void setupBefore() {
116 createResourceCategory();
117 createServiceCategory();
118 createRootNodeType();
119 createNodeType("firstVf");
120 createTopologyTemplate("firstService");
125 public void lifecycleTest() {
126 Either<ToscaElement, StorageOperationStatus> res = lifecycleOperation
127 .checkinToscaELement(LifecycleStateEnum.findState((String) vfVertex.getMetadataProperty(GraphPropertyEnum.STATE)),
128 vfVertex.getUniqueId(), modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
129 StorageOperationStatus status;
131 assertTrue(res.isLeft());
132 String id = res.left().value().getUniqueId();
134 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
135 assertTrue(res.isLeft());
136 id = res.left().value().getUniqueId();
138 PropertyDataDefinition prop55 = new PropertyDataDefinition();
139 prop55.setName("prop55");
140 prop55.setDefaultValue("def55");
142 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop55, JsonPresentationFields.NAME);
143 assertTrue(status == StorageOperationStatus.OK);
145 CapabilityDataDefinition cap1 = new CapabilityDataDefinition();
146 cap1.setName("cap1");
147 cap1.setDescription("create");
148 cap1.setUniqueId(UniqueIdBuilder.buildCapabilityUid(id, "cap1"));
150 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.CAPABILITIES, VertexTypeEnum.CAPABILTIES, cap1, JsonPresentationFields.NAME);
151 assertTrue(status == StorageOperationStatus.OK);
153 res = lifecycleOperation.checkinToscaELement(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
154 assertTrue(res.isLeft());
155 id = res.left().value().getUniqueId();
157 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
158 assertTrue(res.isLeft());
159 id = res.left().value().getUniqueId();
161 prop55.setDefaultValue("AAAAAAAA");
162 status = nodeTypeOperation.updateToscaDataOfToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop55, JsonPresentationFields.NAME);
163 assertTrue(status == StorageOperationStatus.OK);
165 cap1.setDescription("update");
167 status = nodeTypeOperation.updateToscaDataOfToscaElement(id, EdgeLabelEnum.CAPABILITIES, VertexTypeEnum.CAPABILTIES, cap1, JsonPresentationFields.NAME);
168 assertTrue(status == StorageOperationStatus.OK);
170 PropertyDataDefinition prop66 = new PropertyDataDefinition();
171 prop66.setName("prop66");
172 prop66.setDefaultValue("def66");
174 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop66, JsonPresentationFields.NAME);
175 assertTrue(status == StorageOperationStatus.OK);
177 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
178 assertTrue(res.isLeft());
179 id = res.left().value().getUniqueId();
181 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
182 assertTrue(res.isLeft());
183 id = res.left().value().getUniqueId();
185 res = lifecycleOperation.certifyToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
186 assertTrue(res.isLeft());
187 id = res.left().value().getUniqueId();
189 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
190 assertTrue(res.isLeft());
191 id = res.left().value().getUniqueId();
193 PropertyDataDefinition prop77 = new PropertyDataDefinition();
194 prop77.setName("prop77");
195 prop77.setDefaultValue("def77");
197 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop77, JsonPresentationFields.NAME);
198 assertTrue(status == StorageOperationStatus.OK);
200 res = lifecycleOperation.checkinToscaELement(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
201 assertTrue(res.isLeft());
202 id = res.left().value().getUniqueId();
204 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
205 assertTrue(res.isLeft());
206 id = res.left().value().getUniqueId();
208 PropertyDataDefinition prop88 = new PropertyDataDefinition();
209 prop88.setName("prop88");
210 prop88.setDefaultValue("def88");
212 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop88, JsonPresentationFields.NAME);
213 assertTrue(status == StorageOperationStatus.OK);
215 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
216 assertTrue(res.isLeft());
217 id = res.left().value().getUniqueId();
219 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
220 assertTrue(res.isLeft());
221 id = res.left().value().getUniqueId();
223 res = lifecycleOperation.certifyToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
224 assertTrue(res.isLeft());
225 id = res.left().value().getUniqueId();
227 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
228 assertTrue(res.isLeft());
229 id = res.left().value().getUniqueId();
231 PropertyDataDefinition prop99 = new PropertyDataDefinition();
232 prop99.setName("prop99");
233 prop99.setDefaultValue("def99");
235 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop99, JsonPresentationFields.NAME);
236 assertTrue(status == StorageOperationStatus.OK);
238 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
239 assertTrue(res.isLeft());
240 id = res.left().value().getUniqueId();
242 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
243 assertTrue(res.isLeft());
244 id = res.left().value().getUniqueId();
246 status = nodeTypeOperation.deleteToscaDataElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, "prop99", JsonPresentationFields.NAME);
247 assertTrue(status == StorageOperationStatus.OK);
249 //cancel certification
250 res = lifecycleOperation.cancelOrFailCertification(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId(), LifecycleStateEnum.READY_FOR_CERTIFICATION);
251 assertTrue(res.isLeft());
252 id = res.left().value().getUniqueId();
254 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
255 assertTrue(res.isLeft());
256 id = res.left().value().getUniqueId();
259 res = lifecycleOperation.cancelOrFailCertification(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
260 assertTrue(res.isLeft());
261 id = res.left().value().getUniqueId();
263 //exportGraphMl(titanDao.getGraph().left().value());
268 public void serviceConformanceLevelTest() {
269 Either<ToscaElement, StorageOperationStatus> res = lifecycleOperation
270 .checkinToscaELement(LifecycleStateEnum.findState((String) serviceVertex.getMetadataProperty(GraphPropertyEnum.STATE)),
271 serviceVertex.getUniqueId(), modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
273 assertTrue(res.isLeft());
274 String id = res.left().value().getUniqueId();
276 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
277 assertTrue(res.isLeft());
279 String conformanceLevel = res.left().value().getMetadataValue(JsonPresentationFields.CONFORMANCE_LEVEL).toString();
280 assertEquals(conformanceLevel, ModelTestBase.configurationManager.getConfiguration().getToscaConformanceLevel());
283 private void createResourceCategory() {
285 GraphVertex cat = new GraphVertex(VertexTypeEnum.RESOURCE_CATEGORY);
286 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
287 String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.RESOURCE_CATEGORY);
288 cat.setUniqueId(catId);
289 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,catId);
290 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_CATEGORY.getName());
291 metadataProperties.put(GraphPropertyEnum.NAME,categoryName);
292 metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
293 cat.setMetadataProperties(metadataProperties);
294 cat.updateMetadataJsonWithCurrentMetadataProperties();
296 GraphVertex subCat = new GraphVertex(VertexTypeEnum.RESOURCE_SUBCATEGORY);
297 metadataProperties = new HashMap<>();
298 String subCatId = UniqueIdBuilder.buildSubCategoryUid(cat.getUniqueId(), subcategory);
299 subCat.setUniqueId(subCatId);
300 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,subCatId);
301 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_SUBCATEGORY.getName());
302 metadataProperties.put(GraphPropertyEnum.NAME,subcategory);
303 subCat.setMetadataProperties(metadataProperties);
304 subCat.updateMetadataJsonWithCurrentMetadataProperties();
306 Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
308 Either<GraphVertex, TitanOperationStatus> subCatRes = titanDao.createVertex(subCat);
310 TitanOperationStatus status = titanDao.createEdge(catRes.left().value().getVertex(), subCatRes.left().value().getVertex(), EdgeLabelEnum.SUB_CATEGORY, new HashMap<>());
311 assertEquals(TitanOperationStatus.OK, status);
314 private void createServiceCategory() {
316 GraphVertex cat = new GraphVertex(VertexTypeEnum.SERVICE_CATEGORY);
317 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
318 String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.SERVICE_CATEGORY);
319 cat.setUniqueId(catId);
320 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,catId);
321 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.SERVICE_CATEGORY.getName());
322 metadataProperties.put(GraphPropertyEnum.NAME,categoryName);
323 metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
324 cat.setMetadataProperties(metadataProperties);
325 cat.updateMetadataJsonWithCurrentMetadataProperties();
327 Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
329 assertTrue(catRes.isLeft());
332 private TopologyTemplate createTopologyTemplate(String name) {
334 TopologyTemplate service = new TopologyTemplate();
335 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
336 service.setUniqueId(uniqueId);
337 service.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
338 service.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), name);
339 service.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
340 service.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
341 service.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VF.name());
342 service.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(),ComponentTypeEnum.RESOURCE);
343 List<CategoryDefinition> categories = new ArrayList<>();
344 CategoryDefinition cat = new CategoryDefinition();
346 cat.setName(categoryName);
347 service.setCategories(categories);
349 service.setComponentType(ComponentTypeEnum.SERVICE);
350 Either<TopologyTemplate, StorageOperationStatus> createRes = topologyTemplateOperation.createTopologyTemplate(service);
351 assertTrue(createRes.isLeft());
353 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createRes.left().value().getUniqueId());
354 assertTrue(getNodeTyeRes.isLeft());
356 serviceVertex = getNodeTyeRes.left().value();
361 private <T extends ToscaDataDefinition> NodeType createNodeType(String nodeTypeName) {
363 NodeType vf = new NodeType();
364 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
365 vf.setUniqueId(uniqueId);
366 vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
367 vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), nodeTypeName);
368 vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
369 vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
370 vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VF.name());
371 vf.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(),ComponentTypeEnum.RESOURCE);
372 List<CategoryDefinition> categories = new ArrayList<>();
373 CategoryDefinition cat = new CategoryDefinition();
375 cat.setName(categoryName);
376 List<SubCategoryDefinition> subCategories = new ArrayList<>();
377 SubCategoryDefinition subCat = new SubCategoryDefinition();
378 subCat.setName(subcategory);
379 subCategories.add(subCat);
380 cat.setSubcategories(subCategories);
381 vf.setCategories(categories);
384 List<String> derivedFrom = new ArrayList<>();
385 derivedFrom.add("root");
386 vf.setDerivedFrom(derivedFrom);
388 // Map<String, PropertyDataDefinition> properties = new HashMap<>();
389 // PropertyDataDefinition prop1 = new PropertyDataDefinition();
390 // prop1.setName("prop1");
391 // prop1.setDefaultValue("def1");
393 // properties.put("prop1", prop1);
395 // PropertyDataDefinition prop2 = new PropertyDataDefinition();
396 // prop2.setName("prop2");
397 // prop2.setDefaultValue("def2");
398 // properties.put("prop2", prop2);
400 // PropertyDataDefinition prop3 = new PropertyDataDefinition();
401 // prop3.setName("prop3");
402 // prop3.setDefaultValue("def3");
403 // properties.put("prop3", prop3);
405 // vf.setProperties(properties);
406 vf.setComponentType(ComponentTypeEnum.RESOURCE);
407 Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
408 assertTrue(createVFRes.isLeft());
410 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createVFRes.left().value().getUniqueId());
411 assertTrue(getNodeTyeRes.isLeft());
413 vfVertex = getNodeTyeRes.left().value();
417 List<PropertyDataDefinition> addProperties = new ArrayList<>();
418 PropertyDataDefinition prop11 = new PropertyDataDefinition();
419 prop11.setName("prop11");
420 prop11.setDefaultValue("def11");
422 addProperties.add(prop11);
424 PropertyDataDefinition prop22 = new PropertyDataDefinition();
425 prop22.setName("prop22");
426 prop22.setDefaultValue("def22");
427 addProperties.add(prop22);
429 StorageOperationStatus status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, addProperties, JsonPresentationFields.NAME);
430 assertTrue(status == StorageOperationStatus.OK);
432 PropertyDataDefinition prop33 = new PropertyDataDefinition();
433 prop33.setName("prop33");
434 prop33.setDefaultValue("def33");
436 status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop33, JsonPresentationFields.NAME);
437 assertTrue(status == StorageOperationStatus.OK);
439 PropertyDataDefinition prop44 = new PropertyDataDefinition();
440 prop44.setName("prop44");
441 prop44.setDefaultValue("def44");
443 status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex.getUniqueId(), EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop44, JsonPresentationFields.NAME);
444 assertTrue(status == StorageOperationStatus.OK);
447 PropertyDataDefinition capProp = new PropertyDataDefinition();
448 capProp.setName( "capProp");
449 capProp.setDefaultValue( "capPropDef");
451 MapDataDefinition dataToCreate = new MapPropertiesDataDefinition();
452 dataToCreate.put("capProp", capProp);
454 Map<String, MapDataDefinition> capProps = new HashMap();
455 capProps.put("capName", dataToCreate);
457 Either<GraphVertex, StorageOperationStatus> res = nodeTypeOperation.assosiateElementToData(vfVertex, VertexTypeEnum.CAPABILITIES_PROPERTIES, EdgeLabelEnum.CAPABILITIES_PROPERTIES, capProps);
459 // exportGraphMl(titanDao.getGraph().left().value());
461 List<String> pathKeys = new ArrayList<>();
462 pathKeys.add("capName");
463 capProp.setDefaultValue( "BBBB");
464 status = nodeTypeOperation.updateToscaDataDeepElementOfToscaElement(vfVertex, EdgeLabelEnum.CAPABILITIES_PROPERTIES, VertexTypeEnum.CAPABILITIES_PROPERTIES,
465 capProp, pathKeys, JsonPresentationFields.NAME);
469 private void createRootNodeType() {
471 NodeType vf = new NodeType();
472 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
473 vf.setUniqueId(uniqueId);
474 vf.setComponentType(ComponentTypeEnum.RESOURCE);
475 vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
476 vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), "root");
477 vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
478 vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "1.0");
479 vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VFC.name());
480 vf.getMetadata().put(JsonPresentationFields.LIFECYCLE_STATE.getPresentation(), LifecycleStateEnum.CERTIFIED.name());
481 vf.getMetadata().put(JsonPresentationFields.TOSCA_RESOURCE_NAME.getPresentation(), "root");
482 vf.getMetadata().put(JsonPresentationFields.HIGHEST_VERSION.getPresentation(), true);
484 List<CategoryDefinition> categories = new ArrayList<>();
485 CategoryDefinition cat = new CategoryDefinition();
487 cat.setName(categoryName);
488 List<SubCategoryDefinition> subCategories = new ArrayList<>();
489 SubCategoryDefinition subCat = new SubCategoryDefinition();
490 subCat.setName(subcategory);
491 subCategories.add(subCat);
492 cat.setSubcategories(subCategories);
493 vf.setCategories(categories);
496 List<String> derivedFrom = new ArrayList<>();
497 vf.setDerivedFrom(derivedFrom);
499 Map<String, PropertyDataDefinition> properties = new HashMap<>();
500 PropertyDataDefinition prop1 = new PropertyDataDefinition();
501 prop1.setName("derived1");
502 prop1.setDefaultValue("deriveddef1");
504 properties.put("derived1", prop1);
506 PropertyDataDefinition prop2 = new PropertyDataDefinition();
507 prop2.setUniqueId("derived2");
508 prop2.setName("deriveddef2");
509 properties.put("derived2", prop2);
511 PropertyDataDefinition prop3 = new PropertyDataDefinition();
512 prop3.setName("derived3");
513 prop3.setDefaultValue("deriveddef3");
514 properties.put("derived3", prop3);
516 vf.setProperties(properties);
517 vf.setComponentType(ComponentTypeEnum.RESOURCE);
518 Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
519 assertTrue(createVFRes.isLeft());
521 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createVFRes.left().value().getUniqueId());
522 assertTrue(getNodeTyeRes.isLeft());
525 private void createUsers() {
527 GraphVertex ownerV = new GraphVertex(VertexTypeEnum.USER);
528 ownerV.setUniqueId("user1");
530 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
531 metadataProperties.put(GraphPropertyEnum.USERID, ownerV.getUniqueId());
532 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
533 metadataProperties.put(GraphPropertyEnum.NAME, "user1");
534 ownerV.setMetadataProperties(metadataProperties);
535 ownerV.updateMetadataJsonWithCurrentMetadataProperties();
536 ownerV.setJson(new HashMap<>());
537 Either<GraphVertex, TitanOperationStatus> createUserRes = titanDao.createVertex(ownerV);
538 assertTrue(createUserRes.isLeft());
540 ownerVertex = createUserRes.left().value();
542 GraphVertex modifierV = new GraphVertex(VertexTypeEnum.USER);
543 modifierV.setUniqueId("user2");
545 metadataProperties = new HashMap<>();
546 metadataProperties.put(GraphPropertyEnum.USERID, modifierV.getUniqueId());
547 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
548 metadataProperties.put(GraphPropertyEnum.NAME, "user2");
549 modifierV.setMetadataProperties(metadataProperties);
550 modifierV.updateMetadataJsonWithCurrentMetadataProperties();
551 modifierV.setJson(new HashMap<>());
552 createUserRes = titanDao.createVertex(modifierV);
553 assertTrue(createUserRes.isLeft());
555 modifierVertex = createUserRes.left().value();
557 Either<GraphVertex, TitanOperationStatus> getOwnerRes = lifecycleOperation.findUser(ownerVertex.getUniqueId());
558 assertTrue(getOwnerRes.isLeft());
563 public void teardown() {
567 private void clearGraph() {
568 Either<TitanGraph, TitanOperationStatus> graphResult = titanDao.getGraph();
569 TitanGraph graph = graphResult.left().value();
571 Iterable<TitanVertex> vertices = graph.query().vertices();
572 if (vertices != null) {
573 Iterator<TitanVertex> iterator = vertices.iterator();
574 while (iterator.hasNext()) {
575 TitanVertex vertex = iterator.next();
582 private String exportGraphMl(TitanGraph graph) {
583 String result = null;
584 String outputFile = outputDirectory + File.separator + "exportGraph." + System.currentTimeMillis() + ".graphml";
586 try (final OutputStream os = new BufferedOutputStream(new FileOutputStream(outputFile))) {
587 graph.io(IoCore.graphml()).writer().normalize(true).create().writeGraph(os, graph);
591 } catch (Exception e) {
592 graph.tx().rollback();