EdgeRules throws descriptive error on invalid rule
[aai/aai-common.git] / aai-core / src / test / java / org / openecomp / aai / serialization / tinkerpop / TreeBackedVertexTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * org.openecomp.aai
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.aai.serialization.tinkerpop;
22
23 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
24 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
25 import org.apache.tinkerpop.gremlin.structure.*;
26 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
27 import org.junit.Before;
28 import org.junit.Ignore;
29 import org.junit.Test;
30 import org.openecomp.aai.serialization.db.EdgeProperty;
31 import org.openecomp.aai.serialization.engines.query.GraphTraversalQueryEngine;
32
33 import static org.junit.Assert.assertEquals;
34
35 @Ignore
36 public class TreeBackedVertexTest {
37
38         private Graph graph = TinkerGraph.open();
39         private Object startKey = null;
40         private Tree<Element> tree = null;
41         private Tree<Element> treeDepth1 = null;
42         private Tree<Element> treeDepth0NodeOnly = null;
43
44         @Before
45         public void configure() {
46                 GraphTraversalSource g = graph.traversal();
47                 
48                 startKey = g.addV(T.label, "vserver").as("v1").property("test", "hello")
49                                 .addV(T.label, "vserver").as("v2")
50                                 .addV(T.label, "interface").property("name", "interface 1").as("v7").addInE("hasChild", "v2").property(EdgeProperty.CONTAINS.toString(), true)
51                                 .addV(T.label, "pserver").property("name", "pserver 1").as("v4").addOutE("runsOn", "v1").property(EdgeProperty.CONTAINS.toString(), false)
52                                 .addV(T.label, "interface").property("name", "interface 2").as("v3").addInE("hasChild", "v1").property(EdgeProperty.CONTAINS.toString(), true)
53                                 .addV(T.label, "address").property("name", "address 1").addInE("hasChild", "v3").property(EdgeProperty.CONTAINS.toString(), true)
54                                 .addV(T.label, "address").property("name", "address 2").addInE("hasChild", "v3").property(EdgeProperty.CONTAINS.toString(), true)
55                                 .addV(T.label, "complex").property("name", "complex 1").addInE("locatedIn", "v4").property(EdgeProperty.CONTAINS.toString(), false)
56                                 .addV(T.label, "interface").property("name", "interface 3").addInE("hasChild", "v4").property(EdgeProperty.CONTAINS.toString(), true)
57                                 .addV(T.label, "subnet").property("name", "subnet 1").as("v5").addInE("in", "v3").property(EdgeProperty.CONTAINS.toString(), false)
58                                 .addV(T.label, "address").property("name", "address 3").as("v6").addInE("hasChild", "v5").property(EdgeProperty.CONTAINS.toString(), true)
59                                 .select("v1").next();
60                 
61                 tree = new GraphTraversalQueryEngine(g).findSubGraph((Vertex)startKey);
62                 treeDepth1 = new GraphTraversalQueryEngine(g).findSubGraph((Vertex)startKey, 1, false);
63                 treeDepth0NodeOnly = new GraphTraversalQueryEngine(g).findSubGraph((Vertex)startKey, 0, true);
64         }
65
66         @Ignore
67         @Test
68         public void oneHopViaEdges() {
69
70                 //BulkSet set = (BulkSet)result;
71                 TreeBackedVertex v = new TreeBackedVertex((Vertex)tree.getObjectsAtDepth(1).iterator().next(), tree);
72                 
73         
74                 assertEquals("locate child", v.edges(Direction.OUT).next().inVertex().property("name").orElse(""), "interface 2");
75                 assertEquals("locate cousin", v.edges(Direction.IN).next().outVertex().property("name").orElse(""), "pserver 1");
76
77                 
78         }
79         
80         @Ignore
81         @Test
82         public void oneHopViaVertices() {
83
84                 //BulkSet set = (BulkSet)result;
85                 TreeBackedVertex v = new TreeBackedVertex((Vertex)tree.getObjectsAtDepth(1).iterator().next(), tree);
86                 
87         
88                 assertEquals("locate child", "interface 2", v.vertices(Direction.OUT).next().property("name").orElse(""));
89                 assertEquals("locate cousin", "pserver 1", v.vertices(Direction.IN).next().property("name").orElse(""));
90         
91         }
92         
93         @Ignore
94         @Test
95         public void twoHopCousinViaVertices() {
96
97                 //BulkSet set = (BulkSet)result;
98                 TreeBackedVertex v = new TreeBackedVertex((Vertex)tree.getObjectsAtDepth(1).iterator().next(), tree);
99                 
100         
101                 assertEquals("locate child", "subnet 1", v.vertices(Direction.OUT).next().vertices(Direction.OUT, "in").next().property("name").orElse(""));
102         
103         }
104         
105         @Test
106         public void walkVerticesRestrictedDepth() {
107
108                 //BulkSet set = (BulkSet)result;
109                 TreeBackedVertex v = new TreeBackedVertex((Vertex)treeDepth1.getObjectsAtDepth(1).iterator().next(), treeDepth1);
110                 
111         
112                 assertEquals("nothing returned", false, v.vertices(Direction.OUT).next()
113                                 .vertices(Direction.OUT, "hasChild").hasNext());
114         
115         }
116         
117         @Test
118         public void walkVertices() {
119                 TreeBackedVertex v = new TreeBackedVertex((Vertex)tree.getObjectsAtDepth(1).iterator().next(), tree);
120                 assertEquals("locate child", "address 2", v.vertices(Direction.OUT).next()
121                                 .vertices(Direction.OUT, "hasChild").next().property("name").orElse(""));
122         }
123         
124         @Test
125         public void walkEdges() {
126                 TreeBackedVertex v = new TreeBackedVertex((Vertex)tree.getObjectsAtDepth(1).iterator().next(), tree);
127
128                 assertEquals("locate child", "address 2", v.edges(Direction.OUT).next().inVertex()
129                                 .edges(Direction.OUT, "hasChild").next().inVertex().property("name").orElse(""));
130         }
131         
132         @Test
133         public void noEdgesFoudWithLabelVertices() {
134                 TreeBackedVertex v = new TreeBackedVertex((Vertex)tree.getObjectsAtDepth(1).iterator().next(), tree);
135
136                 assertEquals("missing hello label", false , v.vertices(Direction.OUT, "hello").hasNext());
137         }
138         
139         @Test
140         public void noEdgesFoudWithLabelEdges() {
141                 TreeBackedVertex v = new TreeBackedVertex((Vertex)tree.getObjectsAtDepth(1).iterator().next(), tree);
142
143                 assertEquals("missing hello label", false , v.edges(Direction.OUT, "hello").hasNext());
144         }
145         
146         @Test
147         public void depthZeroNodeOnly() {
148                 TreeBackedVertex v = new TreeBackedVertex((Vertex)treeDepth0NodeOnly.getObjectsAtDepth(1).iterator().next(), treeDepth0NodeOnly);
149                 assertEquals("no edges returned", false, v.edges(Direction.BOTH).hasNext());
150         }
151         
152 }