Update the license for 2017-2018 license
[aai/traversal.git] / aai-traversal / src / test / java / org / onap / aai / rest / dsl / DslQueryProcessorTest.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
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
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 package org.onap.aai.rest.dsl;
21
22 import static org.junit.Assert.assertEquals;
23
24 import org.junit.Ignore;
25 import org.junit.Rule;
26 import org.junit.Test;
27 import org.junit.rules.ExpectedException;
28
29 import org.onap.aai.exceptions.AAIException;
30
31 /**
32  * The Class DslMain.
33  */
34 public class DslQueryProcessorTest {
35          
36           
37         @Test
38         public void cloudRegion1Test() throws AAIException {
39                 DslQueryProcessor dslTest = new DslQueryProcessor();
40
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)";
44
45                 String query = dslTest.parseAaiQuery(aaiQuery);
46                 assertEquals(dslQuery, query);
47         }
48
49         @Test
50         public void cloudRegion_entitlementTest() throws AAIException {
51                 DslQueryProcessor dslTest = new DslQueryProcessor();
52
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()";
60
61                 String query = dslTest.parseAaiQuery(aaiQuery);
62                 assertEquals(dslQuery, query);
63         }
64
65         @Test
66         public void complex_az_fromComplexTest() throws AAIException {
67                 DslQueryProcessor dslTest = new DslQueryProcessor();
68
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()";
75
76                 assertEquals(dslQuery, query);
77         }
78         
79         @Test
80         public void cloudRegion_fromComplex1Test() throws AAIException {
81                 DslQueryProcessor dslTest = new DslQueryProcessor();
82
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);
87
88                 assertEquals(builderQuery, query);
89         }
90                 
91         @Test
92         public void cloudRegion_fromComplex2Test() throws AAIException {
93                 DslQueryProcessor dslTest = new DslQueryProcessor();
94
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);
100
101                 assertEquals(builderQuery, query);
102         }
103         
104         @Test
105         public void cloudRegion_fromNfTypeTest() throws AAIException {
106                 DslQueryProcessor dslTest = new DslQueryProcessor();
107
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*";
114
115                 String query = dslTest.parseAaiQuery(aaiQuery);
116                 assertEquals(builderQuery, query);
117         }
118           
119         @Test
120         public void cloudRegion_fromNfTypeVendorVersionTest() throws AAIException {
121                 DslQueryProcessor dslTest = new DslQueryProcessor();
122
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()";
128
129                 String aaiQuery = "image('application-vendor','vendor') >  vserver( >generic-vnf('nf-type', 'nfType') ) > tenant > cloud-region*";
130
131                 String query = dslTest.parseAaiQuery(aaiQuery);
132
133                 assertEquals(builderQuery, query);
134         }
135
136         @Test
137         public void cloud_region_fromVnfTest() throws AAIException {
138                 DslQueryProcessor dslTest = new DslQueryProcessor();
139
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()";
146
147                 String aaiQuery = "generic-vnf('vnf-id','vnfId')  > vnfc* > vserver* > tenant* > cloud-region*";
148
149                 String query = dslTest.parseAaiQuery(aaiQuery);
150
151                 assertEquals(builderQuery, query);
152         }
153                 
154         @Test
155         public void cloud_region_sitesTest() throws AAIException {
156                 DslQueryProcessor dslTest = new DslQueryProcessor();
157
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()";
161
162                 String aaiQuery = "cloud-region*('cloud-owner','co') > complex*";
163
164                 String query = dslTest.parseAaiQuery(aaiQuery);
165
166                 assertEquals(builderQuery, query);
167         }
168          
169         @Test
170         public void complex_fromVnf2Test() throws AAIException {
171                 DslQueryProcessor dslTest = new DslQueryProcessor();
172
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()";
180
181                 String aaiQuery = "generic-vnf*('vnf-Id','vnfId') >  " + "[  pserver* > complex*, "
182                                 + " vserver > pserver* > complex* " + "]";
183
184                 String query = dslTest.parseAaiQuery(aaiQuery);
185
186                 assertEquals(builderQuery, query);
187         }
188         
189         @Test
190         public void complex_fromVnfTest() throws AAIException {
191                 DslQueryProcessor dslTest = new DslQueryProcessor();
192                   
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()";
200
201                 String aaiQuery = "generic-vnf*('vnf-Id','vnfId') >  " + "[  pserver* > complex*, "
202                                 + " vserver > pserver* > complex* " + "]";
203
204                 String query = dslTest.parseAaiQuery(aaiQuery);
205
206                 assertEquals(builderQuery, query);
207         }
208
209         @Test
210         public void fn_topology1Test() throws AAIException {
211                 DslQueryProcessor dslTest = new DslQueryProcessor();
212
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()";
222
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* ]";
226
227                 String query = dslTest.parseAaiQuery(aaiQuery);
228
229                 assertEquals(builderQuery, query);
230         }
231
232 }