blob: bf8d46a5f02fd4a7584aac671de139e13bff705f [file] [log] [blame]
Bharat saraswalf53b29a2016-09-27 15:35:15 +05301/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
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;
24import org.onosproject.yangutils.datamodel.YangNode;
25import org.onosproject.yangutils.datamodel.YangSchemaNode;
26
27import java.io.IOException;
28
29import static org.hamcrest.MatcherAssert.assertThat;
30import static org.hamcrest.core.Is.is;
31
32/**
33 * Unit test case for default schema registry.
34 */
35public class DefaultYangSchemaRegistryTest {
36
37 private static final String SERVICE_NAME_1 =
38 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
39 ".network1.rev20151208.IetfNetwork1Service";
40 private static final String SCHEMA_NAME_1 = "ietf-network1";
41 private static final String EVENT_NAME_1 =
42 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
43 ".network1.rev20151208.ietfnetwork1.IetfNetwork1Event";
44 private static final String INTERFACE_NAME_1 =
45 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
46 ".network1.rev20151208.IetfNetwork1";
47 private static final String OP_PARAM_NAME_1 =
48 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
49 ".network1.rev20151208.IetfNetwork1OpParam";
50
51 private static final String SERVICE_NAME_2 =
52 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
53 ".network2.rev20151208.IetfNetwork2Service";
54 private static final String SCHEMA_NAME_2 = "ietf-network2";
55 private static final String EVENT_NAME_2 =
56 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
57 ".network2.rev20151208.ietfnetwork2.IetfNetwork2Event";
58 private static final String INTERFACE_NAME_2 =
59 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
60 ".network2.rev20151208.IetfNetwork2";
61 private static final String OP_PARAM_NAME_2 =
62 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
63 ".network2.rev20151208.IetfNetwork2OpParam";
64
65 private static final String SERVICE_NAME_3 =
66 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
67 ".network3.rev20151208.IetfNetwork3Service";
68 private static final String SCHEMA_NAME_3 = "ietf-network3";
69 private static final String EVENT_NAME_3 =
70 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
71 ".network3.rev20151208.ietfnetwork3.IetfNetwork3Event";
72 private static final String INTERFACE_NAME_3 =
73 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
74 ".network3.rev20151208.IetfNetwork3";
75 private static final String OP_PARAM_NAME_3 =
76 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
77 ".network3.rev20151208.IetfNetwork3OpParam";
78
sonu guptaeff184b2016-11-24 12:43:49 +053079 private static final String SCHEMA_NAME_4_14 = "ietf-network4@2014-00-08";
80 private static final String SCHEMA_NAME_4_15 = "ietf-network4@2015-00-08";
81 private static final String SCHEMA_NAME_4_16 = "ietf-network4@2016-00-08";
82 private static final String SCHEMA_NAME_4_17 = "ietf-network4@2017-00-08";
Bharat saraswalf53b29a2016-09-27 15:35:15 +053083 private static final String SCHEMA_NAME_4 = "ietf-network4";
84 private static final String SERVICE_NAME_REV_14 =
85 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
86 ".network4.rev20141208.IetfNetwork4Service";
87 private static final String EVENT_NAME_REV_14 =
88 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
89 ".network4.rev20141208.ietfnetwork4.IetfNetwork4Event";
90 private static final String INTERFACE_NAME_REV_14 =
91 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
92 ".network4.rev20141208.IetfNetwork4";
93 private static final String OP_PARAM_NAME_REV_14 =
94 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
95 ".network4.rev20141208.IetfNetwork4OpParam";
96
97 private static final String SERVICE_NAME_REV_15 =
98 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
99 ".network4.rev20151208.IetfNetwork4Service";
100 private static final String EVENT_NAME_REV_15 =
101 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
102 ".network4.rev20151208.ietfnetwork4.IetfNetwork4Event";
103 private static final String INTERFACE_NAME_REV_15 =
104 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
105 ".network4.rev20151208.IetfNetwork4";
106 private static final String OP_PARAM_NAME_REV_15 =
107 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
108 ".network4.rev20151208.IetfNetwork4OpParam";
109
110 private static final String SERVICE_NAME_REV_16 =
111 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
112 ".network4.rev20161208.IetfNetwork4Service";
113
114 private static final String EVENT_NAME_REV_16 =
115 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
116 ".network4.rev20161208.ietfnetwork4.IetfNetwork4Event";
117 private static final String INTERFACE_NAME_REV_16 =
118 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
119 ".network4.rev20161208.IetfNetwork4";
120 private static final String OP_PARAM_NAME_REV_16 =
121 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
122 ".network4.rev20161208.IetfNetwork4OpParam";
123
124 private static final String SERVICE_NAME_REV_17 =
125 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
126 ".network4.rev20171208.IetfNetwork4Service";
127 private static final String EVENT_NAME_REV_17 =
128 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
129 ".network4.rev20171208.ietfnetwork4.IetfNetwork4Event";
130 private static final String INTERFACE_NAME_REV_17 =
131 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
132 ".network4.rev20171208.IetfNetwork4";
133 private static final String OP_PARAM_NAME_REV_17 =
134 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
135 ".network4.rev20171208.IetfNetwork4OpParam";
136
137 private static final String SERVICE_NAME_NO_REV =
138 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
139 ".network4.IetfNetwork4Service";
140 private static final String EVENT_NAME_NO_REV =
141 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
142 ".network4.ietfnetwork4.IetfNetwork4Event";
143 private static final String INTERFACE_NAME_NO_REV =
144 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
145 ".network4.IetfNetwork4";
146 private static final String OP_PARAM_NAME_NO_REV =
147 "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
148 ".network4.IetfNetwork4OpParam";
149
150 private static final String DATE = "2014-00-08";
151 private static final String SCHEMA_NAME_WITH_DATE =
152 "ietf-network4@2014-00-08";
153
154 private static final String UN_REG_SCHEMA_NAME = "ietf-routing";
155 private static final String UN_REG_INTERFACE_NAME = "IetfRouting";
156 private static final String UN_REG_OP_PARAM_NAME = "IetfRoutingOpParam";
157 private static final String UN_REG_SERVICE_NAME = "IetfRoutingService";
158 private static final String UN_REG_EVENT_NAME = "IetfRoutingEvent";
159
160 private final TestYangSchemaNodeProvider testYangSchemaNodeProvider =
161 new TestYangSchemaNodeProvider();
162 @Rule
163 public ExpectedException thrown = ExpectedException.none();
164
165 /**
166 * Unit test case in which schema node should be present.
167 *
168 * @throws IOException when fails to do IO operation
169 */
170 @Test
171 public void testForGetSchemaNode()
172 throws IOException {
173
174 testYangSchemaNodeProvider.processSchemaRegistry(null);
175
176 DefaultYangSchemaRegistry registry =
177 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
178
179 YangSchemaNode yangNode =
180 registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
181 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
182
183 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
184 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
185
186 yangNode =
187 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
188 INTERFACE_NAME_1);
189 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
190
191 yangNode =
192 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
193 OP_PARAM_NAME_1);
194 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
195
196 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
197 assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
198
199 //As we have not registered an application this object should be null.
200 Object object = registry.getRegisteredApplication(yangNode);
201 assertThat(true, is(object == null));
202 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_1);
203
204 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
205 assertThat(true, is(yangNode == null));
206
207 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
208 assertThat(true, is(yangNode == null));
209
210 yangNode =
211 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
212 INTERFACE_NAME_1);
213 assertThat(true, is(yangNode == null));
214
215 yangNode =
216 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
217 OP_PARAM_NAME_1);
218 assertThat(true, is(yangNode == null));
219
220 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
221 assertThat(true, is(yangNode == null));
222
223 //As we have not registered an application this object should be null.
224 object = registry.getRegisteredApplication(yangNode);
225 assertThat(true, is(object == null));
226
227 //With second service.
228 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
229 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
230
231 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
232 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
233
234 yangNode =
235 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
236 INTERFACE_NAME_2);
237 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
238
239 yangNode =
240 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
241 OP_PARAM_NAME_2);
242 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
243
244 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
245 assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
246
247 //As we have not registered an application this object should be null.
248 object = registry.getRegisteredApplication(yangNode);
249 assertThat(true, is(object == null));
250
251 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_2);
252
253 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
254 assertThat(true, is(yangNode == null));
255
256 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
257 assertThat(true, is(yangNode == null));
258
259 yangNode =
260 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
261 INTERFACE_NAME_2);
262 assertThat(true, is(yangNode == null));
263
264 yangNode =
265 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
266 OP_PARAM_NAME_2);
267 assertThat(true, is(yangNode == null));
268
269 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
270 assertThat(true, is(yangNode == null));
271
272 //As we have not registered an application this object should be null.
273 object = registry.getRegisteredApplication(yangNode);
274 assertThat(true, is(object == null));
275
276 //With third service.
277 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
278 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
279
280 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
281 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
282
283 yangNode =
284 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
285 INTERFACE_NAME_3);
286 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
287
288 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
289 assertThat(true, is(yangNode == null));
290
291 yangNode =
292 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
293 OP_PARAM_NAME_3);
294 assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
295
296 //As we have not registered an application this object should be null.
297 object = registry.getRegisteredApplication(yangNode);
298 assertThat(true, is(object == null));
299
300 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_3);
301
302 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
303 assertThat(true, is(yangNode == null));
304
305 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
306 assertThat(true, is(yangNode == null));
307
308 yangNode =
309 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
310 INTERFACE_NAME_3);
311 assertThat(true, is(yangNode == null));
312
313 yangNode =
314 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
315 OP_PARAM_NAME_3);
316 assertThat(true, is(yangNode == null));
317
318 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
319 assertThat(true, is(yangNode == null));
320
321 //As we have not registered an application this object should be null.
322 object = registry.getRegisteredApplication(yangNode);
323 assertThat(true, is(object == null));
324 }
325
326 /**
327 * Unit test case in which schema node should not be present.
328 *
329 * @throws IOException when fails to do IO operation
330 */
331 @Test
332 public void testForDoNotGetSchemaNode()
333 throws IOException {
334
335 DefaultYangSchemaRegistry registry =
336 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
337
338 // here all nodes should be null as we have not done any registration
339 // for this application.
340 YangSchemaNode yangNode =
341 registry.getYangSchemaNodeUsingAppName(UN_REG_SERVICE_NAME);
342 assertThat(true, is(yangNode == null));
343
344 yangNode = registry.getYangSchemaNodeUsingSchemaName(UN_REG_SCHEMA_NAME);
345 assertThat(true, is(yangNode == null));
346
347 yangNode =
348 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
349 UN_REG_INTERFACE_NAME);
350 assertThat(true, is(yangNode == null));
351
352 yangNode =
353 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
354 UN_REG_OP_PARAM_NAME);
355 assertThat(true, is(yangNode == null));
356
357 yangNode = registry.getRootYangSchemaNodeForNotification(
358 UN_REG_EVENT_NAME);
359 assertThat(true, is(yangNode == null));
360
361 //As we have not registered an application this object should be null.
362 Object object = registry.getRegisteredApplication(yangNode);
363 assertThat(true, is(object == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530364 }
365
366 /**
367 * Unit test case in which schema node should be present with multi
368 * revisions.
369 *
370 * @throws IOException when fails to do IO operation
371 */
372 @Test
373 public void testForGetSchemaNodeWhenNoRevision()
374 throws IOException {
375
376 testYangSchemaNodeProvider.processSchemaRegistry(null);
377 DefaultYangSchemaRegistry registry =
378 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
379
380 //Service with rev.
381 YangSchemaNode yangNode =
382 registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
383 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
384
sonu guptaeff184b2016-11-24 12:43:49 +0530385 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530386 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
387
388 yangNode =
389 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
390 INTERFACE_NAME_REV_15);
391 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
392
393 yangNode =
394 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
395 OP_PARAM_NAME_REV_15);
396 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
397
398 yangNode = registry.getRootYangSchemaNodeForNotification(
399 EVENT_NAME_REV_15);
400 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
401
402 //As we have not registered an application this object should be null.
403 Object object = registry.getRegisteredApplication(yangNode);
404 assertThat(true, is(object == null));
405 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
406
407 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
408 assertThat(true, is(yangNode == null));
409
410 //Here the yangNode should be the node which does not have revision.
411 // asset should pass with false.
412 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530413 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530414
415 //Service no revision.
416 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
417 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
418
419 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
420 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
421
422 yangNode =
423 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
424 INTERFACE_NAME_NO_REV);
425 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
426
427 yangNode =
428 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
429 OP_PARAM_NAME_NO_REV);
430 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
431
432 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
433 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
434
435 //As we have not registered an application this object should be null.
436 object = registry.getRegisteredApplication(yangNode);
437 assertThat(true, is(object == null));
438 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
439
440 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
441 assertThat(true, is(yangNode == null));
442
443 //Here the yangNode should be the node which have different revision.
444 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530445 assertThat(true, is(yangNode != null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530446 assertThat(true, is(((YangNode) yangNode).getRevision() != null));
447 }
448
449 /**
450 * Unit test case in which schema node should be present with multi
451 * revisions.
452 *
453 * @throws IOException when fails to do IO operation
454 */
455 @Test
456 public void testForGetSchemaNodeWhenMultiRevision()
457 throws IOException {
458
459 testYangSchemaNodeProvider.processSchemaRegistry(null);
460 DefaultYangSchemaRegistry registry =
461 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
462
463 //Service with rev.
464 YangSchemaNode yangNode =
465 registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
466 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
467
sonu guptaeff184b2016-11-24 12:43:49 +0530468 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530469 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
470
471 yangNode =
472 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
473 INTERFACE_NAME_REV_15);
474 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
475
476 yangNode =
477 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
478 OP_PARAM_NAME_REV_15);
479 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
480
481 yangNode = registry.getRootYangSchemaNodeForNotification(
482 EVENT_NAME_REV_15);
483 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
484
485 //As we have not registered an application this object should be null.
486 Object object = registry.getRegisteredApplication(yangNode);
487 assertThat(true, is(object == null));
488 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
489
490 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
491 assertThat(true, is(yangNode == null));
492
493 //Here the yangNode should be the node which does not have revision.
494 // asset should pass with false.
495 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530496 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530497
498 //Service with different revision.
sonu guptaeff184b2016-11-24 12:43:49 +0530499 yangNode = registry
500 .getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530501 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
502
sonu guptaeff184b2016-11-24 12:43:49 +0530503 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_16);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530504 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
505
506 yangNode =
507 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
508 INTERFACE_NAME_REV_16);
509 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
510
511 yangNode =
512 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
513 OP_PARAM_NAME_REV_16);
514 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
515
516 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_REV_16);
517 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
518
519 //As we have not registered an application this object should be null.
520 object = registry.getRegisteredApplication(yangNode);
521 assertThat(true, is(object == null));
522 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_16);
523
524 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
525 assertThat(true, is(yangNode == null));
526
527 //Here the yangNode should be the node which have different revision.
528 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
sonu guptaeff184b2016-11-24 12:43:49 +0530529 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530530
531 //Service with different revision.
532 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
533 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
534
sonu guptaeff184b2016-11-24 12:43:49 +0530535 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_17);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530536 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
537
538 yangNode =
539 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
540 INTERFACE_NAME_REV_17);
541 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
542
543 yangNode =
544 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
545 OP_PARAM_NAME_REV_17);
546 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
547
548 yangNode = registry.getRootYangSchemaNodeForNotification(
549 EVENT_NAME_REV_17);
550 assertThat(true, is(yangNode == null));
551
552 //As we have not registered an application this object should be null.
553 object = registry.getRegisteredApplication(yangNode);
554 assertThat(true, is(object == null));
555 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_17);
556
557 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
558 assertThat(true, is(yangNode == null));
559
560 //Here the yangNode should be the node which have different revision.
561 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
562 assertThat(true, is(((YangNode) yangNode).getRevision() == null));
563
sonu guptaeff184b2016-11-24 12:43:49 +0530564 //Service no revision.
565 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
566 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
567
568 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
569 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
570
571 yangNode =
572 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
573 INTERFACE_NAME_NO_REV);
574 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
575
576 yangNode =
577 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
578 OP_PARAM_NAME_NO_REV);
579 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
580
581 yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
582 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
583
584 //As we have not registered an application this object should be null.
585 object = registry.getRegisteredApplication(yangNode);
586 assertThat(true, is(object == null));
587 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
588
589 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
590 assertThat(true, is(yangNode == null));
591
592 //Here the yangNode should be the node which have different revision.
593 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
594 assertThat(true, is(yangNode != null));
595 assertThat(true, is(((YangNode) yangNode).getRevision() != null));
596
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530597 //Service with different revision.
598 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
599 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
600
sonu guptaeff184b2016-11-24 12:43:49 +0530601 yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_14);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530602 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
603
604 yangNode =
605 registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
606 INTERFACE_NAME_REV_14);
607 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
608
609 yangNode =
610 registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
611 OP_PARAM_NAME_REV_14);
612 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
613
614 yangNode = registry.getRootYangSchemaNodeForNotification(
615 EVENT_NAME_REV_14);
616 assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
617
618 //As we have not registered an application this object should be null.
619 object = registry.getRegisteredApplication(yangNode);
620 assertThat(true, is(object == null));
621 testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_14);
622
623 yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
624 assertThat(true, is(yangNode == null));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530625 }
626
627 /**
628 * Unit test case should generate exceptions.
629 */
630 @Test
631 public void testRegistration() {
632 thrown.expect(RuntimeException.class);
633 testYangSchemaNodeProvider.processSchemaRegistry(null);
634 testYangSchemaNodeProvider.processRegistrationOfApp();
635 }
636
637 /**
638 * Unit test case should not generate any exceptions and should
639 * return specific revision node.
640 */
641 @Test
642 public void testGetWithSpecificRevision() {
643 testYangSchemaNodeProvider.processSchemaRegistry(null);
644 YangSchemaNode schemaNode = testYangSchemaNodeProvider
645 .getDefaultYangSchemaRegistry()
646 .getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_WITH_DATE);
647
648 assertThat(true, is(schemaNode.getName().equals(SCHEMA_NAME_4)));
649 String date = testYangSchemaNodeProvider
650 .getDefaultYangSchemaRegistry()
651 .getDateInStringFormat(schemaNode);
652 assertThat(true, is(date.equals(DATE)));
653 }
654
655 /**
656 * Unit test case should not generate any exceptions
657 * verify notification should be checked for registration.
658 */
659 @Test
660 public void testNotification() {
sonu guptaeff184b2016-11-24 12:43:49 +0530661 MockIetfManager manager = new MockIetfManager();
662 testYangSchemaNodeProvider.processSchemaRegistry(manager);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530663 boolean isRegWithNotification =
664 testYangSchemaNodeProvider.getDefaultYangSchemaRegistry()
sonu guptaeff184b2016-11-24 12:43:49 +0530665 .verifyNotificationObject(manager, IetfNetwork1Service.class);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530666 assertThat(true, is(isRegWithNotification));
667 isRegWithNotification = testYangSchemaNodeProvider
668 .getDefaultYangSchemaRegistry()
sonu guptaeff184b2016-11-24 12:43:49 +0530669 .verifyNotificationObject(manager, IetfNetwork2Service.class);
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530670 assertThat(false, is(isRegWithNotification));
sonu guptaeff184b2016-11-24 12:43:49 +0530671 //TODO fix with YAB
672// isRegWithNotification = testYangSchemaNodeProvider
673// .getDefaultYangSchemaRegistry()
674// .verifyNotificationObject(new TestManager(), TestService.class);
675// assertThat(false, is(isRegWithNotification));
Bharat saraswalf53b29a2016-09-27 15:35:15 +0530676 }
sonu guptaeff184b2016-11-24 12:43:49 +0530677}