2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 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 package org.onap.aai.rest.search;
22 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
23 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
24 import org.apache.tinkerpop.gremlin.structure.T;
25 import org.apache.tinkerpop.gremlin.structure.Vertex;
26 import org.junit.Test;
27 import org.onap.aai.exceptions.AAIException;
28 import org.onap.aai.serialization.db.exceptions.NoEdgeRuleFoundException;
32 public class ServiceTopologyTest extends QueryTest {
33 public ServiceTopologyTest() throws AAIException, NoEdgeRuleFoundException {
42 protected void createGraph() throws AAIException, NoEdgeRuleFoundException {
43 Vertex servinst = graph.addVertex(T.label, "service-instance", T.id, "1", "aai-node-type", "service-instance", "service-instance-id", "servInstId01", "service-type", "servType01");
44 Vertex gv = graph.addVertex(T.id, "2", "aai-node-type", "generic-vnf", "vnf-id", "gvId", "vnf-name", "name", "vnf-type", "type");
45 Vertex vnfc = graph.addVertex(T.id, "3", "aai-node-type", "vnfc","vnfc-name", "vnfcName1", "nfc-naming-code", "blue", "nfc-function", "correct-function");
47 Vertex vipipv4addresslist1 = graph.addVertex(T.label, "vip-ipv4-address-list", T.id, "4", "aai-node-type", "vip-ipv4-address-list", "vip-ipv4-addres", "vip-ipv4-address1");
48 Vertex subnet1 = graph.addVertex(T.label, "subnet", T.id, "5", "aai-node-type", "subnet", "subnet-id", "subnet1");
49 Vertex l3network1 = graph.addVertex(T.label, "l3-network", T.id, "6", "aai-node-type", "l3-network", "network-id", "network1-id1", "network-name", "network1-name1");
51 Vertex vipipv6addresslist1 = graph.addVertex(T.label, "vip-ipv6-address-list", T.id, "7", "aai-node-type", "vip-ipv6-address-list", "vip-ipv6-address", "vip-ipv6-address2");
52 Vertex subnet2 = graph.addVertex(T.label, "subnet", T.id, "8", "aai-node-type", "subnet", "subnet-id", "subnet2");
53 Vertex l3network2 = graph.addVertex(T.label, "l3-network", T.id, "9", "aai-node-type", "l3-network", "network-id", "network1-id2", "network-name", "network2-name2");
55 Vertex l3inter1ipv4addresslist1 = graph.addVertex(T.label, "interface-ipv4-address-list", T.id, "10", "aai-node-type", "l3-interface-ipv4-address-list", "l3-interface-ipv4-address", "l3-interface-ipv4-address1");
56 Vertex l3network3 = graph.addVertex(T.label, "l3-network", T.id, "11", "aai-node-type", "l3-network", "network-id", "network3-id3", "network-name", "network2-name3");
57 Vertex subnet3 = graph.addVertex(T.label, "subnet", T.id, "12", "aai-node-type", "subnet", "subnet-id", "subnet3");
58 Vertex l3network3_2 = graph.addVertex(T.label, "l3-network", T.id, "13", "aai-node-type", "l3-network", "network-id", "network3-id3", "network-name", "network3_2-name3_2");
60 Vertex l3inter1ipv6addresslist1 = graph.addVertex(T.label, "l3-interface-ipv6-address-list", T.id, "14", "aai-node-type", "l3-interface-ipv6-address-list", "l3-interface-ipv6-address", "l3-interface-ipv6-address1");
61 Vertex l3network4 = graph.addVertex(T.label, "l3-network", T.id, "15", "aai-node-type", "l3-network", "network-id", "network3-id3", "network-name", "network2-name4");
62 Vertex subnet4 = graph.addVertex(T.label, "subnet", T.id, "16", "aai-node-type", "subnet", "subnet-id", "subnet4");
63 Vertex l3network4_2 = graph.addVertex(T.label, "l3-network", T.id, "17", "aai-node-type", "l3-network", "network-id", "network3-id4", "network-name", "network4_2-name4_2");
66 Vertex vserv1 = graph.addVertex(T.id, "18", "aai-node-type", "vserver", "vserver-id", "vservId1", "vserver-name", "vservName1");
67 Vertex tenant1 = graph.addVertex(T.id, "19", "aai-node-type", "tenant", "tenant-id", "ten1", "tenant-name", "tenName1");
68 Vertex linterface1 = graph.addVertex(T.label, "l-interface", T.id, "20", "aai-node-type", "l-interface", "l-interface-id", "l-interface-id1", "l-interface-name", "l-interface-name1");
69 Vertex l3inter1ipv4addresslist2 = graph.addVertex(T.label, "interface-ipv4-address-list", T.id, "21", "aai-node-type", "l3-interface-ipv4-address-list", "l3-interface-ipv4-address", "l3-interface-ipv4-address2");
70 Vertex l3network5 = graph.addVertex(T.label, "l3-network", T.id, "22", "aai-node-type", "l3-network", "network-id", "network3-id3", "network-name", "network2-name3");
71 Vertex subnet5 = graph.addVertex(T.label, "subnet", T.id, "23", "aai-node-type", "subnet", "subnet-id", "subnet3");
72 Vertex l3network5_2 = graph.addVertex(T.label, "l3-network", T.id, "24", "aai-node-type", "l3-network", "network-id", "network3-id3", "network-name", "network3_2-name3_2");
74 Vertex l3inter1ipv6addresslist2 = graph.addVertex(T.label, "l3-interface-ipv6-address-list", T.id, "25", "aai-node-type", "l3-interface-ipv6-address-list", "l3-interface-ipv6-address", "l3-interface-ipv6-address1");
75 Vertex l3network6 = graph.addVertex(T.label, "l3-network", T.id, "26", "aai-node-type", "l3-network", "network-id", "network3-id3", "network-name", "network2-name4");
76 Vertex subnet6 = graph.addVertex(T.label, "subnet", T.id, "27", "aai-node-type", "subnet", "subnet-id", "subnet4");
77 Vertex l3network6_2 = graph.addVertex(T.label, "l3-network", T.id, "28", "aai-node-type", "l3-network", "network-id", "network3-id4", "network-name", "network4_2-name4_2");
79 Vertex pserver1 = graph.addVertex(T.label, "pserver", T.id, "29", "aai-node-type", "pserver", "hostname", "pservername1");
82 Vertex pserver2 = graph.addVertex(T.label, "pserver", T.id, "30", "aai-node-type", "pserver", "hostname", "pservername1");
83 Vertex pserverint = graph.addVertex(T.label, "p-interface", T.id, "31", "aai-node-type", "p-interface", "interface-name", "xe0/0/0");
84 Vertex plink1 = graph.addVertex(T.label, "physical-link", T.id, "32", "aai-node-type", "physical-link", "link-name", "ge0/0/0-to-xe0/0/0");
86 GraphTraversalSource g = graph.traversal();
88 rules.addEdge(g, servinst , gv);
89 rules.addEdge(g,gv,vnfc);
90 rules.addEdge(g,vnfc,vipipv4addresslist1);
91 rules.addEdge(g,vipipv4addresslist1,subnet1);
92 rules.addTreeEdge(g,subnet1,l3network1);
93 rules.addEdge(g,vnfc,vipipv6addresslist1);
94 rules.addEdge(g,vipipv6addresslist1,subnet2);
95 rules.addTreeEdge(g,subnet2,l3network2);
96 rules.addTreeEdge(g,vnfc,l3inter1ipv4addresslist1);
97 rules.addEdge(g,l3inter1ipv4addresslist1,l3network3);
98 rules.addEdge(g,l3inter1ipv4addresslist1,subnet3);
99 rules.addTreeEdge(g,subnet3,l3network3_2);
100 rules.addTreeEdge(g,vnfc,l3inter1ipv6addresslist1);
101 rules.addEdge(g,l3inter1ipv6addresslist1,l3network4);
102 rules.addEdge(g,l3inter1ipv6addresslist1,subnet4);
103 rules.addTreeEdge(g,subnet4,l3network4_2);
104 rules.addEdge(g,gv,vserv1);
105 rules.addTreeEdge(g,vserv1,tenant1);
106 rules.addTreeEdge(g,vserv1,linterface1);
107 rules.addTreeEdge(g,linterface1,l3inter1ipv4addresslist2);
108 rules.addEdge(g,l3inter1ipv4addresslist2,l3network5);
109 rules.addEdge(g,l3inter1ipv4addresslist2,subnet5);
110 rules.addTreeEdge(g,subnet5,l3network5_2);
111 rules.addTreeEdge(g,linterface1,l3inter1ipv6addresslist2);
112 rules.addEdge(g,l3inter1ipv6addresslist2,l3network6);
113 rules.addEdge(g,l3inter1ipv6addresslist2,subnet6);
114 rules.addTreeEdge(g,subnet6,l3network6_2);
115 rules.addEdge(g,vserv1,pserver1);
116 rules.addEdge(g,gv,pserver2);
117 rules.addTreeEdge(g,pserver2,pserverint);
118 rules.addEdge(g,pserverint,plink1);
120 expectedResult.add(servinst);
121 expectedResult.add(gv);
122 expectedResult.add(vnfc);
123 expectedResult.add(vipipv4addresslist1);
124 expectedResult.add(subnet1);
125 expectedResult.add(l3network1);
126 expectedResult.add(vipipv6addresslist1);
127 expectedResult.add(subnet2);
128 expectedResult.add(l3network2);
129 expectedResult.add(l3inter1ipv4addresslist1);
130 expectedResult.add(l3network3);
131 expectedResult.add(subnet3);
132 expectedResult.add(l3network3_2);
133 expectedResult.add(l3inter1ipv6addresslist1);
134 expectedResult.add(l3network4);
135 expectedResult.add(subnet4);
136 expectedResult.add(l3network4_2);
137 expectedResult.add(vserv1);
138 expectedResult.add(tenant1);
139 expectedResult.add(linterface1);
140 expectedResult.add(l3inter1ipv4addresslist2);
141 expectedResult.add(l3network5);
142 expectedResult.add(subnet5);
143 expectedResult.add(l3network5_2);
144 expectedResult.add(l3inter1ipv6addresslist2);
145 expectedResult.add(l3network6);
146 expectedResult.add(subnet6);
147 expectedResult.add(l3network6_2);
148 expectedResult.add(pserver1);
149 expectedResult.add(pserver2);
150 expectedResult.add(pserverint);
151 expectedResult.add(plink1);
156 protected String getQueryName() {
157 return "service-topology";
161 protected void addStartNode(GraphTraversal<Vertex, Vertex> g) {
162 g.has("aai-node-type", "service-instance");
165 protected void addParam(Map<String, Object> params) {