From 8dcb9900cae95a17ca6d029a665d512b3e7b11a2 Mon Sep 17 00:00:00 2001 From: "Threefoot, Jane (jt6620)" Date: Tue, 28 Nov 2017 14:02:53 -0500 Subject: contains-other-v no longer implies delete-other-v Deletion of other vertices is now only determined by the delete-other-v property. For containment relationships, this property is now explicitly set instead of being implied by the containment property. ie Deletion now only checks delete-other-v not containment, and containment relationships have been updated to still function the same as before. Issue-ID: AAI-517 Change-Id: I808752c286c621f82b521590b1a51cf996031557 Signed-off-by: Threefoot, Jane (jt6620) --- .../onap/aai/serialization/db/EdgeRulesTest.java | 4 +- .../query/GraphTraversalQueryEngineTest.java | 75 ++++++++++++++++++++++ 2 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 aai-core/src/test/java/org/onap/aai/serialization/engines/query/GraphTraversalQueryEngineTest.java (limited to 'aai-core/src/test/java') 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 index 4bf6a6c2..e007f027 100644 --- 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 @@ -121,7 +121,7 @@ public class EdgeRulesTest extends AAISetup { EdgeRules rules = EdgeRules.getInstance(); EdgeRule rule = rules.getEdgeRule(EdgeType.TREE, v1, v2); assertEquals(true, "OUT".equalsIgnoreCase(rule.getContains())); - assertEquals(true, "NONE".equalsIgnoreCase(rule.getDeleteOtherV())); + 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())); @@ -192,7 +192,7 @@ public class EdgeRulesTest extends AAISetup { public void getAllRulesTest() { EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); Multimap allRules = rules.getAllRules(); - assertEquals(3, allRules.size()); + assertEquals(6, allRules.size()); assertEquals(true, allRules.containsKey("foo|bar")); assertEquals(true, allRules.containsKey("foo|bar")); assertEquals(true, allRules.containsKey("quux|foo")); diff --git a/aai-core/src/test/java/org/onap/aai/serialization/engines/query/GraphTraversalQueryEngineTest.java b/aai-core/src/test/java/org/onap/aai/serialization/engines/query/GraphTraversalQueryEngineTest.java new file mode 100644 index 00000000..4e3b7d0f --- /dev/null +++ b/aai-core/src/test/java/org/onap/aai/serialization/engines/query/GraphTraversalQueryEngineTest.java @@ -0,0 +1,75 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.aai.serialization.engines.query; + +import static org.junit.Assert.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +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.Test; +import org.onap.aai.exceptions.AAIException; +import org.onap.aai.serialization.db.EdgeRules; + +public class GraphTraversalQueryEngineTest { + + @Test + public void testFindDeletable() throws AAIException { + //setup + EdgeRules rules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_test.json"); + + Graph graph = TinkerGraph.open(); + Vertex parent = graph.addVertex(T.id, "00", "aai-node-type", "test-parent"); + Vertex child = graph.addVertex(T.id, "10", "aai-node-type", "test-child"); + Vertex cousin = graph.addVertex(T.id, "20", "aai-node-type", "test-cousin"); + Vertex grandchild = graph.addVertex(T.id, "30", "aai-node-type", "test-grandchild"); + + GraphTraversalSource g = graph.traversal(); + + rules.addTreeEdge(g, parent, child); //delete-other-v=none, no cascade + rules.addTreeEdge(g, child, grandchild); //d-o-v=out, yes from child + rules.addEdge(g, cousin, child); //d-o-v=out, yes from cousin + + List parentExpected = new ArrayList<>(Arrays.asList(parent)); + List childExpected = new ArrayList<>(Arrays.asList(child, grandchild)); + List cousinExpected = new ArrayList<>(Arrays.asList(cousin, child, grandchild)); + + GraphTraversalQueryEngine engine = new GraphTraversalQueryEngine(g); + + //tests + List parentDeletes = engine.findDeletable(parent); + assertTrue(parentExpected.containsAll(parentDeletes) && parentDeletes.containsAll(parentExpected)); + + List childDeletes = engine.findDeletable(child); + assertTrue(childExpected.containsAll(childDeletes) && childDeletes.containsAll(childExpected)); + + List cousinDeletes = engine.findDeletable(cousin); + assertTrue(cousinExpected.containsAll(cousinDeletes) && cousinDeletes.containsAll(cousinExpected)); + } +} -- cgit 1.2.3-korg