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;
26 import java.io.BufferedOutputStream;
28 import java.io.FileOutputStream;
29 import java.io.OutputStream;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.Iterator;
33 import java.util.List;
36 import org.apache.tinkerpop.gremlin.structure.io.IoCore;
37 import org.junit.After;
38 import org.junit.Before;
39 import org.junit.BeforeClass;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.rules.TestName;
43 import org.junit.runner.RunWith;
44 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
45 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.CapabilityDataDefinition;
50 import org.openecomp.sdc.be.datatypes.elements.MapDataDefinition;
51 import org.openecomp.sdc.be.datatypes.elements.MapPropertiesDataDefinition;
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;
62 import org.openecomp.sdc.be.model.jsontitan.datamodel.NodeType;
63 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
64 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
65 import org.openecomp.sdc.be.model.jsontitan.operations.NodeTypeOperation;
66 import org.openecomp.sdc.be.model.jsontitan.operations.TopologyTemplateOperation;
67 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementLifecycleOperation;
68 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
69 import org.openecomp.sdc.common.util.ValidationUtils;
70 import org.springframework.test.context.ContextConfiguration;
71 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
73 import com.thinkaurelius.titan.core.TitanGraph;
74 import com.thinkaurelius.titan.core.TitanVertex;
76 import fj.data.Either;
78 @RunWith(SpringJUnit4ClassRunner.class)
79 @ContextConfiguration("classpath:application-context-test.xml")
80 public class ToscaElementLifecycleOperationTest extends ModelTestBase {
82 @javax.annotation.Resource
83 protected TitanDao titanDao;
85 @javax.annotation.Resource
86 private NodeTypeOperation nodeTypeOperation;
88 @javax.annotation.Resource
89 private TopologyTemplateOperation topologyTemplateOperation;
91 @javax.annotation.Resource
92 private ToscaElementLifecycleOperation lifecycleOperation;
94 String categoryName = "category";
95 String subcategory = "mycategory";
96 String outputDirectory = "C:\\Output";
99 public TestName name = new TestName();
102 public static void initLifecycleOperation() {
103 ModelTestBase.init();
106 private GraphVertex ownerVertex;
107 private GraphVertex modifierVertex;
108 private GraphVertex vfVertex;
109 private GraphVertex serviceVertex;
112 public void setupBefore() {
115 createResourceCategory();
116 createServiceCategory();
117 createRootNodeType();
118 createNodeType("firstVf");
119 createTopologyTemplate("firstService");
124 public void lifecycleTest() {
125 Either<ToscaElement, StorageOperationStatus> res = lifecycleOperation
126 .checkinToscaELement(LifecycleStateEnum.findState((String) vfVertex.getMetadataProperty(GraphPropertyEnum.STATE)),
127 vfVertex.getUniqueId(), modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
128 StorageOperationStatus status;
130 assertTrue(res.isLeft());
131 String id = res.left().value().getUniqueId();
133 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
134 assertTrue(res.isLeft());
135 id = res.left().value().getUniqueId();
137 PropertyDataDefinition prop55 = new PropertyDataDefinition();
138 prop55.setName("prop55");
139 prop55.setDefaultValue("def55");
141 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop55, JsonPresentationFields.NAME);
142 assertTrue(status == StorageOperationStatus.OK);
144 CapabilityDataDefinition cap1 = new CapabilityDataDefinition();
145 cap1.setName("cap1");
146 cap1.setDescription("create");
147 cap1.setUniqueId(UniqueIdBuilder.buildCapabilityUid(id, "cap1"));
149 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.CAPABILITIES, VertexTypeEnum.CAPABILTIES, cap1, JsonPresentationFields.NAME);
150 assertTrue(status == StorageOperationStatus.OK);
152 res = lifecycleOperation.checkinToscaELement(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
153 assertTrue(res.isLeft());
154 id = res.left().value().getUniqueId();
156 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
157 assertTrue(res.isLeft());
158 id = res.left().value().getUniqueId();
160 prop55.setDefaultValue("AAAAAAAA");
161 status = nodeTypeOperation.updateToscaDataOfToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop55, JsonPresentationFields.NAME);
162 assertTrue(status == StorageOperationStatus.OK);
164 cap1.setDescription("update");
166 status = nodeTypeOperation.updateToscaDataOfToscaElement(id, EdgeLabelEnum.CAPABILITIES, VertexTypeEnum.CAPABILTIES, cap1, JsonPresentationFields.NAME);
167 assertTrue(status == StorageOperationStatus.OK);
169 PropertyDataDefinition prop66 = new PropertyDataDefinition();
170 prop66.setName("prop66");
171 prop66.setDefaultValue("def66");
173 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop66, JsonPresentationFields.NAME);
174 assertTrue(status == StorageOperationStatus.OK);
176 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
177 assertTrue(res.isLeft());
178 id = res.left().value().getUniqueId();
180 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
181 assertTrue(res.isLeft());
182 id = res.left().value().getUniqueId();
184 res = lifecycleOperation.certifyToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
185 assertTrue(res.isLeft());
186 id = res.left().value().getUniqueId();
188 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
189 assertTrue(res.isLeft());
190 id = res.left().value().getUniqueId();
192 PropertyDataDefinition prop77 = new PropertyDataDefinition();
193 prop77.setName("prop77");
194 prop77.setDefaultValue("def77");
196 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop77, JsonPresentationFields.NAME);
197 assertTrue(status == StorageOperationStatus.OK);
199 res = lifecycleOperation.checkinToscaELement(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
200 assertTrue(res.isLeft());
201 id = res.left().value().getUniqueId();
203 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
204 assertTrue(res.isLeft());
205 id = res.left().value().getUniqueId();
207 PropertyDataDefinition prop88 = new PropertyDataDefinition();
208 prop88.setName("prop88");
209 prop88.setDefaultValue("def88");
211 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop88, JsonPresentationFields.NAME);
212 assertTrue(status == StorageOperationStatus.OK);
214 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
215 assertTrue(res.isLeft());
216 id = res.left().value().getUniqueId();
218 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
219 assertTrue(res.isLeft());
220 id = res.left().value().getUniqueId();
222 res = lifecycleOperation.certifyToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
223 assertTrue(res.isLeft());
224 id = res.left().value().getUniqueId();
226 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), ownerVertex.getUniqueId());
227 assertTrue(res.isLeft());
228 id = res.left().value().getUniqueId();
230 PropertyDataDefinition prop99 = new PropertyDataDefinition();
231 prop99.setName("prop99");
232 prop99.setDefaultValue("def99");
234 status = nodeTypeOperation.addToscaDataToToscaElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop99, JsonPresentationFields.NAME);
235 assertTrue(status == StorageOperationStatus.OK);
237 res = lifecycleOperation.requestCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
238 assertTrue(res.isLeft());
239 id = res.left().value().getUniqueId();
241 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
242 assertTrue(res.isLeft());
243 id = res.left().value().getUniqueId();
245 status = nodeTypeOperation.deleteToscaDataElement(id, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, "prop99", JsonPresentationFields.NAME);
246 assertTrue(status == StorageOperationStatus.OK);
248 //cancel certification
249 res = lifecycleOperation.cancelOrFailCertification(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId(), LifecycleStateEnum.READY_FOR_CERTIFICATION);
250 assertTrue(res.isLeft());
251 id = res.left().value().getUniqueId();
253 res = lifecycleOperation.startCertificationToscaElement(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
254 assertTrue(res.isLeft());
255 id = res.left().value().getUniqueId();
258 res = lifecycleOperation.cancelOrFailCertification(id, modifierVertex.getUniqueId(), ownerVertex.getUniqueId(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
259 assertTrue(res.isLeft());
260 id = res.left().value().getUniqueId();
262 //exportGraphMl(titanDao.getGraph().left().value());
267 public void serviceConformanceLevelTest() {
268 Either<ToscaElement, StorageOperationStatus> res = lifecycleOperation
269 .checkinToscaELement(LifecycleStateEnum.findState((String) serviceVertex.getMetadataProperty(GraphPropertyEnum.STATE)),
270 serviceVertex.getUniqueId(), modifierVertex.getUniqueId(), ownerVertex.getUniqueId());
272 assertTrue(res.isLeft());
273 String id = res.left().value().getUniqueId();
275 res = lifecycleOperation.checkoutToscaElement(id, ownerVertex.getUniqueId(), modifierVertex.getUniqueId());
276 assertTrue(res.isLeft());
278 String conformanceLevel = res.left().value().getMetadataValue(JsonPresentationFields.CONFORMANCE_LEVEL).toString();
279 assertEquals(conformanceLevel, ModelTestBase.configurationManager.getConfiguration().getToscaConformanceLevel());
282 private void createResourceCategory() {
284 GraphVertex cat = new GraphVertex(VertexTypeEnum.RESOURCE_CATEGORY);
285 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
286 String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.RESOURCE_CATEGORY);
287 cat.setUniqueId(catId);
288 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,catId);
289 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_CATEGORY.getName());
290 metadataProperties.put(GraphPropertyEnum.NAME,categoryName);
291 metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
292 cat.setMetadataProperties(metadataProperties);
293 cat.updateMetadataJsonWithCurrentMetadataProperties();
295 GraphVertex subCat = new GraphVertex(VertexTypeEnum.RESOURCE_SUBCATEGORY);
296 metadataProperties = new HashMap<>();
297 String subCatId = UniqueIdBuilder.buildSubCategoryUid(cat.getUniqueId(), subcategory);
298 subCat.setUniqueId(subCatId);
299 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,subCatId);
300 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_SUBCATEGORY.getName());
301 metadataProperties.put(GraphPropertyEnum.NAME,subcategory);
302 subCat.setMetadataProperties(metadataProperties);
303 subCat.updateMetadataJsonWithCurrentMetadataProperties();
305 Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
307 Either<GraphVertex, TitanOperationStatus> subCatRes = titanDao.createVertex(subCat);
309 TitanOperationStatus status = titanDao.createEdge(catRes.left().value().getVertex(), subCatRes.left().value().getVertex(), EdgeLabelEnum.SUB_CATEGORY, new HashMap<>());
310 assertEquals(TitanOperationStatus.OK, status);
313 private void createServiceCategory() {
315 GraphVertex cat = new GraphVertex(VertexTypeEnum.SERVICE_CATEGORY);
316 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
317 String catId = UniqueIdBuilder.buildComponentCategoryUid(categoryName, VertexTypeEnum.SERVICE_CATEGORY);
318 cat.setUniqueId(catId);
319 metadataProperties.put(GraphPropertyEnum.UNIQUE_ID,catId);
320 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.SERVICE_CATEGORY.getName());
321 metadataProperties.put(GraphPropertyEnum.NAME,categoryName);
322 metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
323 cat.setMetadataProperties(metadataProperties);
324 cat.updateMetadataJsonWithCurrentMetadataProperties();
326 Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
328 assertTrue(catRes.isLeft());
331 private TopologyTemplate createTopologyTemplate(String name) {
333 TopologyTemplate service = new TopologyTemplate();
334 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
335 service.setUniqueId(uniqueId);
336 service.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
337 service.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), name);
338 service.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
339 service.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
340 service.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VF.name());
341 service.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(),ComponentTypeEnum.RESOURCE);
342 List<CategoryDefinition> categories = new ArrayList<>();
343 CategoryDefinition cat = new CategoryDefinition();
345 cat.setName(categoryName);
346 service.setCategories(categories);
348 service.setComponentType(ComponentTypeEnum.SERVICE);
349 Either<TopologyTemplate, StorageOperationStatus> createRes = topologyTemplateOperation.createTopologyTemplate(service);
350 assertTrue(createRes.isLeft());
352 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createRes.left().value().getUniqueId());
353 assertTrue(getNodeTyeRes.isLeft());
355 serviceVertex = getNodeTyeRes.left().value();
360 private <T extends ToscaDataDefinition> NodeType createNodeType(String nodeTypeName) {
362 NodeType vf = new NodeType();
363 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
364 vf.setUniqueId(uniqueId);
365 vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
366 vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), nodeTypeName);
367 vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
368 vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
369 vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VF.name());
370 vf.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(),ComponentTypeEnum.RESOURCE);
371 List<CategoryDefinition> categories = new ArrayList<>();
372 CategoryDefinition cat = new CategoryDefinition();
374 cat.setName(categoryName);
375 List<SubCategoryDefinition> subCategories = new ArrayList<>();
376 SubCategoryDefinition subCat = new SubCategoryDefinition();
377 subCat.setName(subcategory);
378 subCategories.add(subCat);
379 cat.setSubcategories(subCategories);
380 vf.setCategories(categories);
383 List<String> derivedFrom = new ArrayList<>();
384 derivedFrom.add("root");
385 vf.setDerivedFrom(derivedFrom);
387 // Map<String, PropertyDataDefinition> properties = new HashMap<>();
388 // PropertyDataDefinition prop1 = new PropertyDataDefinition();
389 // prop1.setName("prop1");
390 // prop1.setDefaultValue("def1");
392 // properties.put("prop1", prop1);
394 // PropertyDataDefinition prop2 = new PropertyDataDefinition();
395 // prop2.setName("prop2");
396 // prop2.setDefaultValue("def2");
397 // properties.put("prop2", prop2);
399 // PropertyDataDefinition prop3 = new PropertyDataDefinition();
400 // prop3.setName("prop3");
401 // prop3.setDefaultValue("def3");
402 // properties.put("prop3", prop3);
404 // vf.setProperties(properties);
405 vf.setComponentType(ComponentTypeEnum.RESOURCE);
406 Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
407 assertTrue(createVFRes.isLeft());
409 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createVFRes.left().value().getUniqueId());
410 assertTrue(getNodeTyeRes.isLeft());
412 vfVertex = getNodeTyeRes.left().value();
416 List<PropertyDataDefinition> addProperties = new ArrayList<>();
417 PropertyDataDefinition prop11 = new PropertyDataDefinition();
418 prop11.setName("prop11");
419 prop11.setDefaultValue("def11");
421 addProperties.add(prop11);
423 PropertyDataDefinition prop22 = new PropertyDataDefinition();
424 prop22.setName("prop22");
425 prop22.setDefaultValue("def22");
426 addProperties.add(prop22);
428 StorageOperationStatus status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, addProperties, JsonPresentationFields.NAME);
429 assertTrue(status == StorageOperationStatus.OK);
431 PropertyDataDefinition prop33 = new PropertyDataDefinition();
432 prop33.setName("prop33");
433 prop33.setDefaultValue("def33");
435 status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop33, JsonPresentationFields.NAME);
436 assertTrue(status == StorageOperationStatus.OK);
438 PropertyDataDefinition prop44 = new PropertyDataDefinition();
439 prop44.setName("prop44");
440 prop44.setDefaultValue("def44");
442 status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex.getUniqueId(), EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop44, JsonPresentationFields.NAME);
443 assertTrue(status == StorageOperationStatus.OK);
446 PropertyDataDefinition capProp = new PropertyDataDefinition();
447 capProp.setName( "capProp");
448 capProp.setDefaultValue( "capPropDef");
450 MapDataDefinition dataToCreate = new MapPropertiesDataDefinition();
451 dataToCreate.put("capProp", capProp);
453 Map<String, MapDataDefinition> capProps = new HashMap();
454 capProps.put("capName", dataToCreate);
456 Either<GraphVertex, StorageOperationStatus> res = nodeTypeOperation.assosiateElementToData(vfVertex, VertexTypeEnum.CAPABILITIES_PROPERTIES, EdgeLabelEnum.CAPABILITIES_PROPERTIES, capProps);
458 // exportGraphMl(titanDao.getGraph().left().value());
460 List<String> pathKeys = new ArrayList<>();
461 pathKeys.add("capName");
462 capProp.setDefaultValue( "BBBB");
463 status = nodeTypeOperation.updateToscaDataDeepElementOfToscaElement(vfVertex, EdgeLabelEnum.CAPABILITIES_PROPERTIES, VertexTypeEnum.CAPABILITIES_PROPERTIES,
464 capProp, pathKeys, JsonPresentationFields.NAME);
468 private void createRootNodeType() {
470 NodeType vf = new NodeType();
471 String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
472 vf.setUniqueId(uniqueId);
473 vf.setComponentType(ComponentTypeEnum.RESOURCE);
474 vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
475 vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), "root");
476 vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
477 vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "1.0");
478 vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(),ResourceTypeEnum.VFC.name());
479 vf.getMetadata().put(JsonPresentationFields.LIFECYCLE_STATE.getPresentation(), LifecycleStateEnum.CERTIFIED.name());
480 vf.getMetadata().put(JsonPresentationFields.TOSCA_RESOURCE_NAME.getPresentation(), "root");
481 vf.getMetadata().put(JsonPresentationFields.HIGHEST_VERSION.getPresentation(), true);
483 List<CategoryDefinition> categories = new ArrayList<>();
484 CategoryDefinition cat = new CategoryDefinition();
486 cat.setName(categoryName);
487 List<SubCategoryDefinition> subCategories = new ArrayList<>();
488 SubCategoryDefinition subCat = new SubCategoryDefinition();
489 subCat.setName(subcategory);
490 subCategories.add(subCat);
491 cat.setSubcategories(subCategories);
492 vf.setCategories(categories);
495 List<String> derivedFrom = new ArrayList<>();
496 vf.setDerivedFrom(derivedFrom);
498 Map<String, PropertyDataDefinition> properties = new HashMap<>();
499 PropertyDataDefinition prop1 = new PropertyDataDefinition();
500 prop1.setName("derived1");
501 prop1.setDefaultValue("deriveddef1");
503 properties.put("derived1", prop1);
505 PropertyDataDefinition prop2 = new PropertyDataDefinition();
506 prop2.setUniqueId("derived2");
507 prop2.setName("deriveddef2");
508 properties.put("derived2", prop2);
510 PropertyDataDefinition prop3 = new PropertyDataDefinition();
511 prop3.setName("derived3");
512 prop3.setDefaultValue("deriveddef3");
513 properties.put("derived3", prop3);
515 vf.setProperties(properties);
516 vf.setComponentType(ComponentTypeEnum.RESOURCE);
517 Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
518 assertTrue(createVFRes.isLeft());
520 Either<GraphVertex, TitanOperationStatus> getNodeTyeRes= titanDao.getVertexById(createVFRes.left().value().getUniqueId());
521 assertTrue(getNodeTyeRes.isLeft());
524 private void createUsers() {
526 GraphVertex ownerV = new GraphVertex(VertexTypeEnum.USER);
527 ownerV.setUniqueId("user1");
529 Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
530 metadataProperties.put(GraphPropertyEnum.USERID, ownerV.getUniqueId());
531 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
532 metadataProperties.put(GraphPropertyEnum.NAME, "user1");
533 ownerV.setMetadataProperties(metadataProperties);
534 ownerV.updateMetadataJsonWithCurrentMetadataProperties();
535 ownerV.setJson(new HashMap<>());
536 Either<GraphVertex, TitanOperationStatus> createUserRes = titanDao.createVertex(ownerV);
537 assertTrue(createUserRes.isLeft());
539 ownerVertex = createUserRes.left().value();
541 GraphVertex modifierV = new GraphVertex(VertexTypeEnum.USER);
542 modifierV.setUniqueId("user2");
544 metadataProperties = new HashMap<>();
545 metadataProperties.put(GraphPropertyEnum.USERID, modifierV.getUniqueId());
546 metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
547 metadataProperties.put(GraphPropertyEnum.NAME, "user2");
548 modifierV.setMetadataProperties(metadataProperties);
549 modifierV.updateMetadataJsonWithCurrentMetadataProperties();
550 modifierV.setJson(new HashMap<>());
551 createUserRes = titanDao.createVertex(modifierV);
552 assertTrue(createUserRes.isLeft());
554 modifierVertex = createUserRes.left().value();
556 Either<GraphVertex, TitanOperationStatus> getOwnerRes = lifecycleOperation.findUser(ownerVertex.getUniqueId());
557 assertTrue(getOwnerRes.isLeft());
562 public void teardown() {
566 private void clearGraph() {
567 Either<TitanGraph, TitanOperationStatus> graphResult = titanDao.getGraph();
568 TitanGraph graph = graphResult.left().value();
570 Iterable<TitanVertex> vertices = graph.query().vertices();
571 if (vertices != null) {
572 Iterator<TitanVertex> iterator = vertices.iterator();
573 while (iterator.hasNext()) {
574 TitanVertex vertex = iterator.next();
581 private String exportGraphMl(TitanGraph graph) {
582 String result = null;
583 String outputFile = outputDirectory + File.separator + "exportGraph." + System.currentTimeMillis() + ".graphml";
585 try (final OutputStream os = new BufferedOutputStream(new FileOutputStream(outputFile))) {
586 graph.io(IoCore.graphml()).writer().normalize(true).create().writeGraph(os, graph);
590 } catch (Exception e) {
591 graph.tx().rollback();