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.dsl;
22 import static org.junit.Assert.assertEquals;
24 import org.junit.Ignore;
25 import org.junit.Rule;
26 import org.junit.Test;
27 import org.junit.rules.ExpectedException;
29 import org.onap.aai.exceptions.AAIException;
34 public class DslQueryProcessorTest {
38 public void cloudRegion1Test() throws AAIException {
39 DslQueryProcessor dslTest = new DslQueryProcessor();
41 String aaiQuery = "cloud-region* !('cloud-owner','coid')('cloud-region-id','crid') LIMIT 10";
42 String dslQuery = "builder.getVerticesByProperty('aai-node-type', 'cloud-region').getVerticesExcludeByProperty('cloud-owner','coid')"
43 + ".getVerticesByProperty('cloud-region-id','crid').store('x').cap('x').unfold().dedup().limit(10)";
45 String query = dslTest.parseAaiQuery(aaiQuery);
46 assertEquals(dslQuery, query);
50 public void cloudRegion_entitlementTest() throws AAIException {
51 DslQueryProcessor dslTest = new DslQueryProcessor();
53 String aaiQuery = "generic-vnf (> vserver > tenant > cloud-region*('cloud-region-id','One')) > entitlement*";
54 String dslQuery = "builder.getVerticesByProperty('aai-node-type', 'generic-vnf').where("
55 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','vserver')"
56 + ".createEdgeTraversal(EdgeType.TREE, 'vserver','tenant')"
57 + ".createEdgeTraversal(EdgeType.TREE, 'tenant','cloud-region')"
58 + ".getVerticesByProperty('cloud-region-id','One').store('x'))"
59 + ".createEdgeTraversal(EdgeType.TREE, 'generic-vnf','entitlement').store('x').cap('x').unfold().dedup()";
61 String query = dslTest.parseAaiQuery(aaiQuery);
62 assertEquals(dslQuery, query);
66 public void complex_az_fromComplexTest() throws AAIException {
67 DslQueryProcessor dslTest = new DslQueryProcessor();
69 String aaiQuery = "cloud-region('cloud-owner','coid')('cloud-region-id','crid') > [ availability-zone* , complex*]";
70 String query = dslTest.parseAaiQuery(aaiQuery);
71 String dslQuery = "builder.getVerticesByProperty('aai-node-type', 'cloud-region')"
72 + ".getVerticesByProperty('cloud-owner','coid').getVerticesByProperty('cloud-region-id','crid')"
73 + ".union(builder.newInstance().createEdgeTraversal(EdgeType.TREE, 'cloud-region','availability-zone').store('x')"
74 + ",builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'cloud-region','complex').store('x')).cap('x').unfold().dedup()";
76 assertEquals(dslQuery, query);
80 public void cloudRegion_fromComplex1Test() throws AAIException {
81 DslQueryProcessor dslTest = new DslQueryProcessor();
83 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'complex').getVerticesByProperty('country','count-name')"
84 + ".createEdgeTraversal(EdgeType.COUSIN, 'complex','cloud-region').store('x').cap('x').unfold().dedup()";
85 String aaiQuery = "complex('country','count-name') > cloud-region*";
86 String query = dslTest.parseAaiQuery(aaiQuery);
88 assertEquals(builderQuery, query);
92 public void cloudRegion_fromComplex2Test() throws AAIException {
93 DslQueryProcessor dslTest = new DslQueryProcessor();
95 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'complex').getVerticesByProperty('country','count-name')"
96 + ".createEdgeTraversal(EdgeType.COUSIN, 'complex','cloud-region').getVerticesByProperty('cloud-region-version','crv')"
97 + ".store('x').cap('x').unfold().dedup()";
98 String aaiQuery = "complex('country','count-name') > cloud-region*('cloud-region-version','crv')";
99 String query = dslTest.parseAaiQuery(aaiQuery);
101 assertEquals(builderQuery, query);
105 public void cloudRegion_fromNfTypeTest() throws AAIException {
106 DslQueryProcessor dslTest = new DslQueryProcessor();
108 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'image').getVerticesByProperty('application-vendor','F5')"
109 + ".createEdgeTraversal(EdgeType.COUSIN, 'image','vserver')"
110 + ".where(builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'vserver','generic-vnf').getVerticesByProperty('vnf-name','ZALL1MMSC03'))"
111 + ".createEdgeTraversal(EdgeType.TREE, 'vserver','tenant').createEdgeTraversal(EdgeType.TREE, 'tenant','cloud-region')"
112 + ".store('x').cap('x').unfold().dedup()";
113 String aaiQuery = "image('application-vendor','F5') > vserver (>generic-vnf('vnf-name','ZALL1MMSC03')) > tenant > cloud-region*";
115 String query = dslTest.parseAaiQuery(aaiQuery);
116 assertEquals(builderQuery, query);
120 public void cloudRegion_fromNfTypeVendorVersionTest() throws AAIException {
121 DslQueryProcessor dslTest = new DslQueryProcessor();
123 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'image').getVerticesByProperty('application-vendor','vendor')"
124 + ".createEdgeTraversal(EdgeType.COUSIN, 'image','vserver').where("
125 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'vserver','generic-vnf').getVerticesByProperty('nf-type','nfType')"
126 + ").createEdgeTraversal(EdgeType.TREE, 'vserver','tenant').createEdgeTraversal(EdgeType.TREE, 'tenant','cloud-region')"
127 + ".store('x').cap('x').unfold().dedup()";
129 String aaiQuery = "image('application-vendor','vendor') > vserver( >generic-vnf('nf-type', 'nfType') ) > tenant > cloud-region*";
131 String query = dslTest.parseAaiQuery(aaiQuery);
133 assertEquals(builderQuery, query);
137 public void cloud_region_fromVnfTest() throws AAIException {
138 DslQueryProcessor dslTest = new DslQueryProcessor();
140 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'generic-vnf').getVerticesByProperty('vnf-id','vnfId')"
141 + ".createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','vnfc').store('x')"
142 + ".createEdgeTraversal(EdgeType.COUSIN, 'vnfc','vserver').store('x')"
143 + ".createEdgeTraversal(EdgeType.TREE, 'vserver','tenant').store('x')"
144 + ".createEdgeTraversal(EdgeType.TREE, 'tenant','cloud-region').store('x')"
145 + ".cap('x').unfold().dedup()";
147 String aaiQuery = "generic-vnf('vnf-id','vnfId') > vnfc* > vserver* > tenant* > cloud-region*";
149 String query = dslTest.parseAaiQuery(aaiQuery);
151 assertEquals(builderQuery, query);
155 public void cloud_region_sitesTest() throws AAIException {
156 DslQueryProcessor dslTest = new DslQueryProcessor();
158 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'cloud-region')."
159 + "getVerticesByProperty('cloud-owner','co').store('x').createEdgeTraversal(EdgeType.COUSIN, "
160 + "'cloud-region','complex').store('x').cap('x').unfold().dedup()";
162 String aaiQuery = "cloud-region*('cloud-owner','co') > complex*";
164 String query = dslTest.parseAaiQuery(aaiQuery);
166 assertEquals(builderQuery, query);
170 public void complex_fromVnf2Test() throws AAIException {
171 DslQueryProcessor dslTest = new DslQueryProcessor();
173 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'generic-vnf').getVerticesByProperty('vnf-Id','vnfId').store('x').union("
174 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','pserver').store('x')"
175 + ".createEdgeTraversal(EdgeType.COUSIN, 'pserver','complex').store('x'),"
176 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','vserver')"
177 + ".createEdgeTraversal(EdgeType.COUSIN, 'vserver','pserver').store('x')"
178 + ".createEdgeTraversal(EdgeType.COUSIN, 'pserver','complex').store('x')"
179 + ").cap('x').unfold().dedup()";
181 String aaiQuery = "generic-vnf*('vnf-Id','vnfId') > " + "[ pserver* > complex*, "
182 + " vserver > pserver* > complex* " + "]";
184 String query = dslTest.parseAaiQuery(aaiQuery);
186 assertEquals(builderQuery, query);
190 public void complex_fromVnfTest() throws AAIException {
191 DslQueryProcessor dslTest = new DslQueryProcessor();
193 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'generic-vnf').getVerticesByProperty('vnf-Id','vnfId').store('x').union("
194 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','pserver').store('x')"
195 + ".createEdgeTraversal(EdgeType.COUSIN, 'pserver','complex').store('x'),"
196 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','vserver')"
197 + ".createEdgeTraversal(EdgeType.COUSIN, 'vserver','pserver').store('x')"
198 + ".createEdgeTraversal(EdgeType.COUSIN, 'pserver','complex').store('x')"
199 + ").cap('x').unfold().dedup()";
201 String aaiQuery = "generic-vnf*('vnf-Id','vnfId') > " + "[ pserver* > complex*, "
202 + " vserver > pserver* > complex* " + "]";
204 String query = dslTest.parseAaiQuery(aaiQuery);
206 assertEquals(builderQuery, query);
210 public void fn_topology1Test() throws AAIException {
211 DslQueryProcessor dslTest = new DslQueryProcessor();
213 String builderQuery = "builder.getVerticesByProperty('aai-node-type', 'business')"
214 + ".createEdgeTraversal(EdgeType.COUSIN, 'business','customer').getVerticesByProperty('customer-id','a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb')"
215 + ".createEdgeTraversal(EdgeType.TREE, 'customer','service-subscription').getVerticesByProperty('service-subscription-id','Nimbus')"
216 + ".createEdgeTraversal(EdgeType.TREE, 'service-subscription','service-instance').getVerticesByProperty('service-instance-id','sid')"
217 + ".createEdgeTraversal(EdgeType.COUSIN, 'service-instance','generic-vnf').store('x')"
218 + ".union(builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','vnfc').store('x'),"
219 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','vserver').store('x'),"
220 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','pserver').store('x'),"
221 + "builder.newInstance().createEdgeTraversal(EdgeType.COUSIN, 'generic-vnf','pnf').store('x')).cap('x').unfold().dedup()";
223 String aaiQuery = "business > customer('customer-id', 'a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb') > service-subscription('service-subscription-id', 'Nimbus') "
224 + " > service-instance('service-instance-id','sid') > generic-vnf* "
225 + " > [ vnfc* , vserver*, pserver* , pnf* ]";
227 String query = dslTest.parseAaiQuery(aaiQuery);
229 assertEquals(builderQuery, query);