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;
25 import static org.junit.Assert.assertTrue;
27 import java.io.PrintWriter;
28 import java.io.StringWriter;
31 import org.junit.Test;
32 import org.junit.runner.RunWith;
33 import org.mockito.junit.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;
40 @RunWith(MockitoJUnitRunner.Silent.class)
41 public class OxmSchemaProviderTest extends OxmSchemaServiceSetup {
44 public void testLoadingSchema() throws SchemaProviderException {
46 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
47 schemaProvider.loadSchema();
49 VertexSchema vertSchema = 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);
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);
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);
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);
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));
119 // Validate 'dependentOn' annotation
120 vertSchema = schemaProvider.getVertexSchema("tenant", schemaProvider.getLatestSchemaVersion());
121 assertTrue(vertSchema.getAnnotationValue("dependentOn").equals("cloud-region"));
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());
133 public void testAdjacentEdges() throws SchemaProviderException {
135 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
136 schemaProvider.loadSchema();
138 Set<EdgeSchema> edgeSchemaList =
139 schemaProvider.getAdjacentEdgeSchema("snapshot", schemaProvider.getLatestSchemaVersion());
141 // Validate edge schema
142 assertTrue(edgeSchemaList.size() == 2);
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));
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));
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());
171 public void testValidSourceTargetEdge() throws SchemaProviderException {
173 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
174 schemaProvider.loadSchema();
176 Set<EdgeSchema> edgeSchemaList =
177 schemaProvider.getEdgeSchemaForSourceTarget("service-instance", "customer",
178 schemaProvider.getLatestSchemaVersion());
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));
188 schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "complex",
189 schemaProvider.getLatestSchemaVersion());
191 // Validate edge schema
192 assertTrue(edgeSchemaList.size() == 2);
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));
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));
212 schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "bad-node",
213 schemaProvider.getLatestSchemaVersion());
215 // Validate edge schema
216 assertTrue(edgeSchemaList.size() == 0);
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());
228 public void testInvalidVertexOrEdge() throws SchemaProviderException {
230 OxmSchemaProvider schemaProvider = new OxmSchemaProvider();
231 schemaProvider.loadSchema();
233 VertexSchema vertSchema =
234 schemaProvider.getVertexSchema("bad-node", schemaProvider.getLatestSchemaVersion());
235 assertTrue(vertSchema == null);
237 EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn",
238 "cloud-region", "bad-node", schemaProvider.getLatestSchemaVersion());
239 assertTrue(edgeSchema == null);
241 Set<EdgeSchema> edgeSchemaList =
242 schemaProvider.getAdjacentEdgeSchema("org.onap.nodes.bad-node",
243 schemaProvider.getLatestSchemaVersion());
244 assertTrue(edgeSchemaList.isEmpty());
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());