2 * ============LICENSE_START=======================================================
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.aai.schemaif.oxm;
24 import static org.junit.Assert.assertTrue;
26 import java.io.PrintWriter;
27 import java.io.StringWriter;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.runners.MockitoJUnitRunner;
33 import org.onap.aai.schemaif.SchemaProviderException;
34 import org.onap.aai.schemaif.definitions.EdgeSchema;
35 import org.onap.aai.schemaif.definitions.PropertySchema;
36 import org.onap.aai.schemaif.definitions.VertexSchema;
37 import org.onap.aai.schemaif.definitions.types.DataType.Type;
39 @RunWith(MockitoJUnitRunner.class)
40 public class OxmSchemaProviderTest extends OxmSchemaServiceSetup {
43 public void testLoadingSchema() throws SchemaProviderException {
45 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
46 schemaProvider.loadSchema();
48 VertexSchema vertSchema =
49 schemaProvider.getVertexSchema("pserver", schemaProvider.getLatestSchemaVersion());
50 System.out.println(vertSchema.toString());
52 EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
53 "cloud-region", "zone", schemaProvider.getLatestSchemaVersion());
54 System.out.println(edgeSchema.toString());
56 // Validate vertex schema
57 assertTrue(vertSchema.getName().equals("pserver"));
58 assertTrue(vertSchema.getAnnotationValue("nameProps").equals("pserver-name2"));
59 assertTrue(vertSchema.getAnnotationValue("dependentOn") == null);
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);
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);
83 propSchema = vertSchema.getPropertySchema("aai-node-type");
84 assertTrue(propSchema.getName().equals("aai-node-type"));
85 assertTrue(propSchema.getDefaultValue().equals(""));
86 assertTrue(!propSchema.isRequired());
87 assertTrue(!propSchema.isKey());
88 assertTrue(propSchema.isReserved());
89 assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
91 propSchema = vertSchema.getPropertySchema("pserver-id");
92 assertTrue(propSchema.getName().equals("pserver-id"));
93 assertTrue(propSchema.getDefaultValue().equals(""));
94 assertTrue(propSchema.isRequired());
95 assertTrue(!propSchema.isReserved());
96 assertTrue(propSchema.isKey());
97 assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0);
99 propSchema = vertSchema.getPropertySchema("number-of-cpus");
100 assertTrue(propSchema.getName().equals("number-of-cpus"));
101 assertTrue(propSchema.getAnnotationValue("source-of-truth-type").equals("openstack"));
102 assertTrue(propSchema.getDataType().getType().compareTo(Type.INT) == 0);
103 obj = propSchema.validateValue("35");
104 assertTrue(obj instanceof Integer);
105 obj = propSchema.validateValue("5.0");
106 assertTrue(obj instanceof Integer);
107 assertTrue(propSchema.getDataType().validateValue("5.5") == null);
108 assertTrue(propSchema.getDataType().validateValue("xyz") == null);
110 // Validate edge schema
111 assertTrue(edgeSchema.getName().equals("org.onap.relationships.inventory.LocatedIn"));
112 assertTrue(edgeSchema.getSource().equals("cloud-region"));
113 assertTrue(edgeSchema.getTarget().equals("zone"));
114 assertTrue(edgeSchema.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE));
115 assertTrue(edgeSchema.getAnnotationValue("contains-other-v").equals("NONE"));
116 assertTrue(edgeSchema.getPropertySchema("prevent-delete").getDataType().getType().equals(Type.STRING));
118 // Validate 'dependentOn' annotation
119 vertSchema = schemaProvider.getVertexSchema("tenant", schemaProvider.getLatestSchemaVersion());
120 assertTrue(vertSchema.getAnnotationValue("dependentOn").equals("cloud-region"));
121 } catch (Exception ex) {
122 StringWriter writer = new StringWriter();
123 PrintWriter printWriter = new PrintWriter(writer);
124 ex.printStackTrace(printWriter);
125 System.out.println(writer.toString());
131 public void testAdjacentEdges() throws SchemaProviderException {
133 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
134 schemaProvider.loadSchema();
136 Set<EdgeSchema> edgeSchemaList =
137 schemaProvider.getAdjacentEdgeSchema("snapshot", schemaProvider.getLatestSchemaVersion());
139 // Validate edge schema
140 assertTrue(edgeSchemaList.size() == 2);
142 for (EdgeSchema es : edgeSchemaList) {
143 System.out.println(es.toString());
144 if (es.getName().equals("org.onap.relationships.inventory.BelongsTo")) {
145 assertTrue(es.getSource().equals("snapshot"));
146 assertTrue(es.getTarget().equals("cloud-region"));
147 assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE));
148 } else if (es.getName().equals("org.onap.relationships.inventory.Uses")) {
149 assertTrue(es.getSource().equals("vserver"));
150 assertTrue(es.getTarget().equals("snapshot"));
151 assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.ONE_2_ONE));
156 } catch (Exception ex) {
157 StringWriter writer = new StringWriter();
158 PrintWriter printWriter = new PrintWriter(writer);
159 ex.printStackTrace(printWriter);
160 System.out.println(writer.toString());
166 public void testValidSourceTargetEdge() throws SchemaProviderException {
168 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
169 schemaProvider.loadSchema();
171 Set<EdgeSchema> edgeSchemaList = schemaProvider.getEdgeSchemaForSourceTarget("service-instance", "customer",
172 schemaProvider.getLatestSchemaVersion());
174 // Validate edge schema
175 assertTrue(edgeSchemaList.size() == 1);
176 assertTrue(edgeSchemaList.iterator().next().getName().equals("ncso.related-to"));
177 assertTrue(edgeSchemaList.iterator().next().getSource().equals("service-instance"));
178 assertTrue(edgeSchemaList.iterator().next().getTarget().equals("customer"));
179 assertTrue(edgeSchemaList.iterator().next().getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY));
181 edgeSchemaList = schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "complex",
182 schemaProvider.getLatestSchemaVersion());
184 // Validate edge schema
185 assertTrue(edgeSchemaList.size() == 2);
187 for (EdgeSchema es : edgeSchemaList) {
188 System.out.println(es.toString());
189 if (es.getName().equals("org.onap.relationships.inventory.FoundIn")) {
190 assertTrue(es.getSource().equals("cloud-region"));
191 assertTrue(es.getTarget().equals("complex"));
192 assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY));
193 } else if (es.getName().equals("org.onap.relationships.inventory.LocatedIn")) {
194 assertTrue(es.getSource().equals("cloud-region"));
195 assertTrue(es.getTarget().equals("complex"));
196 assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE));
202 edgeSchemaList = schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "bad-node",
203 schemaProvider.getLatestSchemaVersion());
205 // Validate edge schema
206 assertTrue(edgeSchemaList.size() == 0);
207 } catch (Exception ex) {
208 StringWriter writer = new StringWriter();
209 PrintWriter printWriter = new PrintWriter(writer);
210 ex.printStackTrace(printWriter);
211 System.out.println(writer.toString());
217 public void testInvalidVertexOrEdge() throws SchemaProviderException {
219 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
220 schemaProvider.loadSchema();
222 VertexSchema vertSchema =
223 schemaProvider.getVertexSchema("bad-node", schemaProvider.getLatestSchemaVersion());
224 assertTrue(vertSchema == null);
226 EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
227 "cloud-region", "bad-node", schemaProvider.getLatestSchemaVersion());
228 assertTrue(edgeSchema == null);
230 Set<EdgeSchema> edgeSchemaList = schemaProvider.getAdjacentEdgeSchema("org.onap.nodes.bad-node",
231 schemaProvider.getLatestSchemaVersion());
232 assertTrue(edgeSchemaList.isEmpty());
233 } catch (Exception ex) {
234 StringWriter writer = new StringWriter();
235 PrintWriter printWriter = new PrintWriter(writer);
236 ex.printStackTrace(printWriter);
237 System.out.println(writer.toString());