X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=aai-core%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Faai%2Fserialization%2Fdb%2FEdgeRulesTest.java;fp=aai-core%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Faai%2Fserialization%2Fdb%2FEdgeRulesTest.java;h=0000000000000000000000000000000000000000;hb=a86d6a6644d6de3f3f814cd6e25cfe2213d5dd05;hp=60691acbc49a55fc18de7d172f8ca84c61261e51;hpb=a395fa69a28a04d0a667fe458b4f10497a1d6794;p=aai%2Faai-common.git diff --git a/aai-core/src/test/java/org/onap/aai/serialization/db/EdgeRulesTest.java b/aai-core/src/test/java/org/onap/aai/serialization/db/EdgeRulesTest.java deleted file mode 100644 index 60691acb..00000000 --- a/aai-core/src/test/java/org/onap/aai/serialization/db/EdgeRulesTest.java +++ /dev/null @@ -1,367 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.serialization.db; - - -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.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -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; -import org.onap.aai.serialization.db.exceptions.MultipleEdgeRuleFoundException; -import org.onap.aai.serialization.db.exceptions.NoEdgeRuleFoundException; - -import com.google.common.collect.Multimap; - -public class EdgeRulesTest extends AAISetup { - - //set thrown.expect to whatever a specific test needs - //this establishes a default of expecting no exceptions to be thrown - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Test - public void verifyOutDirection() throws AAIException, NoEdgeRuleFoundException { - EdgeRules rules = EdgeRules.getInstance(); - EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, "cloud-region", "flavor"); - - assertEquals("out direction", rule.getDirection(), Direction.IN); - } - - @Test - public void verifyOutFlippedDirection() throws AAIException, NoEdgeRuleFoundException { - EdgeRules rules = EdgeRules.getInstance(); - EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, "flavor", "cloud-region"); - - assertEquals("in direction", rule.getDirection(), Direction.OUT); - } - - @Test - public void verifyInDirection() throws AAIException, NoEdgeRuleFoundException { - EdgeRules rules = EdgeRules.getInstance(); - EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "model-ver", "model-element"); - - assertEquals("in direction", Direction.IN, rule.getDirection()); - } - - @Test - public void verifyInFlippedDirection() throws AAIException, NoEdgeRuleFoundException { - EdgeRules rules = EdgeRules.getInstance(); - EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "model-element", "model-ver"); - - assertEquals("out direction", Direction.OUT, rule.getDirection()); - } - @Test - public void verifyMultipleGet() throws AAIException { - EdgeRules rules = EdgeRules.getInstance(); - Map ruleMap = rules.getEdgeRules("model-element", "model-ver"); - 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 ruleMap = rules.getEdgeRules("availability-zone", "complex"); - - assertEquals("has org.onap.relationships.inventory.LocatedIn rule", "org.onap.relationships.inventory.LocatedIn", - ruleMap.get("org.onap.relationships.inventory.LocatedIn").getLabel()); - } - - @Test - public void verifyOldEdgeRule() throws AAIException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException { - assertEquals(true, EdgeRules.getInstance().hasEdgeRule("model-element", "model-ver")); - assertEquals(true, EdgeRules.getInstance(Version.v8).hasEdgeRule("pserver", "complex")); - assertEquals(false, EdgeRules.getInstance(Version.v8).hasEdgeRule("model-element", "model-ver")); - } - - @Test - public void hasEdgeRuleTest() { - assertEquals("true: cloud-region | tenant", true, EdgeRules.getInstance().hasEdgeRule("cloud-region", "tenant")); - assertEquals("true: tenant | cloud-region", true, EdgeRules.getInstance().hasEdgeRule("tenant", "cloud-region")); - 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: tenant | cloud-region", true, EdgeRules.getInstance().hasTreeEdgeRule("tenant", "cloud-region")); - assertEquals("false: pserver | complex", false, EdgeRules.getInstance().hasTreeEdgeRule("pserver", "complex")); - 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("false: tenant | cloud-region", false, EdgeRules.getInstance().hasCousinEdgeRule("tenant", "cloud-region", 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", "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 v1 = graph.addVertex("aai-node-type", "cloud-region"); - Vertex v2 = graph.addVertex("aai-node-type", "tenant"); - assertEquals(true, EdgeRules.getInstance().hasEdgeRule(v1, v2)); - } - - @Test - public void getEdgeRuleByTypeAndVertices() throws AAIException { - Graph graph = TinkerGraph.open(); - Vertex v1 = graph.addVertex("aai-node-type", "cloud-region"); - Vertex v2 = graph.addVertex("aai-node-type", "tenant"); - EdgeRules rules = EdgeRules.getInstance(); - EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, v1, v2); - assertEquals(true, "IN".equalsIgnoreCase(rule.getContains())); - assertEquals(true, "NONE".equalsIgnoreCase(rule.getDeleteOtherV())); - assertEquals(true, MultiplicityRule.MANY2ONE.equals(rule.getMultiplicityRule())); - assertEquals(true, "IN".equalsIgnoreCase(rule.getPreventDelete())); - } - - @Test - public void addTreeEdgeTest() throws AAIException { - Graph graph = TinkerGraph.open(); - Vertex v1 = graph.addVertex(T.id, "1", "aai-node-type", "cloud-region"); - Vertex v2 = graph.addVertex(T.id, "10", "aai-node-type", "tenant"); - EdgeRules rules = EdgeRules.getInstance(); - GraphTraversalSource g = graph.traversal(); - rules.addTreeEdge(g, v1, v2); - 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)); - } - - @Test - public void addCousinEdgeTest() 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(); - rules.addEdge(g, v1, v2); - 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: 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"); - Vertex v2 = graph.addVertex(T.id, "10", "aai-node-type", "volume-group"); - EdgeRules rules = EdgeRules.getInstance(Version.getLatest()); - GraphTraversalSource g = graph.traversal(); - - rules.addEdge(g, v2, v1); - Vertex v3 = graph.addVertex(T.id, "3", "aai-node-type", "vf-module"); - rules.addEdge(g, v2, v3); - } - - @Test - public void getChildrenTest() { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - Set children = rules.getChildren("foo"); - assertEquals(2, children.size()); - boolean sawBazRule = false; - boolean sawQuuxRule = false; - for (EdgeRule r : children) { - if ("isVeryHappyAbout".equals(r.getLabel())) { - sawBazRule = true; - } else if ("dancesWith".equals(r.getLabel())) { - sawQuuxRule = true; - } - } - assertEquals(true, sawBazRule && sawQuuxRule); - } - - @Test - public void getAllRulesTest() { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - Multimap allRules = rules.getAllRules(); - assertEquals(16, allRules.size()); - assertEquals(true, allRules.containsKey("foo|bar")); - assertEquals(true, allRules.containsKey("foo|bar")); - assertEquals(true, allRules.containsKey("quux|foo")); - } - - @Test - public void getAllRulesMissingPropertyTest() { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test_broken.json"); - - thrown.expect(RuntimeException.class); - thrown.expectMessage("org.onap.aai.exceptions.AAIException: Rule between foo and bar is missing property delete-other-v."); - rules.getAllRules(); - } - - @Test - public void verifyAllRules() { - // This will cause every rule in the real json files to be verified - // 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(expected = NoEdgeRuleFoundException.class) - public void noEdgeRuleFoundTest() throws AAIException { - EdgeRules rules = EdgeRules.getInstance(); - rules.getEdgeRule(EdgeType.TREE, "a", "b"); - } - - @Test - public void verifyOutDirectionUsingLabel() throws AAIException, NoEdgeRuleFoundException { - EdgeRules rules = EdgeRules.getInstance(); - 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 verifyInDirectionLinterfaceToLinterfaceUsingLabel() throws AAIException, NoEdgeRuleFoundException { - EdgeRules rules = EdgeRules.getInstance(); - EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, "l-interface", "l-interface"); - - 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", "org.onap.relationships.inventory.Uses"); - - assertEquals("in direction", rule.getDirection(), Direction.IN); - } - - @Test(expected = MultipleEdgeRuleFoundException.class) - public void multipleEdgeRulesVerifyMultipleEdgeRuleException() throws AAIException { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - rules.getEdgeRule(EdgeType.COUSIN, "foo", "bar"); - } - - @Test - public void multipleEdgeRulesVerifyGetRuleWithLabel() throws AAIException { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "foo", "bar", "eatz"); - assertEquals("in direction", rule.getDirection(), Direction.IN); - } - - @Test - public void multipleEdgeRulesVerifyGetRuleWithOutLabelDefaults() throws AAIException { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "a", "b"); - assertEquals("in direction", rule.getLabel(), "d"); - } - - @Test - public void multipleEdgeRulesRevVerifyGetRuleWithOutLabelDefaults() throws AAIException { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "z", "y"); - assertEquals("in direction", rule.getLabel(), "w"); - } - - @Test - public void multipleEdgeRulesRevRevVerifyGetRuleWithOutLabelDefaults() throws AAIException { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - EdgeRule rule = rules.getEdgeRule(EdgeType.COUSIN, "y", "z"); - assertEquals("in direction", rule.getLabel(), "w"); - } - - @Test - public void getEdgeRulesWithLabelsTest() throws AAIException { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - List labels = Arrays.asList("uses","re-uses","over-uses"); - Map edgeRules = rules.getEdgeRulesWithLabels(EdgeType.COUSIN, "generic-vnf", "vnfc", labels); - assertEquals("Found 3 edge rules", 3, edgeRules.size()); - assertTrue("Rules for each edge label found", edgeRules.keySet().containsAll(labels)); - } - - @Test(expected = NoEdgeRuleFoundException.class) - public void getEdgeRulesWithLabelsBadLabelTest() throws AAIException { - EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); - List labels = Arrays.asList("bad","re-uses","over-uses"); - Map 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}$")); - } - -}