diff options
author | Threefoot, Jane (jt6620) <jt6620@att.com> | 2017-11-28 14:02:53 -0500 |
---|---|---|
committer | Threefoot, Jane (jt6620) <jt6620@att.com> | 2017-11-28 15:06:53 -0500 |
commit | 8dcb9900cae95a17ca6d029a665d512b3e7b11a2 (patch) | |
tree | 49de3c6bda8582b24ccf708bc05405256cd71669 /aai-core/src/test | |
parent | d65ec2eb24496c2eb901e7c18826c48041ca2c74 (diff) |
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) <jt6620@att.com>
Diffstat (limited to 'aai-core/src/test')
3 files changed, 110 insertions, 2 deletions
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<String, EdgeRule> 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<Vertex> parentExpected = new ArrayList<>(Arrays.asList(parent)); + List<Vertex> childExpected = new ArrayList<>(Arrays.asList(child, grandchild)); + List<Vertex> cousinExpected = new ArrayList<>(Arrays.asList(cousin, child, grandchild)); + + GraphTraversalQueryEngine engine = new GraphTraversalQueryEngine(g); + + //tests + List<Vertex> parentDeletes = engine.findDeletable(parent); + assertTrue(parentExpected.containsAll(parentDeletes) && parentDeletes.containsAll(parentExpected)); + + List<Vertex> childDeletes = engine.findDeletable(child); + assertTrue(childExpected.containsAll(childDeletes) && childDeletes.containsAll(childExpected)); + + List<Vertex> cousinDeletes = engine.findDeletable(cousin); + assertTrue(cousinExpected.containsAll(cousinDeletes) && cousinDeletes.containsAll(cousinExpected)); + } +} diff --git a/aai-core/src/test/resources/dbedgerules/DbEdgeRules_test.json b/aai-core/src/test/resources/dbedgerules/DbEdgeRules_test.json index 0031d1f0..957129b2 100644 --- a/aai-core/src/test/resources/dbedgerules/DbEdgeRules_test.json +++ b/aai-core/src/test/resources/dbedgerules/DbEdgeRules_test.json @@ -32,6 +32,39 @@ "delete-other-v": "${direction}", "SVC-INFRA": "NONE", "prevent-delete": "NONE" + }, + { + "from": "test-parent", + "to": "test-child", + "label": "has", + "direction": "OUT", + "multiplicity": "One2Many", + "contains-other-v": "${direction}", + "delete-other-v": "NONE", + "SVC-INFRA": "NONE", + "prevent-delete": "NONE" + }, + { + "from": "test-cousin", + "to": "test-child", + "label": "annoys", + "direction": "OUT", + "multiplicity": "One2Many", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "SVC-INFRA": "NONE", + "prevent-delete": "NONE" + }, + { + "from": "test-child", + "to": "test-grandchild", + "label": "has", + "direction": "OUT", + "multiplicity": "One2Many", + "contains-other-v": "${direction}", + "delete-other-v": "${direction}", + "SVC-INFRA": "NONE", + "prevent-delete": "NONE" } ] }
\ No newline at end of file |