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.assertj.core.api.Assertions.assertThat;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
28 import org.janusgraph.core.JanusGraph;
29 import org.janusgraph.core.JanusGraphVertex;
30 import fj.data.Either;
31 import java.util.ArrayList;
32 import java.util.HashMap;
33 import java.util.Iterator;
34 import java.util.List;
36 import java.util.Map.Entry;
37 import java.util.function.Function;
38 import java.util.stream.Collectors;
39 import java.util.stream.Stream;
40 import javax.annotation.Resource;
41 import org.apache.commons.lang3.tuple.ImmutablePair;
42 import org.junit.Before;
43 import org.junit.BeforeClass;
44 import org.junit.Test;
45 import org.junit.runner.RunWith;
46 import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
47 import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphGenericDao;
48 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
49 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
50 import org.openecomp.sdc.be.datatypes.enums.ModelTypeEnum;
51 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
52 import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
53 import org.openecomp.sdc.be.model.Model;
54 import org.openecomp.sdc.be.model.ModelTestBase;
55 import org.openecomp.sdc.be.model.PropertyConstraint;
56 import org.openecomp.sdc.be.model.PropertyDefinition;
57 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
58 import org.openecomp.sdc.be.model.tosca.ToscaType;
59 import org.openecomp.sdc.be.model.tosca.constraints.GreaterThanConstraint;
60 import org.openecomp.sdc.be.model.tosca.constraints.InRangeConstraint;
61 import org.openecomp.sdc.be.model.tosca.constraints.LessOrEqualConstraint;
62 import org.openecomp.sdc.be.resources.data.CapabilityTypeData;
63 import org.springframework.test.context.ContextConfiguration;
64 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
66 import static org.assertj.core.api.Assertions.assertThat;
67 import static org.junit.Assert.*;
69 @RunWith(SpringJUnit4ClassRunner.class)
70 @ContextConfiguration("classpath:application-context-test.xml")
71 public class CapabilityTypeOperationTest extends ModelTestBase {
73 @Resource(name = "janusgraph-generic-dao")
74 private HealingJanusGraphGenericDao janusGraphDao;
76 @Resource(name = "capability-type-operation")
77 private CapabilityTypeOperation capabilityTypeOperation;
79 @Resource(name = "model-operation")
80 private ModelOperation modelOperation;
83 public static void setupBeforeClass() {
88 public void cleanUp() {
89 HealingJanusGraphGenericDao janusGraphGenericDao = capabilityTypeOperation.janusGraphGenericDao;
90 Either<JanusGraph, JanusGraphOperationStatus> graphResult = janusGraphGenericDao.getGraph();
91 JanusGraph graph = graphResult.left().value();
93 Iterable<JanusGraphVertex> vertices = graph.query().vertices();
94 if (vertices != null) {
95 Iterator<JanusGraphVertex> iterator = vertices.iterator();
96 while (iterator.hasNext()) {
97 JanusGraphVertex vertex = iterator.next();
102 janusGraphGenericDao.commit();
106 public void testDummy() {
107 assertNotNull(capabilityTypeOperation);
111 public void testAddCapabilityType() {
113 CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition();
114 capabilityTypeDefinition.setDescription("desc1");
115 capabilityTypeDefinition.setType("tosca.capabilities.Container1");
117 Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType1 = capabilityTypeOperation.addCapabilityType(capabilityTypeDefinition, true);
118 assertTrue("check capability type added", addCapabilityType1.isLeft());
120 CapabilityTypeDefinition capabilityTypeAdded = addCapabilityType1.left().value();
121 compareBetweenCreatedToSent(capabilityTypeDefinition, capabilityTypeAdded);
123 Either<CapabilityTypeDefinition, JanusGraphOperationStatus> capabilityTypeByUid = capabilityTypeOperation.getCapabilityTypeByUid(capabilityTypeAdded.getUniqueId());
124 compareBetweenCreatedToSent(capabilityTypeByUid.left().value(), capabilityTypeDefinition);
126 Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType2 = capabilityTypeOperation.addCapabilityType(capabilityTypeDefinition, true);
127 assertTrue("check capability type failed", addCapabilityType2.isRight());
128 assertEquals("check returned error", StorageOperationStatus.SCHEMA_VIOLATION, addCapabilityType2.right().value());
133 public void testAddCapabilityTypeWithModel() {
135 CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition();
136 capabilityTypeDefinition.setDescription("desc1");
137 capabilityTypeDefinition.setType("tosca.capabilities.Container1");
138 capabilityTypeDefinition.setModel("testModel");
140 Model model = new Model("testModel", ModelTypeEnum.NORMATIVE);
141 modelOperation.createModel(model , true);
143 Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType1 = capabilityTypeOperation.addCapabilityType(capabilityTypeDefinition, true);
144 assertTrue("check capability type added", addCapabilityType1.isLeft());
146 CapabilityTypeDefinition capabilityTypeAdded = addCapabilityType1.left().value();
147 compareBetweenCreatedToSent(capabilityTypeDefinition, capabilityTypeAdded);
149 Either<CapabilityTypeDefinition, JanusGraphOperationStatus> capabilityTypeByUid = capabilityTypeOperation.getCapabilityTypeByUid(capabilityTypeAdded.getUniqueId());
150 compareBetweenCreatedToSent(capabilityTypeByUid.left().value(), capabilityTypeDefinition);
152 CapabilityTypeDefinition capabilityTypeWithDerivedFrom = new CapabilityTypeDefinition();
153 capabilityTypeWithDerivedFrom.setDescription("desc2");
154 capabilityTypeWithDerivedFrom.setType("tosca.capabilities.Container2");
155 capabilityTypeWithDerivedFrom.setDerivedFrom("tosca.capabilities.Container1");
156 capabilityTypeWithDerivedFrom.setModel("testModel");
158 Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType2 = capabilityTypeOperation.addCapabilityType(capabilityTypeWithDerivedFrom, true);
159 assertTrue("check capability type added", addCapabilityType2.isLeft());
161 capabilityTypeAdded = addCapabilityType2.left().value();
162 compareBetweenCreatedToSent(capabilityTypeWithDerivedFrom, capabilityTypeAdded);
167 public void testAddDerviedCapabilityType() {
169 CapabilityTypeDefinition capabilityTypeDefinition = createCapabilityTypeDef("tosca.capabilities.Container2", "desc1", "derivedFrom");
171 Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType1 = capabilityTypeOperation.addCapabilityType(capabilityTypeDefinition, true);
172 // assertEquals("check capability type parent not exist",
173 // StorageOperationStatus.INVALID_ID,
174 // addCapabilityType1.right().value());
175 // TODO: esofer change to INVALID_ID
176 assertEquals("check capability type parent not exist", StorageOperationStatus.NOT_FOUND, addCapabilityType1.right().value());
179 public CapabilityTypeDefinition createCapability(String capabilityTypeName) {
181 CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition();
182 capabilityTypeDefinition.setDescription("desc1");
183 capabilityTypeDefinition.setType(capabilityTypeName);
185 Map<String, PropertyDefinition> properties = new HashMap<>();
187 String propName1 = "disk_size";
188 String propName2 = "num_cpus";
190 PropertyDefinition property1 = buildProperty1();
192 properties.put(propName1, property1);
194 PropertyDefinition property2 = buildProperty2();
196 properties.put(propName2, property2);
198 capabilityTypeDefinition.setProperties(properties);
200 Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType1 = capabilityTypeOperation.addCapabilityType(capabilityTypeDefinition, true);
202 CapabilityTypeDefinition capabilityTypeDefinitionCreated = addCapabilityType1.left().value();
203 Either<CapabilityTypeDefinition, StorageOperationStatus> capabilityType = capabilityTypeOperation.getCapabilityType(capabilityTypeDefinitionCreated.getUniqueId(), true);
204 assertTrue("check capability type fetched", capabilityType.isLeft());
205 CapabilityTypeDefinition fetchedCTD = capabilityType.left().value();
207 Map<String, PropertyDefinition> fetchedProps = fetchedCTD.getProperties();
209 compareProperties(fetchedProps, properties);
216 public void testAddCapabilityTypeWithProperties() {
218 CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition();
219 capabilityTypeDefinition.setDescription("desc1");
220 capabilityTypeDefinition.setType("tosca.capabilities.Container3");
222 Map<String, PropertyDefinition> properties = new HashMap<>();
224 String propName1 = "disk_size";
225 String propName2 = "num_cpus";
227 PropertyDefinition property1 = buildProperty1();
229 properties.put(propName1, property1);
231 PropertyDefinition property2 = buildProperty2();
233 properties.put(propName2, property2);
235 capabilityTypeDefinition.setProperties(properties);
237 Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType1 = capabilityTypeOperation.addCapabilityType(capabilityTypeDefinition, true);
239 CapabilityTypeDefinition capabilityTypeDefinitionCreated = addCapabilityType1.left().value();
240 Either<CapabilityTypeDefinition, StorageOperationStatus> capabilityType = capabilityTypeOperation.getCapabilityType(capabilityTypeDefinitionCreated.getUniqueId());
241 assertTrue("check capability type fetched", capabilityType.isLeft());
242 CapabilityTypeDefinition fetchedCTD = capabilityType.left().value();
244 Map<String, PropertyDefinition> fetchedProps = fetchedCTD.getProperties();
246 compareProperties(fetchedProps, properties);
249 private void compareProperties(Map<String, PropertyDefinition> first, Map<String, PropertyDefinition> second) {
251 assertTrue("check properties are full or empty", ((first == null && second == null) || (first != null && second != null)));
253 assertEquals("check properties size", first.size(), second.size());
255 for (Entry<String, PropertyDefinition> entry : first.entrySet()) {
257 String propName = entry.getKey();
258 PropertyDefinition secondPD = second.get(propName);
259 assertNotNull("Cannot find property " + propName + " in " + second, secondPD);
261 PropertyDefinition firstPD = entry.getValue();
263 comparePropertyDefinition(firstPD, secondPD);
271 public void testGetCapabilityTypeNotFound() {
273 Either<CapabilityTypeDefinition, StorageOperationStatus> capabilityType = capabilityTypeOperation.getCapabilityType("not_exists");
274 assertEquals("check not found is returned", StorageOperationStatus.NOT_FOUND, capabilityType.right().value());
281 public void updateCapabilityType_returnNotFoundErrorIfTryingToUpdateANonExistingType() {
282 CapabilityTypeDefinition currType = createCapabilityTypeDef();
283 CapabilityTypeDefinition updatedType = createCapabilityTypeDef();
284 Either<CapabilityTypeDefinition, StorageOperationStatus> updateCapabilityTypeRes = capabilityTypeOperation.updateCapabilityType(updatedType, currType);
285 assertThat(updateCapabilityTypeRes.right().value()).isEqualTo(StorageOperationStatus.NOT_FOUND);
289 public void updateCapabilityType_basicFields() {
290 CapabilityTypeDefinition createdType = createCapabilityTypeDef("type1", "description1");
291 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(createdType);
293 CapabilityTypeDefinition updatedType = createCapabilityTypeDef("type1", "description2");
294 capabilityTypeOperation.updateCapabilityType(updatedType, currCapabilityType.left().value());
296 Either<CapabilityTypeDefinition, StorageOperationStatus> fetchedUpdatedType = capabilityTypeOperation.getCapabilityType(createdType.getType());
297 CapabilityTypeDefinition fetchedCapabilityType = fetchedUpdatedType.left().value();
298 assertThat(fetchedCapabilityType.getProperties()).isNullOrEmpty();
299 assertThat(fetchedCapabilityType.getDerivedFrom()).isNullOrEmpty();
300 assertEquals(fetchedCapabilityType.getCreationTime(), updatedType.getCreationTime());
301 assertEquals(fetchedCapabilityType.getType(), updatedType.getType());
302 assertEquals(fetchedCapabilityType.getDescription(), updatedType.getDescription());
303 assertEquals(fetchedCapabilityType.getValidSourceTypes(), updatedType.getValidSourceTypes());
304 assertEquals(fetchedCapabilityType.getVersion(), updatedType.getVersion());
308 public void updateCapabilityType_updatePropertiesFailedDueTypeChange() {
309 PropertyDefinition prop1 = createSimpleProperty("val1", "prop1", "string");
310 CapabilityTypeDefinition capabilityType = createCapabilityTypeDef(asMap(prop1));
311 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(capabilityType);
313 PropertyDefinition updatedProp1 = duplicateProperty(prop1, "newVal1", "int");
314 PropertyDefinition prop3 = createSimpleProperty("val3", "prop3", "string");
315 CapabilityTypeDefinition updatedCapabilityType = createCapabilityTypeDef(asMap(updatedProp1, prop3));
317 Either<CapabilityTypeDefinition, StorageOperationStatus> updatedCapabilityTypeRes =
318 capabilityTypeOperation.updateCapabilityType(updatedCapabilityType, currCapabilityType.left().value());
320 assertTrue(updatedCapabilityTypeRes.isRight());
321 assertEquals(StorageOperationStatus.MATCH_NOT_FOUND, updatedCapabilityTypeRes.right().value());
323 Either<CapabilityTypeDefinition, StorageOperationStatus> fetchedUpdatedType = capabilityTypeOperation.getCapabilityType(capabilityType.getType());
324 assertEquals(fetchedUpdatedType.left().value().getProperties(), asMap(prop1));
329 public void updateCapabilityType_updatePropertiesFailedDueDeletedProp() {
330 PropertyDefinition prop1 = createSimpleProperty("val1", "prop1", "string");
331 CapabilityTypeDefinition capabilityType = createCapabilityTypeDef(asMap(prop1));
332 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(capabilityType);
334 PropertyDefinition prop3 = createSimpleProperty("val3", "prop3", "string");
335 CapabilityTypeDefinition updatedCapabilityType = createCapabilityTypeDef(asMap(prop3));
337 Either<CapabilityTypeDefinition, StorageOperationStatus> updatedCapabilityTypeRes =
338 capabilityTypeOperation.updateCapabilityType(updatedCapabilityType, currCapabilityType.left().value());
340 assertTrue(updatedCapabilityTypeRes.isRight());
341 assertEquals(StorageOperationStatus.MATCH_NOT_FOUND, updatedCapabilityTypeRes.right().value());
343 Either<CapabilityTypeDefinition, StorageOperationStatus> fetchedUpdatedType = capabilityTypeOperation.getCapabilityType(capabilityType.getType());
344 assertEquals(fetchedUpdatedType.left().value().getProperties(), asMap(prop1));
349 public void updateCapabilityType_updateProperties() {
350 PropertyDefinition prop1 = createSimpleProperty("val1", "prop1", "string");
351 CapabilityTypeDefinition capabilityType = createCapabilityTypeDef(asMap(prop1));
352 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(capabilityType);
354 PropertyDefinition updatedProp1 = duplicateProperty(prop1, "newVal1", "string");
355 PropertyDefinition prop3 = createSimpleProperty("val3", "prop3", "string");
356 CapabilityTypeDefinition updatedCapabilityType = createCapabilityTypeDef(asMap(updatedProp1, prop3));
358 Either<CapabilityTypeDefinition, StorageOperationStatus> updatedCapabilityTypeRes =
359 capabilityTypeOperation.updateCapabilityType(updatedCapabilityType, currCapabilityType.left().value());
360 assertTrue(updatedCapabilityTypeRes.isLeft());
362 Either<CapabilityTypeDefinition, StorageOperationStatus> fetchedUpdatedType = capabilityTypeOperation.getCapabilityType(capabilityType.getType());
363 assertEquals(fetchedUpdatedType.left().value().getProperties(), asMap(updatedProp1, prop3));
368 public void updateCapabilityType_derivedFrom_whenNoPrevDerivedFrom_updateToNewDerivedFrom() {
369 CapabilityTypeDefinition rootCapabilityType = createCapabilityTypeDef();
370 CapabilityTypeDefinition capabilityType1 = createCapabilityTypeDef("type1", "descr");
371 CapabilityTypeDefinition updatedCapabilityType = createCapabilityTypeDef("type1", "descr", rootCapabilityType.getType());
372 capabilityTypeOperation.addCapabilityType(rootCapabilityType);
373 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(capabilityType1);
374 capabilityTypeOperation.updateCapabilityType(updatedCapabilityType, currCapabilityType.left().value());
376 Either<CapabilityTypeDefinition, StorageOperationStatus> latestCapabilityType = capabilityTypeOperation.getCapabilityType(capabilityType1.getType());
377 assertThat(latestCapabilityType.left().value().getDerivedFrom()).isEqualTo(rootCapabilityType.getType());
378 verifyDerivedFromNodeEqualsToRootCapabilityType(rootCapabilityType, latestCapabilityType.left().value().getUniqueId());
382 public void updateCapabilityType_derivedFrom_updateToNullDerivedFrom_Failed() {
383 CapabilityTypeDefinition rootCapabilityType = createCapabilityTypeDef();
384 CapabilityTypeDefinition capabilityType1 = createCapabilityTypeDef("type1", "descr", rootCapabilityType.getType());
385 CapabilityTypeDefinition updatedCapabilityType = createCapabilityTypeDef("type1", "descr", null, new HashMap<>());
386 capabilityTypeOperation.addCapabilityType(rootCapabilityType);
387 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(capabilityType1);
389 Either<CapabilityTypeDefinition, StorageOperationStatus> updateRes =
390 capabilityTypeOperation.updateCapabilityType(updatedCapabilityType, currCapabilityType.left().value());
392 assertThat(updateRes.right().value()).isEqualTo(StorageOperationStatus.NOT_FOUND);
394 Either<CapabilityTypeDefinition, StorageOperationStatus> latestCapabilityType = capabilityTypeOperation.getCapabilityType(capabilityType1.getType());
395 assertThat(latestCapabilityType.left().value().getDerivedFrom()).isEqualTo(rootCapabilityType.getType());
399 public void updateCapabilityType_updateDerivedFrom() {
400 CapabilityTypeDefinition rootCapabilityType = createCapabilityTypeDef();
401 CapabilityTypeDefinition derivedType1 = createCapabilityTypeDef("derivedType1", "descr", rootCapabilityType.getType());
402 CapabilityTypeDefinition capabilityType1 = createCapabilityTypeDef("type1", "descr", rootCapabilityType.getType());
403 CapabilityTypeDefinition updatedCapabilityType = createCapabilityTypeDef("type1", "descr", derivedType1.getType());
405 capabilityTypeOperation.addCapabilityType(rootCapabilityType);
406 capabilityTypeOperation.addCapabilityType(derivedType1);
407 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(capabilityType1);
409 capabilityTypeOperation.updateCapabilityType(updatedCapabilityType, currCapabilityType.left().value());
411 Either<CapabilityTypeDefinition, StorageOperationStatus> latestCapabilityType = capabilityTypeOperation.getCapabilityType(capabilityType1.getType());
412 assertThat(latestCapabilityType.left().value().getDerivedFrom()).isEqualTo(derivedType1.getType());
413 verifyDerivedFromNodeEqualsToRootCapabilityType(derivedType1, latestCapabilityType.left().value().getUniqueId());
417 public void updateCapabilityType_updateDerivedFrom_Failed_NewParentIsNotChildOfOldOne() {
418 CapabilityTypeDefinition rootCapabilityType = createCapabilityTypeDef();
419 CapabilityTypeDefinition notDerivedType = createCapabilityTypeDef("derivedType1", "descr");
420 CapabilityTypeDefinition capabilityType1 = createCapabilityTypeDef("type1", "descr", rootCapabilityType.getType());
421 CapabilityTypeDefinition updatedCapabilityType = createCapabilityTypeDef("type1", "descr", notDerivedType.getType());
423 capabilityTypeOperation.addCapabilityType(rootCapabilityType);
424 capabilityTypeOperation.addCapabilityType(notDerivedType);
425 Either<CapabilityTypeDefinition, StorageOperationStatus> currCapabilityType = capabilityTypeOperation.addCapabilityType(capabilityType1);
427 Either<CapabilityTypeDefinition, StorageOperationStatus> result = capabilityTypeOperation.updateCapabilityType(updatedCapabilityType, currCapabilityType.left().value());
428 assertThat(result.right().value()).isEqualTo(StorageOperationStatus.CANNOT_UPDATE_EXISTING_ENTITY);
430 Either<CapabilityTypeDefinition, StorageOperationStatus> latestCapabilityType = capabilityTypeOperation.getCapabilityType(capabilityType1.getType());
431 assertThat(latestCapabilityType.left().value().getDerivedFrom()).isEqualTo(rootCapabilityType.getType());
432 verifyDerivedFromNodeEqualsToRootCapabilityType(rootCapabilityType, latestCapabilityType.left().value().getUniqueId());
435 private CapabilityTypeDefinition createCapabilityTypeDef() {
436 return createCapabilityTypeDef("tosca.capabilities.Root", "The TOSCA root Capability Type all other TOSCA base Capability Types derived from", null, new HashMap<>());
439 private CapabilityTypeDefinition createCapabilityTypeDef(Map<String, PropertyDefinition> properties) {
440 return createCapabilityTypeDef("tosca.capabilities.Root",
441 "The TOSCA root Capability Type all other TOSCA base Capability Types derived from", null, properties);
444 private CapabilityTypeDefinition createCapabilityTypeDef(String type, String description) {
445 return createCapabilityTypeDef(type, description, null, null);
448 private CapabilityTypeDefinition createCapabilityTypeDef(String type, String description, String derivedFrom) {
449 return createCapabilityTypeDef(type, description, derivedFrom, null);
453 private CapabilityTypeDefinition createCapabilityTypeDef(String type, String description, String derivedFrom, Map<String, PropertyDefinition> properties) {
454 CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition();
455 capabilityTypeDefinition.setDescription(description);
456 capabilityTypeDefinition.setType(type);
457 capabilityTypeDefinition.setDerivedFrom(derivedFrom);
458 capabilityTypeDefinition.setVersion("1.0");
459 capabilityTypeDefinition.setValidSourceTypes(null);
460 if (properties != null) {
461 capabilityTypeDefinition.setProperties(properties);
463 return capabilityTypeDefinition;
466 private PropertyDefinition duplicateProperty(PropertyDefinition prop1, String updatedValue, String updatedType) {
467 PropertyDefinition updatedProp1 = new PropertyDefinition(prop1);
468 updatedProp1.setDefaultValue(updatedValue);
469 updatedProp1.setType(updatedType);
473 private static Map<String, PropertyDefinition> asMap(PropertyDefinition ... props) {
474 return Stream.of(props).collect(Collectors.toMap(PropertyDefinition::getName, Function.identity()));
477 private void verifyDerivedFromNodeEqualsToRootCapabilityType(CapabilityTypeDefinition rootCapabilityType, String parentCapabilityId) {
478 Either<ImmutablePair<CapabilityTypeData, GraphEdge>, JanusGraphOperationStatus> derivedFromRelation = janusGraphDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), parentCapabilityId, GraphEdgeLabels.DERIVED_FROM,
479 NodeTypeEnum.CapabilityType, CapabilityTypeData.class);
480 assertThat(derivedFromRelation.left().value().getLeft().getCapabilityTypeDataDefinition())
481 .isEqualToComparingFieldByField(rootCapabilityType);
485 private void comparePropertyDefinition(PropertyDefinition first, PropertyDefinition second) {
487 assertTrue("check objects are full or empty", ((first == null && second == null) || (first != null && second != null)));
489 assertTrue("check property default value", compareValue(first.getDefaultValue(), second.getDefaultValue()));
490 assertTrue("check property description", compareValue(first.getDescription(), second.getDescription()));
491 assertTrue("check property type", compareValue(first.getType(), second.getType()));
492 compareList(first.getConstraints(), second.getConstraints());
497 private void compareList(List<PropertyConstraint> first, List<PropertyConstraint> second) {
499 assertTrue("check lists are full or empty", ((first == null && second == null) || (first != null && second != null)));
501 assertEquals("check list size", first.size(), second.size());
505 private PropertyDefinition buildProperty2() {
506 PropertyDefinition property2 = new PropertyDefinition();
507 property2.setDefaultValue("2");
508 property2.setDescription("Number of (actual or virtual) CPUs associated with the Compute node.");
509 property2.setType(ToscaType.INTEGER.name().toLowerCase());
510 List<PropertyConstraint> constraints3 = new ArrayList<>();
511 List<String> range = new ArrayList<>();
515 InRangeConstraint propertyConstraint3 = new InRangeConstraint(range);
516 constraints3.add(propertyConstraint3);
517 // property2.setConstraints(constraints3);
518 property2.setConstraints(constraints3);
522 private PropertyDefinition buildProperty1() {
523 PropertyDefinition property1 = new PropertyDefinition();
524 property1.setDefaultValue("10");
525 property1.setDescription("Size of the local disk, in Gigabytes (GB), available to applications running on the Compute node.");
526 property1.setType(ToscaType.INTEGER.name().toLowerCase());
527 List<PropertyConstraint> constraints = new ArrayList<>();
528 GreaterThanConstraint propertyConstraint1 = new GreaterThanConstraint("0");
529 constraints.add(propertyConstraint1);
531 LessOrEqualConstraint propertyConstraint2 = new LessOrEqualConstraint("10");
532 constraints.add(propertyConstraint2);
534 property1.setConstraints(constraints);
538 private void compareBetweenCreatedToSent(CapabilityTypeDefinition x, CapabilityTypeDefinition y) {
539 assertTrue(compareValue(x.getDerivedFrom(), y.getDerivedFrom()));
540 assertTrue(compareValue(x.getType(), y.getType()));
541 assertTrue(compareValue(x.getDescription(), y.getDescription()));
542 assertTrue(compareValue(x.getModel(), y.getModel()));
546 private boolean compareValue(String first, String second) {
548 if (first == null && second == null) {
552 return first.equals(second);