package org.onap.aai.serialization.db;
-import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.*;
import org.junit.Test;
import org.onap.aai.AAISetup;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Set;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.T;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
import org.junit.Rule;
import org.junit.rules.ExpectedException;
+import org.onap.aai.db.props.AAIProperties;
import org.onap.aai.exceptions.AAIException;
import org.onap.aai.introspection.Version;
import org.onap.aai.serialization.db.exceptions.EdgeMultiplicityException;
EdgeRules rules = EdgeRules.getInstance();
EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, "cloud-region", "flavor");
- assertEquals("out direction", rule.getDirection(), Direction.OUT);
+ assertEquals("out direction", rule.getDirection(), Direction.IN);
}
@Test
EdgeRules rules = EdgeRules.getInstance();
EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, "flavor", "cloud-region");
- assertEquals("in direction", rule.getDirection(), Direction.IN);
+ assertEquals("in direction", rule.getDirection(), Direction.OUT);
}
@Test
EdgeRules rules = EdgeRules.getInstance();
EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "model-ver", "model-element");
- assertEquals("in direction", rule.getDirection(), Direction.IN);
+ assertEquals("in direction", Direction.IN, rule.getDirection());
}
@Test
EdgeRules rules = EdgeRules.getInstance();
EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "model-element", "model-ver");
- assertEquals("out direction", rule.getDirection(), Direction.OUT);
+ assertEquals("out direction", Direction.OUT, rule.getDirection());
}
@Test
public void verifyMultipleGet() throws AAIException {
EdgeRules rules = EdgeRules.getInstance();
Map<String, EdgeRule> ruleMap = rules.getEdgeRules("model-element", "model-ver");
- assertEquals("has isA rule", "isA", ruleMap.get("isA").getLabel());
- assertEquals("has startsWith rule", "startsWith", ruleMap.get("startsWith").getLabel());
+ assertEquals("has isA rule", "org.onap.relationships.inventory.IsA",
+ ruleMap.get("org.onap.relationships.inventory.IsA").getLabel());
+ assertEquals("has startsWith rule", "org.onap.relationships.inventory.BelongsTo",
+ ruleMap.get("org.onap.relationships.inventory.BelongsTo").getLabel());
}
@Test
public void verifyMultipleGetSingleRule() throws AAIException {
EdgeRules rules = EdgeRules.getInstance();
Map<String, EdgeRule> ruleMap = rules.getEdgeRules("availability-zone", "complex");
- assertEquals("has groupsResourcesIn rule", "groupsResourcesIn", ruleMap.get("groupsResourcesIn").getLabel());
+
+ assertEquals("has org.onap.relationships.inventory.LocatedIn rule", "org.onap.relationships.inventory.LocatedIn",
+ ruleMap.get("org.onap.relationships.inventory.LocatedIn").getLabel());
}
@Test
assertEquals("true: pserver | complex", true, EdgeRules.getInstance().hasEdgeRule("pserver", "complex"));
assertEquals("false: pserver | service", false, EdgeRules.getInstance().hasEdgeRule("pserver", "service"));
}
-
+
@Test
public void hasTreeEdgeRuleTest() {
assertEquals("true: cloud-region | tenant", true, EdgeRules.getInstance().hasTreeEdgeRule("cloud-region", "tenant"));
assertEquals("true: service-instance | allotted-resource", true, EdgeRules.getInstance().hasTreeEdgeRule("service-instance", "allotted-resource"));
}
-
+
@Test
public void hasCousinEdgeRuleTest() {
assertEquals("false: cloud-region | tenant", false, EdgeRules.getInstance().hasCousinEdgeRule("cloud-region", "tenant", null));
assertEquals("true: pserver | complex", true, EdgeRules.getInstance().hasCousinEdgeRule("pserver", "complex", null));
assertEquals("true: service-instance | allotted-resource", true, EdgeRules.getInstance().hasCousinEdgeRule("service-instance", "allotted-resource", null));
assertEquals("true: logical-link | l-interface", true, EdgeRules.getInstance().hasCousinEdgeRule("logical-link", "l-interface", null));
- assertEquals("true: logical-link | l-interface : sourceLInterface", true, EdgeRules.getInstance().hasCousinEdgeRule("logical-link", "l-interface", "sourceLInterface"));
- assertEquals("true: logical-link | l-interface : targetLInterface", true, EdgeRules.getInstance().hasCousinEdgeRule("logical-link", "l-interface", "targetLInterface"));
+ assertEquals("true: logical-link | l-interface : sourceLInterface", true, EdgeRules.getInstance().hasCousinEdgeRule("logical-link", "l-interface", "org.onap.relationships.inventory.Source"));
+ assertEquals("true: logical-link | l-interface : targetLInterface", true, EdgeRules.getInstance().hasCousinEdgeRule("logical-link", "l-interface", "org.onap.relationships.inventory.Destination"));
assertEquals("false: logical-link | l-interface : blah", false, EdgeRules.getInstance().hasCousinEdgeRule("logical-link", "l-interface", "blah"));
}
-
+
@Test
public void hasEdgeRuleVertexTest() {
Graph graph = TinkerGraph.open();
Vertex v2 = graph.addVertex("aai-node-type", "tenant");
EdgeRules rules = EdgeRules.getInstance();
EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, v1, v2);
- assertEquals(true, "OUT".equalsIgnoreCase(rule.getContains()));
- assertEquals(true, "OUT".equalsIgnoreCase(rule.getDeleteOtherV()));
- assertEquals(true, MultiplicityRule.ONE2MANY.equals(rule.getMultiplicityRule()));
- assertEquals(true, "IN".equalsIgnoreCase(rule.getServiceInfrastructure()));
- assertEquals(true, "OUT".equalsIgnoreCase(rule.getPreventDelete()));
+ assertEquals(true, "IN".equalsIgnoreCase(rule.getContains()));
+ assertEquals(true, "NONE".equalsIgnoreCase(rule.getDeleteOtherV()));
+ assertEquals(true, MultiplicityRule.MANY2ONE.equals(rule.getMultiplicityRule()));
+ assertEquals(true, "OUT".equalsIgnoreCase(rule.getServiceInfrastructure()));
+ assertEquals(true, "IN".equalsIgnoreCase(rule.getPreventDelete()));
}
@Test
EdgeRules rules = EdgeRules.getInstance();
GraphTraversalSource g = graph.traversal();
rules.addTreeEdge(g, v1, v2);
- assertEquals(true, g.V(v1).out("has").has("aai-node-type", "tenant").hasNext());
+ assertEquals(true, g.V(v1).in("org.onap.relationships.inventory.BelongsTo").has("aai-node-type", "tenant").hasNext());
Vertex v3 = graph.addVertex(T.id, "2", "aai-node-type", "cloud-region");
assertEquals(null, rules.addTreeEdgeIfPossible(g, v3, v2));
EdgeRules rules = EdgeRules.getInstance(Version.getLatest());
GraphTraversalSource g = graph.traversal();
rules.addEdge(g, v1, v2);
- assertEquals(true, g.V(v2).out("hasFlavor").has("aai-node-type", "flavor").hasNext());
+ assertEquals(true, g.V(v2).out("org.onap.relationships.inventory.Uses").has("aai-node-type", "flavor").hasNext());
Vertex v3 = graph.addVertex(T.id, "2", "aai-node-type", "flavor");
assertEquals(null, rules.addEdgeIfPossible(g, v3, v2));
@Test
public void multiplicityViolationTest() throws AAIException {
thrown.expect(EdgeMultiplicityException.class);
- thrown.expectMessage("multiplicity rule violated: only one edge can exist with label: uses between vf-module and volume-group");
+ thrown.expectMessage("multiplicity rule violated: only one edge can exist with label: org.onap.relationships.inventory.Uses between vf-module and volume-group");
Graph graph = TinkerGraph.open();
Vertex v1 = graph.addVertex(T.id, "1", "aai-node-type", "vf-module");
public void getAllRulesTest() {
EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json");
Multimap<String, EdgeRule> allRules = rules.getAllRules();
- assertEquals(14, allRules.size());
+ assertEquals(16, allRules.size());
assertEquals(true, allRules.containsKey("foo|bar"));
assertEquals(true, allRules.containsKey("foo|bar"));
assertEquals(true, allRules.containsKey("quux|foo"));
// so if any required properties are missing, the verification builds
// will catch it and incorrect rules can't get merged in.
for (Version v : Version.values()) {
+ // NOt adding descriptions prior to v12
+ switch (v.toString()) {
+ case "v7":
+ case "v8":
+ case "v9":
+ case "v10":
+ case "v11":
+ continue;
+ }
EdgeRules rules = EdgeRules.getInstance(v);
rules.getAllRules();
}
@Test
public void verifyOutDirectionUsingLabel() throws AAIException, NoEdgeRuleFoundException {
EdgeRules rules = EdgeRules.getInstance();
- EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "generic-vnf", "l3-network", "usesL3Network");
+ EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "generic-vnf", "l3-network", "org.onap.relationships.inventory.Uses");
assertEquals("out direction", rule.getDirection(), Direction.OUT);
}
@Test
- public void verifyOutDirectionLinterfaceToLinterfaceUsingLabel() throws AAIException, NoEdgeRuleFoundException {
+ public void verifyInDirectionLinterfaceToLinterfaceUsingLabel() throws AAIException, NoEdgeRuleFoundException {
EdgeRules rules = EdgeRules.getInstance();
EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, "l-interface", "l-interface");
- assertEquals("out direction", rule.getDirection(), Direction.OUT);
+ assertEquals("in direction", rule.getDirection(), Direction.IN);
}
@Test
public void verifyOutFlippedDirectionUsingLabel() throws AAIException, NoEdgeRuleFoundException {
EdgeRules rules = EdgeRules.getInstance();
- EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "l3-network", "generic-vnf", "usesL3Network");
+ EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "l3-network", "generic-vnf", "org.onap.relationships.inventory.Uses");
assertEquals("in direction", rule.getDirection(), Direction.IN);
}
Map<String, EdgeRule> edgeRules = rules.getEdgeRulesWithLabels(EdgeType.COUSIN, "generic-vnf", "vnfc", labels);
}
+ @Test
+ public void addEdgeVerifyAAIUUIDCousinTest() throws AAIException {
+ Graph graph = TinkerGraph.open();
+ Vertex v1 = graph.addVertex(T.id, "1", "aai-node-type", "flavor");
+ Vertex v2 = graph.addVertex(T.id, "10", "aai-node-type", "vserver");
+ EdgeRules rules = EdgeRules.getInstance(Version.getLatest());
+ GraphTraversalSource g = graph.traversal();
+ Edge e = rules.addEdge(g, v1, v2);
+ assertTrue(e.property(AAIProperties.AAI_UUID).isPresent());
+ //assertTrue(e.property(AAIProperties.AAI_UUID).value().toString().matches("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"));
+ }
+
+ @Test
+ public void addEdgeVerifyAAIUUIDTreeTest() throws AAIException {
+ Graph graph = TinkerGraph.open();
+ Vertex v1 = graph.addVertex(T.id, "1", "aai-node-type", "tenant");
+ Vertex v2 = graph.addVertex(T.id, "10", "aai-node-type", "vserver");
+ EdgeRules rules = EdgeRules.getInstance(Version.getLatest());
+ GraphTraversalSource g = graph.traversal();
+ Edge e = rules.addTreeEdge(g, v1, v2);
+ assertTrue(e.property(AAIProperties.AAI_UUID).isPresent());
+ //assertTrue(e.property(AAIProperties.AAI_UUID).value().toString().matches("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"));
+ }
+
}