summaryrefslogtreecommitdiffstats
path: root/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperationTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperationTest.java')
-rw-r--r--catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperationTest.java577
1 files changed, 520 insertions, 57 deletions
diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperationTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperationTest.java
index 15c5e6497f..94e22e651f 100644
--- a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperationTest.java
+++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperationTest.java
@@ -1,32 +1,22 @@
package org.openecomp.sdc.be.model.operations.impl;
-import static com.google.common.collect.Sets.newHashSet;
-import static java.util.Arrays.asList;
-import static java.util.Collections.singletonList;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.thinkaurelius.titan.core.TitanVertex;
+import fj.data.Either;
+import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
-import org.openecomp.sdc.be.model.GroupTypeDefinition;
-import org.openecomp.sdc.be.model.ModelTestBase;
-import org.openecomp.sdc.be.model.PropertyDefinition;
+import org.openecomp.sdc.be.datatypes.elements.GroupTypeDataDefinition;
+import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.model.*;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.model.tosca.ToscaType;
import org.openecomp.sdc.be.resources.data.CapabilityTypeData;
@@ -34,12 +24,24 @@ import org.openecomp.sdc.be.resources.data.GroupTypeData;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import fj.data.Either;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import static com.google.common.collect.Sets.newHashSet;
+import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.*;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:application-context-test.xml")
public class GroupTypeOperationTest extends ModelTestBase {
+
private static final String TOSCA_GROUPS_ROOT = "tosca.groups.Root";
+ private static final String NULL_STRING = null;
@Resource(name = "titan-generic-dao")
private TitanGenericDao titanDao;
@@ -58,6 +60,7 @@ public class GroupTypeOperationTest extends ModelTestBase {
@After
public void tearDown() {
titanDao.rollback();
+ cleanUp();
}
@Test
@@ -71,7 +74,7 @@ public class GroupTypeOperationTest extends ModelTestBase {
List<GroupTypeDefinition> allGroupTypesNoExclusion = groupTypeOperation.getAllGroupTypes(null);
assertThat(allGroupTypesNoExclusion)
- .usingElementComparatorOnFields("type")
+ .usingElementComparatorOnFields("type", "icon", "name")
.containsExactlyInAnyOrder(rootGroupDefinition, type1, type2);
}
@@ -91,7 +94,7 @@ public class GroupTypeOperationTest extends ModelTestBase {
}
@Test
- public void groupTypeWithoutCapabilityTypeCreated() {
+ public void groupTypeWithoutCapabilityCreated() {
GroupTypeData rootNode = getOrCreateRootGroupTypeNode();
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
@@ -108,12 +111,12 @@ public class GroupTypeOperationTest extends ModelTestBase {
groupTypeDefinition.setProperties(properties );
- Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, false);
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
addGroupTypeResult = groupTypeOperation.getGroupTypeByTypeAndVersion("org.openecomp.groups.NetworkCollection", "1.0");
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
Either<GroupTypeData, TitanOperationStatus> groupTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), groupTypeDefinition.getType(), GroupTypeData.class);
@@ -124,18 +127,64 @@ public class GroupTypeOperationTest extends ModelTestBase {
}
@Test
+ public void groupTypeWithCapabilityAndPropsButCapTypeWithoutProps() {
+ getOrCreateRootGroupTypeNode();
+
+ CapabilityTypeDefinition capabilityTypeDef = createCapabilityType(null);
+ Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), capabilityTypeDef.getType(), CapabilityTypeData.class);
+ extractVal(capabilityTypeResult);
+
+ GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
+ groupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ groupTypeDefinition.setDescription("groups l3-networks in network collection");
+ groupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+
+ Map<String, CapabilityDefinition> mapCapabilities = new HashMap<>();
+
+ ComponentInstanceProperty property = new ComponentInstanceProperty(
+ buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance"));
+ CapabilityDefinition capabilityDef = buildCapabilityDefintion(asList(property));
+ mapCapabilities.put("vlan_assignment", capabilityDef);
+ groupTypeDefinition.setCapabilities(mapCapabilities);
+
+
+ List<PropertyDefinition> properties = asList(
+ buildProperty("vfc_instance_group_role", null, "role of this VFC group"),
+ buildProperty("vfc_parent_port_role", null, "common role of parent ports of VFCs in this group"),
+ buildProperty("network_collection_role", null, "network collection role assigned to this group"),
+ buildProperty("subinterface_role", null, "common role of subinterfaces of VFCs in this group, criteria the group is created"));
+
+ groupTypeDefinition.setProperties(properties );
+
+ Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
+ assertTrue(addGroupTypeResult.isRight());
+ assertEquals(StorageOperationStatus.MATCH_NOT_FOUND, addGroupTypeResult.right().value());
+ }
+
+ @Test
public void groupTypeWithCapabilityTypeAndEdgeCreated() {
GroupTypeData rootNode = getOrCreateRootGroupTypeNode();
- CapabilityTypeDefinition capabilityTypeDef = createCapabilityType();
+ Map<String, PropertyDefinition> capTypeProperties = new HashMap<>();
+ capTypeProperties.put("vfc_instance_group_reference",
+ buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance"));
+
+ CapabilityTypeDefinition capabilityTypeDef = createCapabilityType(capTypeProperties);
Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), capabilityTypeDef.getType(), CapabilityTypeData.class);
- CapabilityTypeData capabilityTypeNode = extractVal(capabilityTypeResult);
+ extractVal(capabilityTypeResult);
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
groupTypeDefinition.setDescription("groups l3-networks in network collection");
groupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
- groupTypeDefinition.setCapabilityTypes(asList(capabilityTypeDef));
+
+ Map<String, CapabilityDefinition> mapCapabilities = new HashMap<>();
+ ComponentInstanceProperty property = new ComponentInstanceProperty(
+ buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance"));
+ CapabilityDefinition capabilityDef = buildCapabilityDefintion(asList(property));
+ mapCapabilities.put("vlan_assignment", capabilityDef);
+ groupTypeDefinition.setCapabilities(mapCapabilities);
+
List<PropertyDefinition> properties = asList(
buildProperty("vfc_instance_group_role", null, "role of this VFC group"),
@@ -146,88 +195,276 @@ public class GroupTypeOperationTest extends ModelTestBase {
groupTypeDefinition.setProperties(properties );
Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
Either<GroupTypeData, TitanOperationStatus> groupTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), groupTypeDefinition.getType(), GroupTypeData.class);
GroupTypeData groupTypeNode = extractVal(groupTypeResult);
- Either<Edge, TitanOperationStatus> edgeCapTypeResult = titanDao.getEdgeByNodes(groupTypeNode, capabilityTypeNode, GraphEdgeLabels.GROUP_TYPE_CAPABILITY_TYPE);
- validate(edgeCapTypeResult);
+ Either<GroupTypeDefinition, StorageOperationStatus> groupTypeDefResult = groupTypeOperation.getGroupTypeByUid(groupTypeNode.getUniqueId());
+ assertTrue(groupTypeDefResult.isLeft());
+ GroupTypeDefinition groupTypeDefinitionRetrieved = groupTypeDefResult.left().value();
+ assertNotNull(groupTypeDefinitionRetrieved);
+ Map<String, CapabilityDefinition> capabilityDefs = groupTypeDefinitionRetrieved.getCapabilities();
+ assertNotNull(capabilityDefs);
+ assertEquals(1, capabilityDefs.size());
+ assertTrue(capabilityDefs.containsKey("vlan_assignment"));
+ CapabilityDefinition updatedCapabilityDef = capabilityDefs.get("vlan_assignment");
+ assertEquals(2, updatedCapabilityDef.getProperties().size());
Either<Edge, TitanOperationStatus> edgeDerivedFromResult = titanDao.getEdgeByNodes(groupTypeNode, rootNode, GraphEdgeLabels.DERIVED_FROM);
validate(edgeDerivedFromResult);
}
@Test
- public void testUpgradeGroupTypeWithDerrivedFromEdge() {
+ public void groupTypeWithCapabilityTypeAndEdgeCreated_OverrideDefaultCapabilityTypeValue() {
+ getOrCreateRootGroupTypeNode();
+
+ PropertyDefinition property = buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance");
+
+ Map<String, PropertyDefinition> capTypeProperties = new HashMap<>();
+ capTypeProperties.put("vfc_instance_group_reference", property);
+ CapabilityTypeDefinition capabilityTypeDef = createCapabilityType(capTypeProperties);
+ Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), capabilityTypeDef.getType(), CapabilityTypeData.class);
+ extractVal(capabilityTypeResult);
+
+ GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
+ groupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ groupTypeDefinition.setDescription("groups l3-networks in network collection");
+ groupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+
+ Map<String, CapabilityDefinition> mapCapabilities = new HashMap<>();
+ property.setValue("new_value");
+ ComponentInstanceProperty capDefProperty = new ComponentInstanceProperty(property);
+ CapabilityDefinition capabilityDef = buildCapabilityDefintion(asList(capDefProperty));
+ mapCapabilities.put("vlan_assignment", capabilityDef);
+ groupTypeDefinition.setCapabilities(mapCapabilities);
+
+
+ List<PropertyDefinition> properties = asList(
+ buildProperty("vfc_instance_group_role", null, "role of this VFC group"),
+ buildProperty("vfc_parent_port_role", null, "common role of parent ports of VFCs in this group"),
+ buildProperty("network_collection_role", null, "network collection role assigned to this group"),
+ buildProperty("subinterface_role", null, "common role of subinterfaces of VFCs in this group, criteria the group is created"));
+
+ groupTypeDefinition.setProperties(properties );
+
+ Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
+ compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
+
+ Either<GroupTypeData, TitanOperationStatus> groupTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), groupTypeDefinition.getType(), GroupTypeData.class);
+ GroupTypeData groupTypeNode = extractVal(groupTypeResult);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> groupTypeDefResult = groupTypeOperation.getGroupTypeByUid(groupTypeNode.getUniqueId());
+ assertTrue(groupTypeDefResult.isLeft());
+ GroupTypeDefinition groupTypeDefinitionRetrieved = groupTypeDefResult.left().value();
+ assertNotNull(groupTypeDefinitionRetrieved);
+ Map<String, CapabilityDefinition> capabilityDefs = groupTypeDefinitionRetrieved.getCapabilities();
+ assertNotNull(capabilityDefs);
+ assertEquals(1, capabilityDefs.size());
+ assertTrue(capabilityDefs.containsKey("vlan_assignment"));
+
+ CapabilityDefinition capDefinition = capabilityDefs.get("vlan_assignment");
+ assertEquals("new_value", capDefinition.getProperties().get(0).getValue());
+ assertEquals(2, capDefinition.getProperties().size());
+ }
+
+
+ @Test
+ public void updateGroupTypeWithCapability_FailedDueToCapabilityDeleteAttempt() {
+ createRootGroupTypeNode();
+
+ PropertyDefinition property = buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance");
+
+ Map<String, PropertyDefinition> capTypeProperties = new HashMap<>();
+ capTypeProperties.put("vfc_instance_group_reference", property);
+ CapabilityTypeDefinition capabilityTypeDef = createCapabilityType(capTypeProperties);
+ Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), capabilityTypeDef.getType(), CapabilityTypeData.class);
+ extractVal(capabilityTypeResult);
+
+ GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
+ groupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ groupTypeDefinition.setDescription("groups l3-networks in network collection");
+ groupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+
+ Map<String, CapabilityDefinition> mapCapabilities = new HashMap<>();
+ property.setValue("new_value");
+ ComponentInstanceProperty capDefProperty = new ComponentInstanceProperty(property);
+ CapabilityDefinition capabilityDef = buildCapabilityDefintion(asList(capDefProperty));
+ mapCapabilities.put("vlan_assignment", capabilityDef);
+ groupTypeDefinition.setCapabilities(mapCapabilities);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition);
+ assertTrue(addGroupTypeResult.isLeft());
+
+ GroupTypeDefinition newGroupTypeDefinition = new GroupTypeDefinition();
+ newGroupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ newGroupTypeDefinition.setDescription("groups l3-networks in network collection");
+ newGroupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+ Either<GroupTypeDefinition, StorageOperationStatus> updateGroupTypeResult = groupTypeOperation.updateGroupType(newGroupTypeDefinition, addGroupTypeResult.left().value());
+ assertTrue(updateGroupTypeResult.isRight());
+ assertEquals(StorageOperationStatus.MATCH_NOT_FOUND, updateGroupTypeResult.right().value());
+ }
+
+ @Test
+ public void updateGroupTypeWithCapability_FailedDueToCapabilityChangeTypeAttempt() {
+ createRootGroupTypeNode();
+
+ PropertyDefinition property = buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance");
+
+ Map<String, PropertyDefinition> capTypeProperties = new HashMap<>();
+ capTypeProperties.put("vfc_instance_group_reference", property);
+ CapabilityTypeDefinition capabilityTypeDef = createCapabilityType(capTypeProperties);
+ Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), capabilityTypeDef.getType(), CapabilityTypeData.class);
+ extractVal(capabilityTypeResult);
+
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ groupTypeDefinition.setDescription("groups l3-networks in network collection");
+ groupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+
+ Map<String, CapabilityDefinition> mapCapabilities = new HashMap<>();
+ property.setValue("new_value");
+ ComponentInstanceProperty capDefProperty = new ComponentInstanceProperty(property);
+ CapabilityDefinition capabilityDef = buildCapabilityDefintion(asList(capDefProperty));
+ mapCapabilities.put("vlan_assignment", capabilityDef);
+ groupTypeDefinition.setCapabilities(mapCapabilities);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition);
+ assertTrue(addGroupTypeResult.isLeft());
+
+ GroupTypeDefinition newGroupTypeDefinition = new GroupTypeDefinition();
+ newGroupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ newGroupTypeDefinition.setDescription("groups l3-networks in network collection");
+ newGroupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+
+ Map<String, CapabilityDefinition> updatedMapCapabilities = new HashMap<>();
+ property.setValue("new_value");
+ ComponentInstanceProperty newCapDefProperty = new ComponentInstanceProperty(property);
+ CapabilityDefinition updatedCapabilityDef = buildCapabilityDefintion(asList(newCapDefProperty));
+ updatedCapabilityDef.setType("Another type");
+ updatedMapCapabilities.put("vlan_assignment", updatedCapabilityDef);
+ newGroupTypeDefinition.setCapabilities(updatedMapCapabilities);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> updateGroupTypeResult = groupTypeOperation.updateGroupType(newGroupTypeDefinition, addGroupTypeResult.left().value());
+ assertTrue(updateGroupTypeResult.isRight());
+ assertEquals(StorageOperationStatus.MATCH_NOT_FOUND, updateGroupTypeResult.right().value());
+ }
+
+ @Test
+ public void updateGroupTypeWithCapability_Success() {
+ createRootGroupTypeNode();
+
+ PropertyDefinition property = buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance");
+
+ Map<String, PropertyDefinition> capTypeProperties = new HashMap<>();
+ capTypeProperties.put("vfc_instance_group_reference", property);
+ CapabilityTypeDefinition capabilityTypeDef = createCapabilityType(capTypeProperties);
+ Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), capabilityTypeDef.getType(), CapabilityTypeData.class);
+ extractVal(capabilityTypeResult);
+
+ GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
+ groupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ groupTypeDefinition.setDescription("groups l3-networks in network collection");
+ groupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+
+ Map<String, CapabilityDefinition> mapCapabilities = new HashMap<>();
+ property.setValue("new_value");
+ ComponentInstanceProperty capDefProperty = new ComponentInstanceProperty(property);
+ CapabilityDefinition capabilityDef = buildCapabilityDefintion(asList(capDefProperty));
+ mapCapabilities.put("vlan_assignment", capabilityDef);
+ groupTypeDefinition.setCapabilities(mapCapabilities);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition);
+ assertTrue(addGroupTypeResult.isLeft());
+
+ GroupTypeDefinition newGroupTypeDefinition = new GroupTypeDefinition();
+ newGroupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
+ newGroupTypeDefinition.setDescription("groups l3-networks in network collection");
+ newGroupTypeDefinition.setType("org.openecomp.groups.NetworkCollection");
+
+ Map<String, CapabilityDefinition> updatedMapCapabilities = new HashMap<>();
+ property.setValue("another_value");
+ ComponentInstanceProperty newCapDefProperty = new ComponentInstanceProperty(property);
+ CapabilityDefinition updatedCapabilityDef = buildCapabilityDefintion(asList(newCapDefProperty));
+ updatedMapCapabilities.put("vlan_assignment", updatedCapabilityDef);
+ newGroupTypeDefinition.setCapabilities(updatedMapCapabilities);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> updateGroupTypeResult = groupTypeOperation.updateGroupType(newGroupTypeDefinition, addGroupTypeResult.left().value());
+ assertTrue(updateGroupTypeResult.isLeft());
+ }
+
+ @Test
+ public void testUpdateGroupTypeWithDerivedFromEdge() {
+ createRootGroupTypeNode();
+
+ GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDescription("groups l2-networks in network collection");
groupTypeDefinition.setType("org.openecomp.groups.PrivateCollection");
groupTypeDefinition.setVersion("1.0");
-
+
List<PropertyDefinition> properties = singletonList(
buildProperty("network_collection_type", "l2-network", "network collection type, defined with default value"));
groupTypeDefinition.setProperties(properties );
Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
addGroupTypeResult = groupTypeOperation.getGroupTypeByTypeAndVersion("org.openecomp.groups.PrivateCollection", "1.0");
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
- Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.upgradeGroupType(groupTypeDefinition, groupTypeDefinition, true);
+ Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.updateGroupType(groupTypeDefinition, groupTypeDefinition);
assertNotNull(upgradeResult);
assertTrue(upgradeResult.isLeft());
}
@Test
- public void testUpgradeNonExistingGroupType() {
+ public void testUpdateNonExistingGroupType() {
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDerivedFrom(TOSCA_GROUPS_ROOT);
groupTypeDefinition.setDescription("groups l2-networks in network collection");
groupTypeDefinition.setType("org.openecomp.groups.MyCollection");
groupTypeDefinition.setVersion("1.0");
- Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.upgradeGroupType(groupTypeDefinition, groupTypeDefinition, true);
+ Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.updateGroupType(groupTypeDefinition, groupTypeDefinition);
assertNotNull(upgradeResult);
assertTrue(upgradeResult.isRight());
}
@Test
- public void testUpgradeNotDerivedGroupType() {
+ public void testUpdateNotDerivedGroupType() {
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDescription("groups social-networks in school");
groupTypeDefinition.setType("org.openecomp.groups.Teachers");
groupTypeDefinition.setVersion("1.0");
Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
- Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.upgradeGroupType(groupTypeDefinition, groupTypeDefinition, true);
+ Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.updateGroupType(groupTypeDefinition, groupTypeDefinition);
assertNotNull(upgradeResult);
assertTrue(upgradeResult.isLeft());
- assertEquals(groupTypeDefinition, upgradeResult.left().value());
+ assertThat(groupTypeDefinition).isEqualToIgnoringGivenFields(upgradeResult.left().value(), "properties", "capabilities");
}
@Test
- public void testUpgradeGroupTypeWithNonExistingParent() {
+ public void testUpdateGroupTypeWithNonExistingParent() {
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDescription("groups social-networks in work");
groupTypeDefinition.setType("org.openecomp.groups.Cowokers");
groupTypeDefinition.setVersion("1.0");
Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
groupTypeDefinition.setDerivedFrom("Non.existing.parent");
- Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.upgradeGroupType(groupTypeDefinition, groupTypeDefinition, true);
+ Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.updateGroupType(groupTypeDefinition, groupTypeDefinition);
assertNotNull(upgradeResult);
assertTrue(upgradeResult.isRight());
}
@@ -240,23 +477,25 @@ public class GroupTypeOperationTest extends ModelTestBase {
groupTypeDefinition.setVersion("1.0");
Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(groupTypeDefinition, true);
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
compareBetweenCreatedToSent(groupTypeDefinition, addGroupTypeResult.left().value());
GroupTypeDefinition parentGroupTypeDefinition = new GroupTypeDefinition();
parentGroupTypeDefinition.setDescription("groups social-networks in university");
parentGroupTypeDefinition.setType("org.openecomp.groups.Parents");
parentGroupTypeDefinition.setVersion("1.0");
+ parentGroupTypeDefinition.setHighestVersion(true);
+
Either<GroupTypeDefinition, StorageOperationStatus> addParentGroupTypeResult = groupTypeOperation.addGroupType(parentGroupTypeDefinition, true);
- assertEquals("check group type added", true, addParentGroupTypeResult.isLeft());
+ assertTrue("check group type added", addParentGroupTypeResult.isLeft());
compareBetweenCreatedToSent(parentGroupTypeDefinition, addParentGroupTypeResult.left().value());
groupTypeDefinition.setDerivedFrom("org.openecomp.groups.Parents");
- Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.upgradeGroupType(groupTypeDefinition, groupTypeDefinition, true);
+ Either<GroupTypeDefinition, StorageOperationStatus> upgradeResult = groupTypeOperation.updateGroupType(groupTypeDefinition, addGroupTypeResult.left().value());
assertNotNull(upgradeResult);
assertTrue(upgradeResult.isLeft());
- assertEquals(groupTypeDefinition, upgradeResult.left().value());
+ assertThat(groupTypeDefinition).isEqualToIgnoringGivenFields(upgradeResult.left().value(), "properties", "capabilities");
}
@@ -271,8 +510,8 @@ public class GroupTypeOperationTest extends ModelTestBase {
private GroupTypeData createRootGroupTypeNode() {
GroupTypeDefinition rootGroupDefinition = createRootGroupDefinition();
- Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(rootGroupDefinition, true);
- assertEquals("check group type added", true, addGroupTypeResult.isLeft());
+ Either<GroupTypeDefinition, StorageOperationStatus> addGroupTypeResult = groupTypeOperation.addGroupType(rootGroupDefinition, false);
+ assertTrue("check group type added", addGroupTypeResult.isLeft());
Either<GroupTypeData, TitanOperationStatus> groupTypeResult = titanDao.getNode(GraphPropertiesDictionary.TYPE.getProperty(), rootGroupDefinition.getType(), GroupTypeData.class);
return extractVal(groupTypeResult);
@@ -282,6 +521,7 @@ public class GroupTypeOperationTest extends ModelTestBase {
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDescription("The TOSCA Group Type all other TOSCA Group Types derive from");
groupTypeDefinition.setType(TOSCA_GROUPS_ROOT);
+ groupTypeDefinition.setHighestVersion(true);
return groupTypeDefinition;
}
@@ -289,23 +529,41 @@ public class GroupTypeOperationTest extends ModelTestBase {
GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition();
groupTypeDefinition.setDescription("description for type " + type);
groupTypeDefinition.setType(type);
+ groupTypeDefinition.setName(type + "name");
+ groupTypeDefinition.setIcon(type + "icon");
return groupTypeDefinition;
}
- private CapabilityTypeDefinition createCapabilityType() {
+ private CapabilityTypeDefinition createCapabilityType(Map<String, PropertyDefinition> properties) {
+ CapabilityTypeDefinition rootCapabilityTypeDefinition = new CapabilityTypeDefinition();
+ rootCapabilityTypeDefinition.setType("tosca.capabilities.Root");
+ rootCapabilityTypeDefinition.setDescription("Dummy root type");
+ rootCapabilityTypeDefinition.setVersion("1.0");
+ capabilityTypeOperation.addCapabilityType(rootCapabilityTypeDefinition, true);
+
+
+ CapabilityTypeDefinition parentCapabilityTypeDefinition = new CapabilityTypeDefinition();
+ parentCapabilityTypeDefinition.setType("tosca.capabilities.Parent");
+ parentCapabilityTypeDefinition.setDescription("Dummy parent type");
+ parentCapabilityTypeDefinition.setDerivedFrom("tosca.capabilities.Root");
+ parentCapabilityTypeDefinition.setVersion("1.0");
+ PropertyDefinition property = buildProperty("parentProp", "any", "Description");
+ Map<String, PropertyDefinition> capTypeProperties = new HashMap<>();
+ capTypeProperties.put("parent_prop", property);
+ parentCapabilityTypeDefinition.setProperties(capTypeProperties);
+ capabilityTypeOperation.addCapabilityType(parentCapabilityTypeDefinition, true);
+
+
CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition();
capabilityTypeDefinition.setDescription("ability to expose routing information of the internal network");
capabilityTypeDefinition.setType("org.openecomp.capabilities.VLANAssignment");
capabilityTypeDefinition.setVersion("1.0");
-
- Map<String, PropertyDefinition> properties = new HashMap<>();
- properties.put("vfc_instance_group_reference",
- buildProperty("vfc_instance_group_reference", null, "Ability to recognize capability per vfc instance group on vnf instance"));
-
+ capabilityTypeDefinition.setDerivedFrom("tosca.capabilities.Parent");
+
capabilityTypeDefinition.setProperties(properties);
Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityTypeResult = capabilityTypeOperation.addCapabilityType(capabilityTypeDefinition, true);
- assertEquals("check capability type added", true, addCapabilityTypeResult.isLeft());
+ assertTrue("check capability type added", addCapabilityTypeResult.isLeft());
CapabilityTypeDefinition capabilityTypeAdded = addCapabilityTypeResult.left().value();
compareBetweenCreatedToSent(capabilityTypeDefinition, capabilityTypeAdded);
@@ -313,6 +571,15 @@ public class GroupTypeOperationTest extends ModelTestBase {
return capabilityTypeDefinition;
}
+ private CapabilityDefinition buildCapabilityDefintion(List<ComponentInstanceProperty> properties) {
+ CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
+ capabilityDefinition.setName("vlan_assignment");
+ capabilityDefinition.setDescription("ability to expose routing information of the internal network");
+ capabilityDefinition.setType("org.openecomp.capabilities.VLANAssignment");
+ capabilityDefinition.setProperties(properties);
+ return capabilityDefinition;
+ }
+
private PropertyDefinition buildProperty(String name, String defaultValue, String description) {
PropertyDefinition property = new PropertyDefinition();
property.setName(name);
@@ -346,5 +613,201 @@ public class GroupTypeOperationTest extends ModelTestBase {
return t;
}
+
+ private void cleanUp() {
+ Either<TitanGraph, TitanOperationStatus> graphResult = titanDao.getGraph();
+ TitanGraph graph = graphResult.left().value();
+
+ Iterable<TitanVertex> vertices = graph.query().vertices();
+ if (vertices != null) {
+ Iterator<TitanVertex> iterator = vertices.iterator();
+ while (iterator.hasNext()) {
+ TitanVertex vertex = iterator.next();
+ vertex.remove();
+ }
+
+ }
+ titanDao.commit();
+ }
+
+
+ @Test
+ public void updateGroupType_returnNotFoundErrorIfTryingToUpdateANonExistingType() {
+ GroupTypeDefinition currType = createGroupTypeDef();
+ GroupTypeDefinition updatedType = createGroupTypeDef();
+ Either<GroupTypeDefinition, StorageOperationStatus> updatedGroupTypeRes = groupTypeOperation.updateGroupType(updatedType, currType);
+ assertThat(updatedGroupTypeRes.right().value()).isEqualTo(StorageOperationStatus.NOT_FOUND);
+ }
+
+ @Test
+ public void updateGroupType_basicFields() {
+ GroupTypeDefinition createdType = createGroupTypeDef("type1", "description1", NULL_STRING);
+ Either<GroupTypeDefinition, StorageOperationStatus> currGroupType = groupTypeOperation.addGroupType(createdType);
+
+ GroupTypeDefinition updatedType = createGroupTypeDef("type1", "description2", NULL_STRING);
+ updatedType.setName("newName");
+ updatedType.setIcon("icon");
+ groupTypeOperation.updateGroupType(updatedType, currGroupType.left().value());
+
+ Either<GroupTypeDefinition, StorageOperationStatus> fetchedUpdatedType = groupTypeOperation.getLatestGroupTypeByType(createdType.getType());
+ GroupTypeDefinition fetchedGroupType = fetchedUpdatedType.left().value();
+ assertThat(fetchedGroupType.getProperties()).isEmpty();
+ assertThat(fetchedGroupType)
+ .isEqualToIgnoringGivenFields(updatedType, "properties", "capabilities");
+
+ }
+
+ @Test
+ public void updateGroupType_updatePropertiesType_FailedDueAttemptToChangePropertyType() {
+ PropertyDefinition prop1 = createSimpleProperty("val1", "prop1", "string");
+ GroupTypeDefinition groupType = createGroupTypeDef(prop1);
+ Either<GroupTypeDefinition, StorageOperationStatus> currGroupType = groupTypeOperation.addGroupType(groupType);
+
+ PropertyDefinition updatedProp1 = duplicateProperty(prop1, "newVal1", "int");
+ PropertyDefinition prop3 = createSimpleProperty("val3", "prop3", "string");
+ GroupTypeDefinition updatedGroupType = createGroupTypeDef(updatedProp1, prop3);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> updatedGroupTypeRetrieved = groupTypeOperation.updateGroupType(updatedGroupType, currGroupType.left().value());
+ assertEquals(StorageOperationStatus.MATCH_NOT_FOUND, updatedGroupTypeRetrieved.right().value());
+ }
+
+ @Test
+ public void validateGroupType_FailedDueAttempToCreateGroupTypeWithPropertyWhichTypeIsDifferentFromTypeOfParentPropertyWithTheSameName() {
+ GroupTypeDefinition rootGroupType = createGroupTypeDef();
+ Either<GroupTypeDefinition, StorageOperationStatus> rootGroupTypeRes = groupTypeOperation.addGroupType(rootGroupType);
+ assertTrue(rootGroupTypeRes.isLeft());
+
+ PropertyDefinition prop = createSimpleProperty("val1", "prop", "string");
+ GroupTypeDefinition groupType1 = createGroupTypeDef("type1", "descr1", rootGroupType.getType(), prop);
+ Either<GroupTypeDefinition, StorageOperationStatus> groupType1Res = groupTypeOperation.addGroupType(groupType1);
+ assertTrue(groupType1Res.isLeft());
+
+ PropertyDefinition prop1 = createSimpleProperty("33", "prop", "int");
+ PropertyDefinition prop2 = createSimpleProperty("val2", "prop2", "string");
+ GroupTypeDefinition groupType2 = createGroupTypeDef("type2", "descr", groupType1.getType(), prop1, prop2);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> updatedGroupTypeRetrieved = groupTypeOperation.validateUpdateProperties(groupType2);
+ assertEquals(StorageOperationStatus.PROPERTY_NAME_ALREADY_EXISTS, updatedGroupTypeRetrieved.right().value());
+ }
+
+ @Test
+ public void updateGroupType_derivedFrom_whenNoPrevDerivedFrom_updateToNewDerivedFrom() {
+ GroupTypeDefinition rootGroupType = createGroupTypeDef();
+ GroupTypeDefinition groupType1 = createGroupTypeDef("type1", "descr", NULL_STRING);
+ GroupTypeDefinition updatedGroupType = createGroupTypeDef("type1", "descr", rootGroupType.getType());
+ groupTypeOperation.addGroupType(rootGroupType);
+ Either<GroupTypeDefinition, StorageOperationStatus> currGroupType = groupTypeOperation.addGroupType(groupType1);
+ groupTypeOperation.updateGroupType(updatedGroupType, currGroupType.left().value());
+
+ Either<GroupTypeDefinition, StorageOperationStatus> latestGroupType = groupTypeOperation.getLatestGroupTypeByType(groupType1.getType());
+ assertThat(latestGroupType.left().value().getDerivedFrom()).isEqualTo(rootGroupType.getType());
+ verifyDerivedFromNodeEqualsToRootGroupType(rootGroupType, latestGroupType.left().value().getUniqueId());
+ }
+
+ @Test
+ public void updateGroupType_derivedFrom_updateToNullDerivedFrom_derivedFromDeleted_Failed() {
+ GroupTypeDefinition rootGroupType = createGroupTypeDef();
+ GroupTypeDefinition groupType1 = createGroupTypeDef("type1", "descr", rootGroupType.getType());
+ GroupTypeDefinition updatedGroupType = createGroupTypeDef("type1", "descr", null, new PropertyDefinition[]{});
+ groupTypeOperation.addGroupType(rootGroupType);
+ Either<GroupTypeDefinition, StorageOperationStatus> currGroupType = groupTypeOperation.addGroupType(groupType1);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> updateGroupTypeRes = groupTypeOperation.updateGroupType(updatedGroupType, currGroupType.left().value());
+ assertThat(updateGroupTypeRes.right().value()).isEqualTo(StorageOperationStatus.NOT_FOUND);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> latestGroupType = groupTypeOperation.getLatestGroupTypeByType(groupType1.getType());
+ assertThat(latestGroupType.left().value().getDerivedFrom()).isEqualTo(rootGroupType.getType());
+ }
+
+ @Test
+ public void updateGroupType_updateDerivedFrom() {
+ GroupTypeDefinition rootGroupType = createGroupTypeDef();
+ GroupTypeDefinition derivedType1 = createGroupTypeDef("derivedType1", "descr", rootGroupType.getType());
+ GroupTypeDefinition groupType1 = createGroupTypeDef("type1", "descr", rootGroupType.getType());
+ GroupTypeDefinition updatedGroupType = createGroupTypeDef("type1", "descr", derivedType1.getType());
+
+ groupTypeOperation.addGroupType(rootGroupType);
+ groupTypeOperation.addGroupType(derivedType1);
+ Either<GroupTypeDefinition, StorageOperationStatus> currGroupType = groupTypeOperation.addGroupType(groupType1);
+
+ groupTypeOperation.updateGroupType(updatedGroupType, currGroupType.left().value());
+
+ Either<GroupTypeDefinition, StorageOperationStatus> latestGroupType = groupTypeOperation.getLatestGroupTypeByType(groupType1.getType());
+ assertThat(latestGroupType.left().value().getDerivedFrom()).isEqualTo(derivedType1.getType());
+ }
+ @Test
+ public void updateGroupType_updateDerivedFrom_CauseEndlessRecursion() {
+ GroupTypeDefinition rootGroupType = createGroupTypeDef();
+ GroupTypeDefinition derivedType1 = createGroupTypeDef("derivedType1", "descr", rootGroupType.getType());
+ GroupTypeDefinition groupType1 = createGroupTypeDef("type1", "descr", derivedType1.getType());
+ GroupTypeDefinition updatedGroupType = createGroupTypeDef("derivedType1", "descr", groupType1.getType());
+
+ groupTypeOperation.addGroupType(rootGroupType);
+ Either<GroupTypeDefinition, StorageOperationStatus> currGroupType = groupTypeOperation.addGroupType(derivedType1);
+ groupTypeOperation.addGroupType(groupType1);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> updateResult = groupTypeOperation.updateGroupType(updatedGroupType, currGroupType.left().value());
+ assertThat(updateResult.right().value()).isEqualTo(StorageOperationStatus.GENERAL_ERROR);
+
+ Either<GroupTypeDefinition, StorageOperationStatus> latestGroupType = groupTypeOperation.getLatestGroupTypeByType(updatedGroupType.getType());
+ assertThat(latestGroupType.left().value().getDerivedFrom()).isEqualTo(rootGroupType.getType());
+ }
+
+ private PropertyDefinition duplicateProperty(PropertyDefinition prop1, String updatedValue, String updatedType) {
+ PropertyDefinition updatedProp1 = new PropertyDefinition(prop1);
+ updatedProp1.setUniqueId(null);
+ updatedProp1.setDefaultValue(updatedValue);
+ updatedProp1.setType(updatedType);
+ return updatedProp1;
+ }
+
+ private void verifyDerivedFromNodeEqualsToRootGroupType(GroupTypeDefinition rootGroupType, String parentGroupId) {
+ Either<ImmutablePair<GroupTypeData, GraphEdge>, TitanOperationStatus> derivedFromRelation = titanDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupType), parentGroupId, GraphEdgeLabels.DERIVED_FROM,
+ NodeTypeEnum.GroupType, GroupTypeData.class);
+ assertThat(derivedFromRelation.left().value().getLeft().getGroupTypeDataDefinition())
+ .isEqualToComparingFieldByField(rootGroupType);
+ }
+
+ private void verifyDerivedFromRelationDoesntExist(String parentGroupId) {
+ Either<ImmutablePair<GroupTypeData, GraphEdge>, TitanOperationStatus> derivedFromRelation = titanDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupType), parentGroupId, GraphEdgeLabels.DERIVED_FROM,
+ NodeTypeEnum.GroupType, GroupTypeData.class);
+ assertThat(derivedFromRelation.right().value())
+ .isEqualTo(TitanOperationStatus.NOT_FOUND);
+ }
+
+ private GroupTypeDefinition createGroupTypeDef() {
+ return createGroupTypeDef("tosca.groups.Root", "description: The TOSCA Group Type all other TOSCA Group Types derive from", null, new PropertyDefinition[]{});
+ }
+
+ private GroupTypeDefinition createGroupTypeDef(PropertyDefinition ... props) {
+ return createGroupTypeDef("tosca.groups.Root", null, props);
+ }
+
+ private GroupTypeDefinition createGroupTypeDef(String type, String derivedFrom, PropertyDefinition ... props) {
+ GroupTypeDefinition groupType = createGroupTypeDef(type, "description: The TOSCA Group Type all other TOSCA Group Types derive from", derivedFrom);
+ groupType.setProperties(asList(props));
+ return groupType;
+ }
+
+ private GroupTypeDefinition createGroupTypeDef(String type, String description, String derivedFrom) {
+ return createGroupTypeDef(type, description, derivedFrom, null);
+ }
+
+ private GroupTypeDefinition createGroupTypeDef(String type, String description, String derivedFrom, PropertyDefinition ... props) {
+ GroupTypeDataDefinition groupTypeDataDefinition = new GroupTypeDataDefinition();
+ groupTypeDataDefinition.setDescription(description);
+ groupTypeDataDefinition.setType(type);
+ groupTypeDataDefinition.setName(type + "name");
+ groupTypeDataDefinition.setIcon(type + "icon");
+ groupTypeDataDefinition.setDerivedFrom(derivedFrom);
+ GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition(groupTypeDataDefinition);
+ groupTypeDefinition.setHighestVersion(true);
+ groupTypeDefinition.setVersion("1.0");
+ if (props != null) {
+ groupTypeDefinition.setProperties(asList(props));
+ }
+ return groupTypeDefinition;
+ }
+
}