blob: 9e40b390f0786efe22417e7ddb0689c78e15457f [file] [log] [blame]
Bharat saraswalf53b29a2016-09-27 15:35:15 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2016-present Open Networking Foundation
Bharat saraswalf53b29a2016-09-27 15:35:15 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yms.app.ysr;
18
19import org.junit.Rule;
20import org.junit.Test;
21import org.junit.rules.ExpectedException;
Bharat saraswalf53b29a2016-09-27 15:35:15 +053022import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network1.rev20151208.IetfNetwork1Service;
23import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2Service;
Bharat saraswal1b0a39a2016-12-16 16:29:02 +053024import org.onosproject.yang.gen.v1.ydt.test.rev20160524.TestService;
Bharat saraswalf53b29a2016-09-27 15:35:15 +053025import org.onosproject.yangutils.datamodel.YangNode;
Bharat saraswal1b0a39a2016-12-16 16:29:02 +053026import org.onosproject.yangutils.datamodel.YangRevision;
Bharat saraswalf53b29a2016-09-27 15:35:15 +053027import org.onosproject.yangutils.datamodel.YangSchemaNode;
Bharat saraswal1b0a39a2016-12-16 16:29:02 +053028import org.onosproject.yms.app.yab.TestManager;
Bharat saraswalf53b29a2016-09-27 15:35:15 +053029
30import java.io.IOException;
31
32import static org.hamcrest.MatcherAssert.assertThat;
33import static org.hamcrest.core.Is.is;
34
35/**
36 * Unit test case for default schema registry.
37 */
38public class DefaultYangSchemaRegistryTest {
39
40 private static final String SERVICE_NAME_1 =
41 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
42 ".network1.rev20151208.IetfNetwork1Service";
43 private static final String SCHEMA_NAME_1 = "ietf-network1";
44 private static final String EVENT_NAME_1 =
45 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
46 ".network1.rev20151208.ietfnetwork1.IetfNetwork1Event";
47 private static final String INTERFACE_NAME_1 =
48 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
49 ".network1.rev20151208.IetfNetwork1";
50 private static final String OP_PARAM_NAME_1 =
51 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
52 ".network1.rev20151208.IetfNetwork1OpParam";
53
54 private static final String SERVICE_NAME_2 =
55 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
56 ".network2.rev20151208.IetfNetwork2Service";
57 private static final String SCHEMA_NAME_2 = "ietf-network2";
58 private static final String EVENT_NAME_2 =
59 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
60 ".network2.rev20151208.ietfnetwork2.IetfNetwork2Event";
61 private static final String INTERFACE_NAME_2 =
62 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
63 ".network2.rev20151208.IetfNetwork2";
64 private static final String OP_PARAM_NAME_2 =
65 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
66 ".network2.rev20151208.IetfNetwork2OpParam";
67
68 private static final String SERVICE_NAME_3 =
69 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
70 ".network3.rev20151208.IetfNetwork3Service";
71 private static final String SCHEMA_NAME_3 = "ietf-network3";
72 private static final String EVENT_NAME_3 =
73 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
74 ".network3.rev20151208.ietfnetwork3.IetfNetwork3Event";
75 private static final String INTERFACE_NAME_3 =
76 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
77 ".network3.rev20151208.IetfNetwork3";
78 private static final String OP_PARAM_NAME_3 =
79 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
80 ".network3.rev20151208.IetfNetwork3OpParam";
81
sonu guptaeff184b2016-11-24 12:43:49 +053082 private static final String SCHEMA_NAME_4_14 = "ietf-network4@2014-00-08";
83 private static final String SCHEMA_NAME_4_15 = "ietf-network4@2015-00-08";
84 private static final String SCHEMA_NAME_4_16 = "ietf-network4@2016-00-08";
85 private static final String SCHEMA_NAME_4_17 = "ietf-network4@2017-00-08";
Bharat saraswalf53b29a2016-09-27 15:35:15 +053086 private static final String SCHEMA_NAME_4 = "ietf-network4";
87 private static final String SERVICE_NAME_REV_14 =
88 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
89 ".network4.rev20141208.IetfNetwork4Service";
90 private static final String EVENT_NAME_REV_14 =
91 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
92 ".network4.rev20141208.ietfnetwork4.IetfNetwork4Event";
93 private static final String INTERFACE_NAME_REV_14 =
94 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
95 ".network4.rev20141208.IetfNetwork4";
96 private static final String OP_PARAM_NAME_REV_14 =
97 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
98 ".network4.rev20141208.IetfNetwork4OpParam";
99
100 private static final String SERVICE_NAME_REV_15 =
101 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
102 ".network4.rev20151208.IetfNetwork4Service";
103 private static final String EVENT_NAME_REV_15 =
104 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
105 ".network4.rev20151208.ietfnetwork4.IetfNetwork4Event";
106 private static final String INTERFACE_NAME_REV_15 =
107 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
108 ".network4.rev20151208.IetfNetwork4";
109 private static final String OP_PARAM_NAME_REV_15 =
110 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
111 ".network4.rev20151208.IetfNetwork4OpParam";
112
113 private static final String SERVICE_NAME_REV_16 =
114 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
115 ".network4.rev20161208.IetfNetwork4Service";
116
117 private static final String EVENT_NAME_REV_16 =
118 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
119 ".network4.rev20161208.ietfnetwork4.IetfNetwork4Event";
120 private static final String INTERFACE_NAME_REV_16 =
121 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
122 ".network4.rev20161208.IetfNetwork4";
123 private static final String OP_PARAM_NAME_REV_16 =
124 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
125 ".network4.rev20161208.IetfNetwork4OpParam";
126
127 private static final String SERVICE_NAME_REV_17 =
128 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
129 ".network4.rev20171208.IetfNetwork4Service";
130 private static final String EVENT_NAME_REV_17 =
131 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
132 ".network4.rev20171208.ietfnetwork4.IetfNetwork4Event";
133 private static final String INTERFACE_NAME_REV_17 =
134 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
135 ".network4.rev20171208.IetfNetwork4";
136 private static final String OP_PARAM_NAME_REV_17 =
137 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
138 ".network4.rev20171208.IetfNetwork4OpParam";
139
140 private static final String SERVICE_NAME_NO_REV =
141 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
142 ".network4.IetfNetwork4Service";
143 private static final String EVENT_NAME_NO_REV =
144 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
145 ".network4.ietfnetwork4.IetfNetwork4Event";
146 private static final String INTERFACE_NAME_NO_REV =
147 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
148 ".network4.IetfNetwork4";
149 private static final String OP_PARAM_NAME_NO_REV =
150 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
151 ".network4.IetfNetwork4OpParam";
152
153 private static final String DATE = "2014-00-08";
154 private static final String SCHEMA_NAME_WITH_DATE =
155 "ietf-network4@2014-00-08";
156
157 private static final String UN_REG_SCHEMA_NAME = "ietf-routing";
158 private static final String UN_REG_INTERFACE_NAME = "IetfRouting";
159 private static final String UN_REG_OP_PARAM_NAME = "IetfRoutingOpParam";
160 private static final String UN_REG_SERVICE_NAME = "IetfRoutingService";
161 private static final String UN_REG_EVENT_NAME = "IetfRoutingEvent";
Bharat saraswal1b0a39a2016-12-16 16:29:02 +0530162 private static final String CHECK = "check";
163 private static final String DATE_NAMESPACE = "2015-00-08";
164 private static final String NAMESPACE =
165 "urn:ietf:params:xml:ns:yang:ietf-network4:check:namespace";
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530166
167 private final TestYangSchemaNodeProvider testYangSchemaNodeProvider =
168 new TestYangSchemaNodeProvider();
169 @Rule
170 public ExpectedException thrown = ExpectedException.none();
171
172 /**
173 * Unit test case in which schema node should be present.
174 *
175 * @throws IOException when fails to do IO operation
176 */
177 @Test
178 public void testForGetSchemaNode()
179 throws IOException {
180
181 testYangSchemaNodeProvider.processSchemaRegistry(null);
182
183 DefaultYangSchemaRegistry registry =
184 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
185
186 YangSchemaNode yangNode =
187 registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
188 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
189
190 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
191 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
192
193 yangNode =
194 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
195 INTERFACE_NAME_1);
196 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
197
198 yangNode =
199 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
200 OP_PARAM_NAME_1);
201 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
202
203 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
204 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
205
206 //As we have not registered an application this object should be null.
207 Object object = registry.getRegisteredApplication(yangNode);
208 assertThat(true, is(object == null));
209 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_1);
210
211 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
212 assertThat(true, is(yangNode == null));
213
214 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
215 assertThat(true, is(yangNode == null));
216
217 yangNode =
218 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
219 INTERFACE_NAME_1);
220 assertThat(true, is(yangNode == null));
221
222 yangNode =
223 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
224 OP_PARAM_NAME_1);
225 assertThat(true, is(yangNode == null));
226
227 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
228 assertThat(true, is(yangNode == null));
229
230 //As we have not registered an application this object should be null.
231 object = registry.getRegisteredApplication(yangNode);
232 assertThat(true, is(object == null));
233
234 //With second service.
235 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
236 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
237
238 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
239 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
240
241 yangNode =
242 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
243 INTERFACE_NAME_2);
244 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
245
246 yangNode =
247 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
248 OP_PARAM_NAME_2);
249 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
250
251 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
252 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
253
254 //As we have not registered an application this object should be null.
255 object = registry.getRegisteredApplication(yangNode);
256 assertThat(true, is(object == null));
257
258 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_2);
259
260 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
261 assertThat(true, is(yangNode == null));
262
263 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
264 assertThat(true, is(yangNode == null));
265
266 yangNode =
267 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
268 INTERFACE_NAME_2);
269 assertThat(true, is(yangNode == null));
270
271 yangNode =
272 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
273 OP_PARAM_NAME_2);
274 assertThat(true, is(yangNode == null));
275
276 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
277 assertThat(true, is(yangNode == null));
278
279 //As we have not registered an application this object should be null.
280 object = registry.getRegisteredApplication(yangNode);
281 assertThat(true, is(object == null));
282
283 //With third service.
284 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
285 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
286
287 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
288 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
289
290 yangNode =
291 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
292 INTERFACE_NAME_3);
293 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
294
295 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
296 assertThat(true, is(yangNode == null));
297
298 yangNode =
299 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
300 OP_PARAM_NAME_3);
301 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
302
303 //As we have not registered an application this object should be null.
304 object = registry.getRegisteredApplication(yangNode);
305 assertThat(true, is(object == null));
306
307 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_3);
308
309 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
310 assertThat(true, is(yangNode == null));
311
312 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
313 assertThat(true, is(yangNode == null));
314
315 yangNode =
316 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
317 INTERFACE_NAME_3);
318 assertThat(true, is(yangNode == null));
319
320 yangNode =
321 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
322 OP_PARAM_NAME_3);
323 assertThat(true, is(yangNode == null));
324
325 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
326 assertThat(true, is(yangNode == null));
327
328 //As we have not registered an application this object should be null.
329 object = registry.getRegisteredApplication(yangNode);
330 assertThat(true, is(object == null));
331 }
332
333 /**
334 * Unit test case in which schema node should not be present.
335 *
336 * @throws IOException when fails to do IO operation
337 */
338 @Test
339 public void testForDoNotGetSchemaNode()
340 throws IOException {
341
342 DefaultYangSchemaRegistry registry =
343 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
344
345 // here all nodes should be null as we have not done any registration
346 // for this application.
347 YangSchemaNode yangNode =
348 registry.getYangSchemaNodeUsingAppName(UN_REG_SERVICE_NAME);
349 assertThat(true, is(yangNode == null));
350
351 yangNode = registry.getYangSchemaNodeUsingSchemaName(UN_REG_SCHEMA_NAME);
352 assertThat(true, is(yangNode == null));
353
354 yangNode =
355 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
356 UN_REG_INTERFACE_NAME);
357 assertThat(true, is(yangNode == null));
358
359 yangNode =
360 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
361 UN_REG_OP_PARAM_NAME);
362 assertThat(true, is(yangNode == null));
363
364 yangNode = registry.getRootYangSchemaNodeForNotification(
365 UN_REG_EVENT_NAME);
366 assertThat(true, is(yangNode == null));
367
368 //As we have not registered an application this object should be null.
369 Object object = registry.getRegisteredApplication(yangNode);
370 assertThat(true, is(object == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530371 }
372
373 /**
374 * Unit test case in which schema node should be present with multi
375 * revisions.
376 *
377 * @throws IOException when fails to do IO operation
378 */
379 @Test
380 public void testForGetSchemaNodeWhenNoRevision()
381 throws IOException {
382
383 testYangSchemaNodeProvider.processSchemaRegistry(null);
384 DefaultYangSchemaRegistry registry =
385 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
386
387 //Service with rev.
388 YangSchemaNode yangNode =
389 registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
390 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
391
sonu guptaeff184b2016-11-24 12:43:49 +0530392 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530393 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
394
395 yangNode =
396 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
397 INTERFACE_NAME_REV_15);
398 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
399
400 yangNode =
401 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
402 OP_PARAM_NAME_REV_15);
403 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
404
405 yangNode = registry.getRootYangSchemaNodeForNotification(
406 EVENT_NAME_REV_15);
407 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
408
409 //As we have not registered an application this object should be null.
410 Object object = registry.getRegisteredApplication(yangNode);
411 assertThat(true, is(object == null));
412 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
413
414 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
415 assertThat(true, is(yangNode == null));
416
417 //Here the yangNode should be the node which does not have revision.
418 // asset should pass with false.
419 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530420 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530421
422 //Service no revision.
423 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
424 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
425
426 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
427 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
428
429 yangNode =
430 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
431 INTERFACE_NAME_NO_REV);
432 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
433
434 yangNode =
435 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
436 OP_PARAM_NAME_NO_REV);
437 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
438
439 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
440 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
441
442 //As we have not registered an application this object should be null.
443 object = registry.getRegisteredApplication(yangNode);
444 assertThat(true, is(object == null));
445 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
446
447 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
448 assertThat(true, is(yangNode == null));
449
450 //Here the yangNode should be the node which have different revision.
451 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530452 assertThat(true, is(yangNode != null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530453 assertThat(true, is(((YangNode) yangNode).getRevision() != null));
454 }
455
456 /**
457 * Unit test case in which schema node should be present with multi
458 * revisions.
459 *
460 * @throws IOException when fails to do IO operation
461 */
462 @Test
463 public void testForGetSchemaNodeWhenMultiRevision()
464 throws IOException {
465
466 testYangSchemaNodeProvider.processSchemaRegistry(null);
467 DefaultYangSchemaRegistry registry =
468 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
469
470 //Service with rev.
471 YangSchemaNode yangNode =
472 registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
473 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
474
sonu guptaeff184b2016-11-24 12:43:49 +0530475 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530476 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
477
478 yangNode =
479 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
480 INTERFACE_NAME_REV_15);
481 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
482
483 yangNode =
484 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
485 OP_PARAM_NAME_REV_15);
486 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
487
488 yangNode = registry.getRootYangSchemaNodeForNotification(
489 EVENT_NAME_REV_15);
490 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
491
492 //As we have not registered an application this object should be null.
493 Object object = registry.getRegisteredApplication(yangNode);
494 assertThat(true, is(object == null));
495 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
496
497 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
498 assertThat(true, is(yangNode == null));
499
500 //Here the yangNode should be the node which does not have revision.
501 // asset should pass with false.
502 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530503 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530504
505 //Service with different revision.
sonu guptaeff184b2016-11-24 12:43:49 +0530506 yangNode = registry
507 .getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530508 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
509
sonu guptaeff184b2016-11-24 12:43:49 +0530510 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_16);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530511 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
512
513 yangNode =
514 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
515 INTERFACE_NAME_REV_16);
516 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
517
518 yangNode =
519 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
520 OP_PARAM_NAME_REV_16);
521 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
522
523 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_REV_16);
524 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
525
526 //As we have not registered an application this object should be null.
527 object = registry.getRegisteredApplication(yangNode);
528 assertThat(true, is(object == null));
529 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_16);
530
531 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
532 assertThat(true, is(yangNode == null));
533
534 //Here the yangNode should be the node which have different revision.
535 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530536 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530537
538 //Service with different revision.
539 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
540 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
541
sonu guptaeff184b2016-11-24 12:43:49 +0530542 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_17);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530543 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
544
545 yangNode =
546 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
547 INTERFACE_NAME_REV_17);
548 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
549
550 yangNode =
551 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
552 OP_PARAM_NAME_REV_17);
553 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
554
555 yangNode = registry.getRootYangSchemaNodeForNotification(
556 EVENT_NAME_REV_17);
557 assertThat(true, is(yangNode == null));
558
559 //As we have not registered an application this object should be null.
560 object = registry.getRegisteredApplication(yangNode);
561 assertThat(true, is(object == null));
562 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_17);
563
564 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
565 assertThat(true, is(yangNode == null));
566
567 //Here the yangNode should be the node which have different revision.
568 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
569 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
570
sonu guptaeff184b2016-11-24 12:43:49 +0530571 //Service no revision.
572 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
573 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
574
575 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
576 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
577
578 yangNode =
579 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
580 INTERFACE_NAME_NO_REV);
581 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
582
583 yangNode =
584 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
585 OP_PARAM_NAME_NO_REV);
586 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
587
588 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
589 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
590
591 //As we have not registered an application this object should be null.
592 object = registry.getRegisteredApplication(yangNode);
593 assertThat(true, is(object == null));
594 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
595
596 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
597 assertThat(true, is(yangNode == null));
598
599 //Here the yangNode should be the node which have different revision.
600 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
601 assertThat(true, is(yangNode != null));
602 assertThat(true, is(((YangNode) yangNode).getRevision() != null));
603
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530604 //Service with different revision.
605 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
606 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
607
sonu guptaeff184b2016-11-24 12:43:49 +0530608 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_14);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530609 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
610
611 yangNode =
612 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
613 INTERFACE_NAME_REV_14);
614 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
615
616 yangNode =
617 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
618 OP_PARAM_NAME_REV_14);
619 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
620
621 yangNode = registry.getRootYangSchemaNodeForNotification(
622 EVENT_NAME_REV_14);
623 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
624
625 //As we have not registered an application this object should be null.
626 object = registry.getRegisteredApplication(yangNode);
627 assertThat(true, is(object == null));
628 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_14);
629
630 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
631 assertThat(true, is(yangNode == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530632 }
633
634 /**
635 * Unit test case should generate exceptions.
636 */
637 @Test
638 public void testRegistration() {
639 thrown.expect(RuntimeException.class);
640 testYangSchemaNodeProvider.processSchemaRegistry(null);
641 testYangSchemaNodeProvider.processRegistrationOfApp();
642 }
643
644 /**
645 * Unit test case should not generate any exceptions and should
646 * return specific revision node.
647 */
648 @Test
649 public void testGetWithSpecificRevision() {
650 testYangSchemaNodeProvider.processSchemaRegistry(null);
651 YangSchemaNode schemaNode = testYangSchemaNodeProvider
652 .getDefaultYangSchemaRegistry()
653 .getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_WITH_DATE);
654
655 assertThat(true, is(schemaNode.getName().equals(SCHEMA_NAME_4)));
656 String date = testYangSchemaNodeProvider
657 .getDefaultYangSchemaRegistry()
658 .getDateInStringFormat(schemaNode);
659 assertThat(true, is(date.equals(DATE)));
660 }
661
662 /**
663 * Unit test case should not generate any exceptions
664 * verify notification should be checked for registration.
665 */
666 @Test
667 public void testNotification() {
sonu guptaeff184b2016-11-24 12:43:49 +0530668 MockIetfManager manager = new MockIetfManager();
669 testYangSchemaNodeProvider.processSchemaRegistry(manager);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530670 boolean isRegWithNotification =
671 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry()
sonu guptaeff184b2016-11-24 12:43:49 +0530672 .verifyNotificationObject(manager, IetfNetwork1Service.class);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530673 assertThat(true, is(isRegWithNotification));
674 isRegWithNotification = testYangSchemaNodeProvider
675 .getDefaultYangSchemaRegistry()
sonu guptaeff184b2016-11-24 12:43:49 +0530676 .verifyNotificationObject(manager, IetfNetwork2Service.class);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530677 assertThat(false, is(isRegWithNotification));
Bharat saraswal1b0a39a2016-12-16 16:29:02 +0530678 isRegWithNotification = testYangSchemaNodeProvider
679 .getDefaultYangSchemaRegistry()
680 .verifyNotificationObject(new TestManager(), TestService.class);
681 assertThat(false, is(isRegWithNotification));
682 }
683
684 /**
685 * get schema for namespace in decode test.
686 */
687 @Test
688 public void testGetNodeWrtNamespace() {
689 MockIetfManager manager = new MockIetfManager();
690 testYangSchemaNodeProvider.processSchemaRegistry(manager);
691 DefaultYangSchemaRegistry registry =
692 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
693
694 YangSchemaNode yangNode =
695 registry.getSchemaWrtNameSpace(NAMESPACE);
696 assertThat(true, is(CHECK.equals(yangNode.getName())));
697
698 YangRevision rev = ((YangNode) yangNode).getRevision();
699 assertThat(true, is(rev != null));
700
701 String date = registry.getDateInStringFormat(yangNode);
702 assertThat(true, is(DATE_NAMESPACE.equals(date)));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530703 }
sonu guptaeff184b2016-11-24 12:43:49 +0530704}