2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
20 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 package org.onap.aai.query.builder;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertTrue;
28 import java.util.ArrayList;
29 import java.util.Arrays;
30 import java.util.Collections;
31 import java.util.List;
33 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
34 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
35 import org.apache.tinkerpop.gremlin.structure.Edge;
36 import org.apache.tinkerpop.gremlin.structure.Graph;
37 import org.apache.tinkerpop.gremlin.structure.Vertex;
38 import org.junit.Before;
39 import org.junit.Test;
40 import org.onap.aai.AAISetup;
41 import org.onap.aai.db.props.AAIProperties;
42 import org.onap.aai.exceptions.AAIException;
43 import org.onap.aai.introspection.Loader;
44 import org.onap.aai.introspection.LoaderFactory;
45 import org.onap.aai.introspection.ModelType;
46 import org.onap.aai.serialization.db.EdgeRules;
47 import org.onap.aai.serialization.db.EdgeType;
49 import com.thinkaurelius.titan.core.TitanFactory;
50 import org.onap.aai.serialization.db.exceptions.NoEdgeRuleFoundException;
52 public abstract class QueryBuilderTestAbstraction extends AAISetup {
54 protected Loader loader;
55 protected Graph graph;
56 protected GraphTraversalSource g;
58 protected EdgeRules testEdgeRules = EdgeRules.getInstance("/dbedgerules/DbEdgeRules_TraversalQueryTest.json");
61 public void configure() throws Exception {
62 loader = LoaderFactory.createLoaderForVersion(ModelType.MOXY, AAIProperties.LATEST);
63 graph = TitanFactory.build().set("storage.backend", "inmemory").open();
64 g = graph.traversal();
69 public void createEdgeGVnfToVnfcTraversal() throws AAIException {
71 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","myvnf").next();
72 Vertex vnfc = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
73 testEdgeRules.addEdge(g, gvnf, vnfc, "uses");
75 QueryBuilder<Vertex> tQ = getNewVertexTraversal(gvnf);
76 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "vnfc");
78 assertEquals(vnfc, tQ.next());
84 public void createEdgeLinterfaceToLogicalLinkTraversal() throws AAIException {
86 Vertex lInterface = g.addV("aai-node-type","l-interface","interface-name","l-interface-a").next();
87 Vertex logicalLink = g.addV("aai-node-type","logical-link","link-name","logical-link-a").next();
88 testEdgeRules.addEdge(g, lInterface, logicalLink, "sourceLInterface");
90 QueryBuilder<Vertex> tQ = getNewVertexTraversal(lInterface);
91 tQ.createEdgeTraversal(EdgeType.COUSIN, "l-interface", "logical-link");
93 Vertex next = tQ.next();
95 assertEquals(logicalLink, next);
101 public void createEdgeLinterfaceToLogicalLinkIntrospectorTraversal() throws AAIException {
103 Vertex lInterface = g.addV("aai-node-type","l-interface","interface-name","l-interface-a").next();
104 Vertex logicalLink = g.addV("aai-node-type","logical-link","link-name","logical-link-a").next();
105 testEdgeRules.addEdge(g, lInterface, logicalLink, "sourceLInterface");
107 QueryBuilder<Vertex> tQ = getNewVertexTraversal(lInterface);
108 tQ.createEdgeTraversal(EdgeType.COUSIN, loader.introspectorFromName("l-interface"), loader.introspectorFromName("logical-link"));
110 Vertex next = tQ.next();
112 assertEquals(logicalLink, next);
118 public void createEdgeLinterfaceToLogicalLinkVertexToIntrospectorTraversal() throws AAIException {
120 Vertex lInterface = g.addV("aai-node-type","l-interface","interface-name","l-interface-a").next();
121 Vertex logicalLink = g.addV("aai-node-type","logical-link","link-name","logical-link-a").next();
122 testEdgeRules.addEdge(g, lInterface, logicalLink, "sourceLInterface");
124 QueryBuilder<Vertex> tQ = getNewVertexTraversal(lInterface);
125 tQ.createEdgeTraversal(EdgeType.COUSIN, lInterface, loader.introspectorFromName("logical-link"));
127 Vertex next = tQ.next();
129 assertEquals(logicalLink, next);
135 public void edgeToVertexTraversalTest() throws AAIException {
137 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
138 Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
140 testEdgeRules.addEdge(g, gvnf, vnfc1);
142 QueryBuilder<Vertex> tQ = getNewVertexTraversal(gvnf);
143 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "vnfc");
145 List<Vertex> list = tQ.toList();
147 assertEquals("Has 1 vertexes ", 1, list.size());
148 assertTrue("Has vertex on the default edge ", list.contains(vnfc1));
154 public void edgeToVertexTraversalSingleOutRuleTest() throws AAIException {
156 Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
157 Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
159 testEdgeRules.addEdge(g, vce, vnfc1);
161 QueryBuilder<Vertex> tQ1 = getNewVertexTraversal(vce);
162 tQ1.createEdgeTraversal(EdgeType.COUSIN, "vce", "vnfc");
164 QueryBuilder<Vertex> tQ2 = getNewVertexTraversal(vnfc1);
165 tQ2.createEdgeTraversal(EdgeType.COUSIN, "vnfc", "vce");
167 List<Vertex> list1 = tQ1.toList();
168 List<Vertex> list2 = tQ2.toList();
170 assertEquals("1 - Has 1 vertexes ", 1, list1.size());
171 assertTrue("1 - traversal results in vnfc ", list1.contains(vnfc1));
172 assertEquals("2 - Has 1 vertexes ", 1, list2.size());
173 assertTrue("2 - traversal results in vce ", list2.contains(vce));
179 public void edgeToVertexTraversalSingleInRuleTest() throws AAIException {
181 Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
182 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
184 testEdgeRules.addEdge(g, vce, pserver);
186 QueryBuilder<Vertex> tQ1 = getNewVertexTraversal(vce);
187 tQ1.createEdgeTraversal(EdgeType.COUSIN, "vce", "pserver");
189 List<Vertex> list = tQ1.toList();
191 assertEquals("1 - Has 1 vertexes ", 1, list.size());
192 assertTrue("1 - traversal results in vnfc ", list.contains(pserver));
198 public void edgeToVertexMultiRuleTraversalTest() throws AAIException {
200 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
201 Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
202 Vertex vnfc2 = g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
204 testEdgeRules.addEdge(g, gvnf, vnfc1);
205 testEdgeRules.addEdge(g, gvnf, vnfc2, "re-uses");
207 QueryBuilder<Vertex> tQ = getNewVertexTraversal(gvnf);
208 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "vnfc");
210 List<Vertex> list = tQ.toList();
212 assertEquals("Has 2 vertexes ", 2, list.size());
213 assertTrue("Has vertex on the default edge ", list.contains(vnfc1));
214 assertTrue("Has vertex on the re-uses edge ", list.contains(vnfc2));
220 public void edgeToVertexMultiLabelTest() throws AAIException {
222 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
223 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
224 Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
226 testEdgeRules.addEdge(g, gvnf, vnfc1);
227 testEdgeRules.addEdge(g, pserver, vnfc1);
229 QueryBuilder<Vertex> tQ = getNewVertexTraversal(vnfc1);
230 tQ.createEdgeTraversal(EdgeType.COUSIN, "vnfc", "generic-vnf");
232 List<Vertex> list = tQ.toList();
234 assertEquals("Has 1 vertexes ", 1, list.size());
235 assertTrue("Only returns the generic vnf vertex", list.contains(gvnf));
241 public void limitTraversalTest() throws AAIException {
243 g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
244 g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
246 QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g, testEdgeRules);
247 tQ.getVerticesByProperty("aai-node-type","vnfc").limit(1);
249 List<Vertex> list = tQ.toList();
251 assertEquals("Has 1 vertexes ", 1, list.size());
257 public void getVertexesByPropertiesTraversalTest() throws AAIException {
259 g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
260 g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
262 QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g, testEdgeRules);
263 tQ.getVerticesByProperty("vnfc-name", Arrays.asList("a-name", "b-name"));
265 List<Vertex> list = tQ.toList();
267 assertEquals("Has 2 vertexes ", 2, list.size());
273 public void getVertexesByIndexedPropertyTraversalTest() throws AAIException {
275 g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
276 g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
278 QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g, testEdgeRules);
279 tQ.getVerticesByIndexedProperty("aai-node-type","vnfc");
281 List<Vertex> list = tQ.toList();
283 assertEquals("Has 2 vertexes ", 2, list.size());
289 public void dedupTraversalTest() throws AAIException {
291 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
292 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
294 testEdgeRules.addEdge(g, gvnf, pserver);
295 testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
297 QueryBuilder<Vertex> tQ = getNewVertexTraversal(gvnf);
298 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver").dedup();
300 List<Vertex> list = tQ.toList();
302 assertEquals("Has 2 vertexes ", 1, list.size());
303 assertTrue("result has pserver ", list.contains(pserver));
309 public void storeCapTraversalTest() throws AAIException {
311 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
312 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
314 testEdgeRules.addEdge(g, gvnf, pserver);
315 testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
317 GremlinTraversal<BulkSet<Vertex>> tQ = new GremlinTraversal<>(loader, g, gvnf, testEdgeRules);
318 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver").store("x").cap("x");
320 List<BulkSet<Vertex>> list = tQ.toList();
322 assertEquals("Has 2 vertexes ", 1, list.size());
323 assertEquals("result has pserver ",pserver, list.get(0).iterator().next());
329 public void storeCapUnfoldTraversalTest() throws AAIException {
331 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
332 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
334 testEdgeRules.addEdge(g, gvnf, pserver);
335 testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
337 QueryBuilder<Vertex> tQ = getNewVertexTraversal(gvnf);
338 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver").store("x").cap("x").unfold();
340 List<Vertex> list = tQ.toList();
342 assertEquals("Has 2 vertexes ", 2, list.size());
343 assertTrue("result has pserver ", list.contains(pserver));
349 public void nextAndHasNextTraversalTest() throws AAIException {
351 Vertex v1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
352 Vertex v2 = g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
354 QueryBuilder<Vertex> tQ = new GremlinTraversal<>(loader, g, testEdgeRules);
355 tQ.getVerticesByProperty("aai-node-type","vnfc");
357 List<Vertex> list = new ArrayList<>();
359 assertTrue("Has next 1 ",tQ.hasNext());
361 assertTrue("Has next 2 ",tQ.hasNext());
363 assertFalse("Has next 3 ",tQ.hasNext());
364 assertTrue("Has all the vertexes", list.contains(v1) && list.remove(v2));
369 public void edgeToVertexMultiRuleOutTraversalTest() throws AAIException {
371 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
372 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
374 testEdgeRules.addEdge(g, gvnf, pserver);
375 testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
377 QueryBuilder<Vertex> tQ = getNewVertexTraversal(gvnf);
378 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "pserver");
380 List<Vertex> list = tQ.toList();
382 assertEquals("Has 2 vertexes ", 2, list.size());
383 assertTrue("result has pserver ", list.contains(pserver));
389 public void edgeToVertexMultiRuleInTraversalTest() throws AAIException {
391 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
392 Vertex complex = g.addV("aai-node-type","complex","physical-location-id","a-name").next();
394 testEdgeRules.addEdge(g, gvnf, complex);
395 testEdgeRules.addEdge(g, gvnf, complex, "complex-generic-vnf-B");
397 QueryBuilder<Vertex> tQ = getNewVertexTraversal(gvnf);
398 tQ.createEdgeTraversal(EdgeType.COUSIN, "generic-vnf", "complex");
400 List<Vertex> list = tQ.toList();
402 assertEquals("Has 2 vertexes ", 2, list.size());
403 assertTrue("result has pserver ", list.contains(complex));
409 public void edgeTraversalSingleInRuleTest() throws AAIException {
411 Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
412 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
414 Edge e = testEdgeRules.addEdge(g, vce, pserver);
416 QueryBuilder<Edge> tQ1 = getNewEdgeTraversal(vce);
417 tQ1.getEdgesBetween(EdgeType.COUSIN, "vce", "pserver");
419 List<Edge> list = tQ1.toList();
421 assertEquals("1 - Has 1 edge ", 1, list.size());
422 assertTrue("1 - traversal results in edge ", list.contains(e));
428 public void edgeTraversalSingleOutRuleTest() throws AAIException {
430 Vertex vce = g.addV("aai-node-type","vce","vnf-id","vce").next();
431 Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
433 Edge e = testEdgeRules.addEdge(g, vce, vnfc1);
435 QueryBuilder<Edge> tQ1 = getNewEdgeTraversal(vce);
436 tQ1.getEdgesBetween(EdgeType.COUSIN, "vce", "vnfc");
438 List<Edge> list1 = tQ1.toList();
440 assertEquals("1 - Has 1 edge ", 1, list1.size());
441 assertTrue("1 - traversal results in edge ", list1.contains(e));
447 public void edgeTraversalMultiRuleOutTraversalTest() throws AAIException {
449 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
450 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
452 Edge e1 = testEdgeRules.addEdge(g, gvnf, pserver);
453 Edge e2 = testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
455 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
456 tQ.getEdgesBetween(EdgeType.COUSIN, "generic-vnf", "pserver");
458 List<Edge> list = tQ.toList();
460 assertEquals("Has 2 edges ", 2, list.size());
461 assertTrue("result has default edge ", list.contains(e1));
462 assertTrue("result has other edge ", list.contains(e2));
468 public void edgeTraversalMultiRuleInTraversalTest() throws AAIException {
470 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
471 Vertex complex = g.addV("aai-node-type","complex","physical-location-id","a-name").next();
473 Edge e1 = testEdgeRules.addEdge(g, gvnf, complex);
474 Edge e2 = testEdgeRules.addEdge(g, gvnf, complex, "complex-generic-vnf-B");
476 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
477 tQ.getEdgesBetween(EdgeType.COUSIN, "generic-vnf", "complex");
479 List<Edge> list = tQ.toList();
481 assertEquals("Has 2 edges ", 2, list.size());
482 assertTrue("result has default edge ", list.contains(e1));
483 assertTrue("result has other edge ", list.contains(e2));
489 public void edgeTraversalMultiRuleTraversalTest() throws AAIException {
491 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
492 Vertex vnfc1 = g.addV("aai-node-type","vnfc","vnfc-name","a-name").next();
493 Vertex vnfc2 = g.addV("aai-node-type","vnfc","vnfc-name","b-name").next();
495 Edge e1 = testEdgeRules.addEdge(g, gvnf, vnfc1);
496 Edge e2 = testEdgeRules.addEdge(g, gvnf, vnfc2, "re-uses");
498 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
499 tQ.getEdgesBetween(EdgeType.COUSIN, "generic-vnf", "vnfc");
501 List<Edge> list = tQ.toList();
503 assertEquals("Has 2 edges ", 2, list.size());
504 assertTrue("result has default edge ", list.contains(e1));
505 assertTrue("result has other edge ", list.contains(e2));
510 @Test (expected = NoEdgeRuleFoundException.class)
511 public void getEdgesBetweenWithLabelsEmptyListTest() throws AAIException {
513 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
514 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
516 Edge e1 = testEdgeRules.addEdge(g, gvnf, pserver);
517 Edge e2 = testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
519 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
520 tQ.getEdgesBetweenWithLabels(EdgeType.COUSIN, "generic-vnf", "pserver", Collections.emptyList());
525 public void getEdgesBetweenWithLabelsSingleItemTest() throws AAIException {
527 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
528 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
530 Edge e1 = testEdgeRules.addEdge(g, gvnf, pserver);
531 Edge e2 = testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
533 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
534 tQ.getEdgesBetweenWithLabels(EdgeType.COUSIN, "generic-vnf", "pserver", Collections.singletonList("generic-vnf-pserver-B"));
536 List<Edge> list = tQ.toList();
538 assertEquals("Has 1 edges ", 1, list.size());
539 assertFalse("result does not have default edge ", list.contains(e1));
540 assertTrue("result has other edge ", list.contains(e2));
545 public void getEdgesBetweenWithLabelsMultipleItemTest() throws AAIException {
547 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
548 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
550 Edge e1 = testEdgeRules.addEdge(g, gvnf, pserver);
551 Edge e2 = testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
553 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
554 tQ.getEdgesBetweenWithLabels(EdgeType.COUSIN, "generic-vnf", "pserver", Arrays.asList("generic-vnf-pserver-B", "generic-vnf-pserver-A"));
556 List<Edge> list = tQ.toList();
558 assertEquals("Has 2 edges ", 2, list.size());
559 assertTrue("result has generic-vnf-pserver-A edge ", list.contains(e1));
560 assertTrue("result has generic-vnf-pserver-B edge ", list.contains(e2));
564 @Test (expected = NoEdgeRuleFoundException.class)
565 public void createEdgeTraversalWithLabelsEmptyListTest() throws AAIException {
567 Vertex gvnf = getVertex();
569 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
570 tQ.getEdgesBetweenWithLabels(EdgeType.COUSIN, "generic-vnf", "pserver", Collections.emptyList());
572 List<Edge> list = tQ.toList();
577 private Vertex getVertex() throws AAIException {
578 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
579 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
581 Edge e1 = testEdgeRules.addEdge(g, gvnf, pserver);
582 Edge e2 = testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
587 public void createEdgeTraversalWithLabelsSingleItemTest() throws AAIException {
589 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
590 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
592 Edge e1 = testEdgeRules.addEdge(g, gvnf, pserver);
593 Edge e2 = testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
595 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
596 tQ.getEdgesBetweenWithLabels(EdgeType.COUSIN, "generic-vnf", "pserver", Collections.singletonList("generic-vnf-pserver-B"));
598 List<Edge> list = tQ.toList();
600 assertEquals("Has 1 edges ", 1, list.size());
601 assertFalse("result does not have default edge ", list.contains(e1));
602 assertTrue("result has other edge ", list.contains(e2));
607 public void createEdgeTraversalWithLabelsMultipleItemTest() throws AAIException {
609 Vertex gvnf = g.addV("aai-node-type","generic-vnf","vnf-id","gvnf").next();
610 Vertex pserver = g.addV("aai-node-type","pserver","hostname","a-name").next();
612 Edge e1 = testEdgeRules.addEdge(g, gvnf, pserver);
613 Edge e2 = testEdgeRules.addEdge(g, gvnf, pserver, "generic-vnf-pserver-B");
615 QueryBuilder<Edge> tQ = getNewEdgeTraversal(gvnf);
616 tQ.getEdgesBetweenWithLabels(EdgeType.COUSIN, "generic-vnf", "pserver", Arrays.asList("generic-vnf-pserver-B", "generic-vnf-pserver-A"));
618 List<Edge> list = tQ.toList();
620 assertEquals("Has 2 edges ", 2, list.size());
621 assertTrue("result has generic-vnf-pserver-A edge ", list.contains(e1));
622 assertTrue("result has generic-vnf-pserver-B edge ", list.contains(e2));
626 protected abstract QueryBuilder<Edge> getNewEdgeTraversal(Vertex v);
628 protected abstract QueryBuilder<Edge> getNewEdgeTraversal();
630 protected abstract QueryBuilder<Vertex> getNewVertexTraversal(Vertex v);
632 protected abstract QueryBuilder<Vertex> getNewVertexTraversal();