Reenable spring-boot2 in aai-common
[aai/aai-common.git] / aai-schema-abstraction / src / test / java / org / onap / aai / schemaif / oxm / OxmSchemaProviderTest.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2019 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2019 Amdocs
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *       http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.aai.schemaif.oxm;
23
24
25 import static org.junit.Assert.assertTrue;
26
27 import java.io.PrintWriter;
28 import java.io.StringWriter;
29 import java.util.Set;
30
31 import org.junit.Test;
32 import org.junit.runner.RunWith;
33 import org.mockito.runners.MockitoJUnitRunner;
34 import org.onap.aai.schemaif.SchemaProviderException;
35 import org.onap.aai.schemaif.definitions.EdgeSchema;
36 import org.onap.aai.schemaif.definitions.PropertySchema;
37 import org.onap.aai.schemaif.definitions.VertexSchema;
38 import org.onap.aai.schemaif.definitions.types.DataType.Type;
39
40 @RunWith(MockitoJUnitRunner.class)
41 public class OxmSchemaProviderTest extends OxmSchemaServiceSetup {
42
43     @Test
44     public void testLoadingSchema() throws SchemaProviderException {
45         try {
46             OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
47             schemaProvider.loadSchema();
48
49             VertexSchema vertSchema = schemaProvider.getVertexSchema("pserver", schemaProvider.getLatestSchemaVersion());
50             System.out.println(vertSchema.toString());
51
52             EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
53                     "cloud-region", "zone", schemaProvider.getLatestSchemaVersion());
54             System.out.println(edgeSchema.toString());
55
56             // Validate vertex schema
57             assertTrue(vertSchema.getName().equals("pserver"));
58             assertTrue(vertSchema.getAnnotationValue("nameProps").equals("pserver-name2"));
59             assertTrue(vertSchema.getAnnotationValue("dependentOn") == null);
60
61             PropertySchema propSchema = vertSchema.getPropertySchema("hostname");
62             assertTrue(propSchema.getName().equals("hostname"));
63             assertTrue(propSchema.getDefaultValue().equals(""));
64             assertTrue(propSchema.isRequired());
65             assertTrue(!propSchema.isKey());
66             assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
67             Object obj = propSchema.validateValue("somestring");
68             assertTrue(obj instanceof String);
69
70             propSchema = vertSchema.getPropertySchema("in-maint");
71             assertTrue(propSchema.getName().equals("in-maint"));
72             assertTrue(propSchema.getDefaultValue().equals("false"));
73             assertTrue(!propSchema.isRequired());
74             assertTrue(!propSchema.isKey());
75             assertTrue(!propSchema.isReserved());
76             assertTrue(propSchema.getDataType().getType().compareTo(Type.BOOL) == 0);
77             obj = propSchema.validateValue("True");
78             assertTrue(obj instanceof Boolean);
79             obj = propSchema.validateValue("false");
80             assertTrue(obj instanceof Boolean);
81             assertTrue(propSchema.getDataType().validateValue("badValue") == null);
82
83
84             propSchema = vertSchema.getPropertySchema("aai-node-type");
85             assertTrue(propSchema.getName().equals("aai-node-type"));
86             assertTrue(propSchema.getDefaultValue().equals(""));
87             assertTrue(!propSchema.isRequired());
88             assertTrue(!propSchema.isKey());
89             assertTrue(propSchema.isReserved());
90             assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
91
92             propSchema = vertSchema.getPropertySchema("pserver-id");
93             assertTrue(propSchema.getName().equals("pserver-id"));
94             assertTrue(propSchema.getDefaultValue().equals(""));
95             assertTrue(propSchema.isRequired());
96             assertTrue(!propSchema.isReserved());
97             assertTrue(propSchema.isKey());
98             assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
99
100             propSchema = vertSchema.getPropertySchema("number-of-cpus");
101             assertTrue(propSchema.getName().equals("number-of-cpus"));
102             assertTrue(propSchema.getAnnotationValue("source-of-truth-type").equals("openstack"));
103             assertTrue(propSchema.getDataType().getType().compareTo(Type.INT) == 0);
104             obj = propSchema.validateValue("35");
105             assertTrue(obj instanceof Integer);
106             obj = propSchema.validateValue("5.0");
107             assertTrue(obj instanceof Integer);
108             assertTrue(propSchema.getDataType().validateValue("5.5") == null);
109             assertTrue(propSchema.getDataType().validateValue("xyz") == null);
110
111             // Validate edge schema
112             assertTrue(edgeSchema.getName().equals("org.onap.relationships.inventory.LocatedIn"));
113             assertTrue(edgeSchema.getSource().equals("cloud-region"));
114             assertTrue(edgeSchema.getTarget().equals("zone"));
115             assertTrue(edgeSchema.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE));
116             assertTrue(edgeSchema.getAnnotationValue("contains-other-v").equals("NONE"));
117             assertTrue(edgeSchema.getPropertySchema("prevent-delete").getDataType().getType().equals(Type.STRING));
118
119             // Validate 'dependentOn' annotation
120             vertSchema = schemaProvider.getVertexSchema("tenant", schemaProvider.getLatestSchemaVersion());
121             assertTrue(vertSchema.getAnnotationValue("dependentOn").equals("cloud-region"));
122         }
123         catch (Exception ex) {
124             StringWriter writer = new StringWriter();
125             PrintWriter printWriter = new PrintWriter(writer);
126             ex.printStackTrace(printWriter);
127             System.out.println(writer.toString());
128             assertTrue(false);
129         }
130     }
131
132     @Test
133     public void testAdjacentEdges() throws SchemaProviderException {
134         try {
135             OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
136             schemaProvider.loadSchema();
137
138             Set<EdgeSchema> edgeSchemaList =
139                     schemaProvider.getAdjacentEdgeSchema("snapshot", schemaProvider.getLatestSchemaVersion());
140
141             // Validate edge schema
142             assertTrue(edgeSchemaList.size() == 2);
143
144             for (EdgeSchema es : edgeSchemaList) {
145                 System.out.println(es.toString());
146                 if (es.getName().equals("org.onap.relationships.inventory.BelongsTo")) {
147                     assertTrue(es.getSource().equals("snapshot"));
148                     assertTrue(es.getTarget().equals("cloud-region"));
149                     assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE));
150                 }
151                 else if (es.getName().equals("org.onap.relationships.inventory.Uses")) {
152                     assertTrue(es.getSource().equals("vserver"));
153                     assertTrue(es.getTarget().equals("snapshot"));
154                     assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.ONE_2_ONE));
155                 }
156                 else {
157                     assertTrue(false);
158                 }
159             }
160         }
161         catch (Exception ex) {
162             StringWriter writer = new StringWriter();
163             PrintWriter printWriter = new PrintWriter(writer);
164             ex.printStackTrace(printWriter);
165             System.out.println(writer.toString());
166             assertTrue(false);
167         }
168     }
169
170     @Test
171     public void testValidSourceTargetEdge() throws SchemaProviderException {
172         try {
173             OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
174             schemaProvider.loadSchema();
175
176             Set<EdgeSchema> edgeSchemaList =
177                     schemaProvider.getEdgeSchemaForSourceTarget("service-instance", "customer",
178                             schemaProvider.getLatestSchemaVersion());
179
180             // Validate edge schema
181             assertTrue(edgeSchemaList.size() == 1);
182             assertTrue(edgeSchemaList.iterator().next().getName().equals("ncso.related-to"));
183             assertTrue(edgeSchemaList.iterator().next().getSource().equals("service-instance"));
184             assertTrue(edgeSchemaList.iterator().next().getTarget().equals("customer"));
185             assertTrue(edgeSchemaList.iterator().next().getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY));
186
187             edgeSchemaList =
188                     schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "complex",
189                             schemaProvider.getLatestSchemaVersion());
190
191             // Validate edge schema
192             assertTrue(edgeSchemaList.size() == 2);
193
194             for (EdgeSchema es : edgeSchemaList) {
195                 System.out.println(es.toString());
196                 if (es.getName().equals("org.onap.relationships.inventory.FoundIn")) {
197                     assertTrue(es.getSource().equals("cloud-region"));
198                     assertTrue(es.getTarget().equals("complex"));
199                     assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY));
200                 }
201                 else if (es.getName().equals("org.onap.relationships.inventory.LocatedIn")) {
202                     assertTrue(es.getSource().equals("cloud-region"));
203                     assertTrue(es.getTarget().equals("complex"));
204                     assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE));
205                 }
206                 else {
207                     assertTrue(false);
208                 }
209             }
210
211             edgeSchemaList =
212                     schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "bad-node",
213                             schemaProvider.getLatestSchemaVersion());
214
215             // Validate edge schema
216             assertTrue(edgeSchemaList.size() == 0);
217         }
218         catch (Exception ex) {
219             StringWriter writer = new StringWriter();
220             PrintWriter printWriter = new PrintWriter(writer);
221             ex.printStackTrace(printWriter);
222             System.out.println(writer.toString());
223             assertTrue(false);
224         }
225     }
226
227     @Test
228     public void testInvalidVertexOrEdge() throws SchemaProviderException {
229         try {
230             OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
231             schemaProvider.loadSchema();
232
233             VertexSchema vertSchema =
234                     schemaProvider.getVertexSchema("bad-node", schemaProvider.getLatestSchemaVersion());
235             assertTrue(vertSchema == null);
236
237             EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
238                     "cloud-region", "bad-node", schemaProvider.getLatestSchemaVersion());
239             assertTrue(edgeSchema == null);
240
241             Set<EdgeSchema> edgeSchemaList =
242                     schemaProvider.getAdjacentEdgeSchema("org.onap.nodes.bad-node",
243                             schemaProvider.getLatestSchemaVersion());
244             assertTrue(edgeSchemaList.isEmpty());
245         }
246         catch (Exception ex) {
247             StringWriter writer = new StringWriter();
248             PrintWriter printWriter = new PrintWriter(writer);
249             ex.printStackTrace(printWriter);
250             System.out.println(writer.toString());
251             assertTrue(false);
252         }
253     }
254 }