Sync the latest code changes
[aai/aai-common.git] / aai-core / src / test / java / org / onap / aai / serialization / db / EdgeRulesTest.java
index bc6a721..773b9cd 100644 (file)
 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;
 
@@ -34,13 +35,11 @@ import java.util.Map;
 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;
@@ -61,7 +60,7 @@ public class EdgeRulesTest extends AAISetup {
                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
@@ -69,7 +68,7 @@ public class EdgeRulesTest extends AAISetup {
                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
@@ -77,7 +76,7 @@ public class EdgeRulesTest extends AAISetup {
                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
@@ -85,21 +84,25 @@ public class EdgeRulesTest extends AAISetup {
                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
@@ -116,7 +119,7 @@ public class EdgeRulesTest extends AAISetup {
                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"));
@@ -125,7 +128,7 @@ public class EdgeRulesTest extends AAISetup {
                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));
@@ -133,11 +136,11 @@ public class EdgeRulesTest extends AAISetup {
                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();
@@ -153,11 +156,11 @@ public class EdgeRulesTest extends AAISetup {
                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
@@ -168,7 +171,7 @@ public class EdgeRulesTest extends AAISetup {
                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));
@@ -182,7 +185,7 @@ public class EdgeRulesTest extends AAISetup {
                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));
@@ -191,7 +194,7 @@ public class EdgeRulesTest extends AAISetup {
        @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");
@@ -225,7 +228,7 @@ public class EdgeRulesTest extends AAISetup {
        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"));
@@ -263,6 +266,15 @@ public class EdgeRulesTest extends AAISetup {
                // 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();
                }
@@ -277,23 +289,23 @@ public class EdgeRulesTest extends AAISetup {
     @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);
     }
@@ -348,4 +360,28 @@ public class EdgeRulesTest extends AAISetup {
                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}$"));
+       }
+
 }