blob: 7805bf04a213610d39aea023f50082a5c4603949 [file] [log] [blame]
Shankara-Huaweidf7b9ca2016-07-14 11:35:34 +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 */
16package org.onosproject.yangutils.plugin.manager;
17
18import org.apache.maven.plugin.MojoExecutionException;
19import org.junit.Rule;
20import org.junit.Test;
21import org.junit.rules.ExpectedException;
22import org.onosproject.yangutils.datamodel.YangIdentity;
23import org.onosproject.yangutils.datamodel.YangIdentityRef;
24import org.onosproject.yangutils.datamodel.YangLeaf;
25import org.onosproject.yangutils.datamodel.YangLeafList;
26import org.onosproject.yangutils.datamodel.YangModule;
27import org.onosproject.yangutils.datamodel.YangNode;
28import org.onosproject.yangutils.datamodel.YangType;
29import org.onosproject.yangutils.datamodel.YangTypeDef;
30import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
31import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
32import org.onosproject.yangutils.linker.exceptions.LinkerException;
33import org.onosproject.yangutils.linker.impl.YangLinkerManager;
34import org.onosproject.yangutils.parser.exceptions.ParserException;
35import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
36
37import java.io.IOException;
38import java.util.ListIterator;
39
40import static org.hamcrest.MatcherAssert.assertThat;
41import static org.hamcrest.core.Is.is;
42import static org.onosproject.yangutils.datamodel.YangNodeType.MODULE_NODE;
43
44/**
45 * Test cases for testing inter file linking for identity.
46 */
47public class InterFileIdentityLinkingTest {
48 @Rule
49 public ExpectedException thrown = ExpectedException.none();
50
51 private final YangUtilManager utilManager = new YangUtilManager();
52 private final YangLinkerManager yangLinkerManager = new YangLinkerManager();
53
54 /**
55 * Checks inter file feature linking with imported file.
56 */
57 @Test
58 public void processIdentityInImportedFile()
59 throws IOException, ParserException, MojoExecutionException {
60
61 String searchDir = "src/test/resources/interfileidentityimport";
62 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
63 utilManager.parseYangFileInfoSet();
64 utilManager.createYangNodeSet();
65
66 YangNode selfNode = null;
67 YangNode refNode1 = null;
68 YangNode refNode2 = null;
69
70 // Create YANG node set
71 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
72
73 // Add references to import list.
74 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
75
76 // Carry out inter-file linking.
77 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
78
79 for (YangNode rootNode : utilManager.getYangNodeSet()) {
80 if (rootNode.getName().equals("IdentityIntraFile")) {
81 selfNode = rootNode;
82 } else if (rootNode.getName().equals("IdentityInModule")) {
83 refNode1 = rootNode;
84 } else {
85 refNode2 = rootNode;
86 }
87 }
88
89 // Check whether the data model tree returned is of type module.
90 assertThat(selfNode instanceof YangModule, is(true));
91
92 // Check whether the node type is set properly to module.
93 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
94
95 // Check whether the module name is set correctly.
96 YangModule yangNode = (YangModule) selfNode;
97 assertThat(yangNode.getName(), is("IdentityIntraFile"));
98
99 YangIdentity yangIdentity = (YangIdentity) yangNode.getChild();
100 assertThat(yangIdentity.getName(), is("ipv4-address-family"));
101 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
102 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
103 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
104
105 yangIdentity = (YangIdentity) yangNode.getChild().getNextSibling();
106 assertThat(yangIdentity.getName(), is("ipv6-address-family"));
107 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
108 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
109 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
110
111 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
112 YangLeaf leafInfo = leafIterator.next();
113
114 assertThat(leafInfo.getName(), is("tunnel"));
115 assertThat(leafInfo.getDataType().getDataTypeName(), is("identityref"));
116 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
117 YangIdentityRef yangIdentityRef = (YangIdentityRef) leafInfo.getDataType().getDataTypeExtendedInfo();
118 assertThat(yangIdentityRef.getName(), is("ref-address-family"));
119 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
120 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
121 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
122
123 ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator();
124 YangLeafList leafListInfo = leafListIterator.next();
125
126 // Check whether the information in the leaf is correct.
127 assertThat(leafListInfo.getName(), is("network-ref"));
128 assertThat(leafListInfo.getDataType().getDataTypeName(), is("identityref"));
129 assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
130 yangIdentityRef = (YangIdentityRef) (leafListInfo.getDataType().getDataTypeExtendedInfo());
131 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
132 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
133 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
134
135 }
136
137 /**
138 * Checks inter file feature linking with included file.
139 */
140 @Test
141 public void processIdentityInIncludedFile()
142 throws IOException, ParserException, MojoExecutionException {
143
144 String searchDir = "src/test/resources/interfileidentityinlude";
145 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
146 utilManager.parseYangFileInfoSet();
147 utilManager.createYangNodeSet();
148
149 YangNode selfNode = null;
150 YangNode refNode1 = null;
151 YangNode refNode2 = null;
152
153 // Create YANG node set
154 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
155
156 // Carry out linking of sub module with module.
157 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
158
159 // Add references to import list.
160 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
161
162 // Add references to include list.
163 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
164
165 // Carry out inter-file linking.
166 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
167
168 for (YangNode rootNode : utilManager.getYangNodeSet()) {
169 if (rootNode.getName().equals("syslog3")) {
170 selfNode = rootNode;
171 } else if (rootNode.getName().equals("syslog4")) {
172 refNode1 = rootNode;
173 } else {
174 refNode2 = rootNode;
175 }
176 }
177
178 // Check whether the data model tree returned is of type module.
179 assertThat(selfNode instanceof YangModule, is(true));
180
181 // Check whether the node type is set properly to module.
182 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
183
184 // Check whether the module name is set correctly.
185 YangModule yangNode = (YangModule) selfNode;
186 assertThat(yangNode.getName(), is("syslog3"));
187
188 YangIdentity yangIdentity = (YangIdentity) yangNode.getChild();
189 assertThat(yangIdentity.getName(), is("ipv4-address-family"));
190 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
191 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
192 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
193
194 yangIdentity = (YangIdentity) yangNode.getChild().getNextSibling();
195 assertThat(yangIdentity.getName(), is("ipv6-address-family"));
196 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
197 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
198 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
199
200 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
201 YangLeaf leafInfo = leafIterator.next();
202
203 assertThat(leafInfo.getName(), is("tunnel"));
204 assertThat(leafInfo.getDataType().getDataTypeName(), is("identityref"));
205 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
206 YangIdentityRef yangIdentityRef = (YangIdentityRef) leafInfo.getDataType().getDataTypeExtendedInfo();
207 assertThat(yangIdentityRef.getName(), is("ref-address-family"));
208 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
209 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
210 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
211
212 ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator();
213 YangLeafList leafListInfo = leafListIterator.next();
214
215 // Check whether the information in the leaf is correct.
216 assertThat(leafListInfo.getName(), is("network-ref"));
217 assertThat(leafListInfo.getDataType().getDataTypeName(), is("identityref"));
218 assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
219 yangIdentityRef = (YangIdentityRef) (leafListInfo.getDataType().getDataTypeExtendedInfo());
220 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
221 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
222 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
223 }
224
225 /**
226 * Checks inter file feature linking with imported file with dependency.
227 */
228 @Test
229 public void processIdentityInImportedFileWithDependency()
230 throws IOException, ParserException, MojoExecutionException {
231
232 String searchDir = "src/test/resources/interfileidentityimportdependency";
233 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
234 utilManager.parseYangFileInfoSet();
235 utilManager.createYangNodeSet();
236
237 YangNode selfNode = null;
238 YangNode refNode1 = null;
239 YangNode refNode2 = null;
240
241 // Create YANG node set
242 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
243
244 // Add references to import list.
245 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
246
247 // Carry out inter-file linking.
248 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
249
250 for (YangNode rootNode : utilManager.getYangNodeSet()) {
251 if (rootNode.getName().equals("syslog1")) {
252 selfNode = rootNode;
253 } else if (rootNode.getName().equals("syslog2")) {
254 refNode1 = rootNode;
255 } else {
256 refNode2 = rootNode;
257 }
258 }
259
260 // Check whether the data model tree returned is of type module.
261 assertThat(selfNode instanceof YangModule, is(true));
262
263 // Check whether the node type is set properly to module.
264 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
265
266 // Check whether the module name is set correctly.
267 YangModule yangNode = (YangModule) selfNode;
268 assertThat(yangNode.getName(), is("syslog1"));
269
270 YangIdentity yangIdentity = (YangIdentity) yangNode.getChild();
271 assertThat(yangIdentity.getName(), is("ipv4-address-family"));
272 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
273 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
274 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
275
276 yangIdentity = (YangIdentity) yangNode.getChild().getNextSibling();
277 assertThat(yangIdentity.getName(), is("ipv6-address-family"));
278 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
279 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
280 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
281
282 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
283 YangLeaf leafInfo = leafIterator.next();
284
285 assertThat(leafInfo.getName(), is("tunnel"));
286 assertThat(leafInfo.getDataType().getDataTypeName(), is("identityref"));
287 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
288 YangIdentityRef yangIdentityRef = (YangIdentityRef) leafInfo.getDataType().getDataTypeExtendedInfo();
289 assertThat(yangIdentityRef.getName(), is("ref-address-family"));
290 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
291 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
292 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
293
294 ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator();
295 YangLeafList leafListInfo = leafListIterator.next();
296
297 // Check whether the information in the leaf is correct.
298 assertThat(leafListInfo.getName(), is("network-ref"));
299 assertThat(leafListInfo.getDataType().getDataTypeName(), is("identityref"));
300 assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
301 yangIdentityRef = (YangIdentityRef) (leafListInfo.getDataType().getDataTypeExtendedInfo());
302 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
303 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
304 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
305 }
306
307 /**
308 * Checks inter file feature linking with included file with dependency.
309 */
310 @Test
311 public void processIdentityInIncludedFileWithDependency()
312 throws IOException, ParserException, MojoExecutionException {
313
314 String searchDir = "src/test/resources/interfileidentityincludedependency";
315 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
316 utilManager.parseYangFileInfoSet();
317 utilManager.createYangNodeSet();
318
319 YangNode selfNode = null;
320 YangNode refNode1 = null;
321 YangNode refNode2 = null;
322
323 // Create YANG node set
324 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
325
326 // Carry out linking of sub module with module.
327 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
328
329 // Add references to include list.
330 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
331
332 // Add references to import list.
333 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
334
335 // Carry out inter-file linking.
336 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
337
338 for (YangNode rootNode : utilManager.getYangNodeSet()) {
339 if (rootNode.getName().equals("syslog1")) {
340 selfNode = rootNode;
341 } else if (rootNode.getName().equals("syslog2")) {
342 refNode1 = rootNode;
343 } else {
344 refNode2 = rootNode;
345 }
346 }
347
348 // Check whether the data model tree returned is of type module.
349 assertThat(selfNode instanceof YangModule, is(true));
350
351 // Check whether the node type is set properly to module.
352 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
353
354 // Check whether the module name is set correctly.
355 YangModule yangNode = (YangModule) selfNode;
356 assertThat(yangNode.getName(), is("syslog1"));
357
358 YangIdentity yangIdentity = (YangIdentity) yangNode.getChild();
359 assertThat(yangIdentity.getName(), is("ipv4-address-family"));
360 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
361 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
362 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
363
364 yangIdentity = (YangIdentity) yangNode.getChild().getNextSibling();
365 assertThat(yangIdentity.getName(), is("ipv6-address-family"));
366 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
367 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
368 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
369
370 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
371 YangLeaf leafInfo = leafIterator.next();
372
373 assertThat(leafInfo.getName(), is("tunnel"));
374 assertThat(leafInfo.getDataType().getDataTypeName(), is("identityref"));
375 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
376 YangIdentityRef yangIdentityRef = (YangIdentityRef) leafInfo.getDataType().getDataTypeExtendedInfo();
377 assertThat(yangIdentityRef.getName(), is("ref-address-family"));
378 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
379 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
380 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
381
382 ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator();
383 YangLeafList leafListInfo = leafListIterator.next();
384
385 // Check whether the information in the leaf is correct.
386 assertThat(leafListInfo.getName(), is("network-ref"));
387 assertThat(leafListInfo.getDataType().getDataTypeName(), is("identityref"));
388 assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
389 yangIdentityRef = (YangIdentityRef) (leafListInfo.getDataType().getDataTypeExtendedInfo());
390 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
391 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
392 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
393 }
394
395 /**
396 * Checks inter file feature linking with imported file with dependency
397 * feature undefined.
398 */
399 @Test
400 public void processIdentityInImportedFileWithDependencyUndefined()
401 throws IOException, LinkerException, MojoExecutionException {
402 thrown.expect(LinkerException.class);
403 thrown.expectMessage("YANG file error: Unable to find base identity for given base");
404
405 String searchDir = "src/test/resources/interfileidentityimportdependencyUndefined";
406 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
407 utilManager.parseYangFileInfoSet();
408 utilManager.createYangNodeSet();
409
410 YangNode selfNode = null;
411 YangNode refNode1 = null;
412 YangNode refNode2 = null;
413
414 // Create YANG node set
415 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
416
417 // Add references to import list.
418 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
419
420 // Carry out inter-file linking.
421 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
422 }
423
424 /**
425 * Checks inter file feature linking with included file with dependency
426 * feature undefined.
427 */
428 @Test
429 public void processIdentityInIncludedFileWithDependencyUndefined()
430 throws IOException, LinkerException, MojoExecutionException {
431 thrown.expect(LinkerException.class);
432 thrown.expectMessage("YANG file error: Unable to find base identity for given base");
433
434 String searchDir = "src/test/resources/interfileidentityincludedependencyUndefined";
435 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
436 utilManager.parseYangFileInfoSet();
437 utilManager.createYangNodeSet();
438
439 YangNode selfNode = null;
440 YangNode refNode1 = null;
441 YangNode refNode2 = null;
442
443 // Create YANG node set
444 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
445
446 // Carry out linking of sub module with module.
447 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
448
449 // Add references to import list.
450 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
451
452 // Add references to include list.
453 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
454
455 // Carry out inter-file linking.
456 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
457 }
458
459 /**
460 * Checks inter file feature linking with imported file.
461 */
462 @Test
463 public void processIdentityTypedefUnresolvedInImportedFile()
464 throws IOException, ParserException, MojoExecutionException {
465
466 String searchDir = "src/test/resources/interfileidentitytypedef";
467 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
468 utilManager.parseYangFileInfoSet();
469 utilManager.createYangNodeSet();
470
471 YangNode selfNode = null;
472 YangNode refNode1 = null;
473 YangNode refNode2 = null;
474
475 // Create YANG node set
476 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
477
478 // Add references to import list.
479 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
480
481 // Carry out inter-file linking.
482 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
483
484 for (YangNode rootNode : utilManager.getYangNodeSet()) {
485 if (rootNode.getName().equals("IdentityIntraFile")) {
486 selfNode = rootNode;
487 } else if (rootNode.getName().equals("IdentityInModule")) {
488 refNode1 = rootNode;
489 } else {
490 refNode2 = rootNode;
491 }
492 }
493 // Check whether the data model tree returned is of type module.
494 assertThat(selfNode instanceof YangModule, is(true));
495
496 // Check whether the node type is set properly to module.
497 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
498
499 // Check whether the module name is set correctly.
500 YangModule yangNode = (YangModule) selfNode;
501 assertThat(yangNode.getName(), is("IdentityIntraFile"));
502
503 YangIdentity yangIdentity = (YangIdentity) yangNode.getChild();
504 assertThat(yangIdentity.getName(), is("ipv4-address-family"));
505 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
506 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
507 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
508
509 yangIdentity = (YangIdentity) yangNode.getChild().getNextSibling();
510 assertThat(yangIdentity.getName(), is("ipv6-address-family"));
511 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
512 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
513 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
514
515 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
516 YangLeaf leafInfo = leafIterator.next();
517
518 assertThat(leafInfo.getName(), is("tunnel"));
519 assertThat(leafInfo.getDataType().getDataTypeName(), is("identityref"));
520 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
521 YangIdentityRef yangIdentityRef = (YangIdentityRef) leafInfo.getDataType().getDataTypeExtendedInfo();
522 assertThat(yangIdentityRef.getName(), is("ref-address-family"));
523 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
524 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
525 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
526
527 ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator();
528 YangLeafList leafListInfo = leafListIterator.next();
529
530 // Check whether the information in the leaf is correct.
531 assertThat(leafListInfo.getName(), is("network-ref"));
532 assertThat(leafListInfo.getDataType().getDataTypeName(), is("identityref"));
533 assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
534 yangIdentityRef = (YangIdentityRef) (leafListInfo.getDataType().getDataTypeExtendedInfo());
535 // Check whether leafref type got resolved.
536 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
537
538 YangTypeDef typedef = (YangTypeDef) yangNode.getChild().getNextSibling().getNextSibling();
539 assertThat(typedef.getName(), is("type15"));
540
541 YangType type = typedef.getTypeList().iterator().next();
542 assertThat(type.getDataType(), is(YangDataTypes.IDENTITYREF));
543 assertThat(type.getDataTypeName(), is("identityref"));
544
545 YangIdentityRef identityRef = (YangIdentityRef) type.getDataTypeExtendedInfo();
546 assertThat(identityRef.getName(), is("ref-address-family"));
547 assertThat(identityRef.getBaseIdentity().getName(), is("ref-address-family"));
548 assertThat(identityRef.getResolvableStatus(), is(ResolvableStatus.UNRESOLVED));
549 }
550
551 /**
552 * Checks inter file feature linking with imported file.
553 */
554 @Test
555 public void processIdentityTypedefInImportedFile()
556 throws IOException, ParserException, MojoExecutionException {
557
558 String searchDir = "src/test/resources/interfileidentitytypedef";
559 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
560 utilManager.parseYangFileInfoSet();
561 utilManager.createYangNodeSet();
562
563 YangNode selfNode = null;
564 YangNode refNode1 = null;
565 YangNode refNode2 = null;
566
567 // Create YANG node set
568 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
569
570 // Add references to import list.
571 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
572
573 // Carry out inter-file linking.
574 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
575
576 for (YangNode rootNode : utilManager.getYangNodeSet()) {
577 if (rootNode.getName().equals("IdentityTypedef")) {
578 selfNode = rootNode;
579 } else if (rootNode.getName().equals("IdentityInModule")) {
580 refNode1 = rootNode;
581 } else {
582 refNode2 = rootNode;
583 }
584 }
585
586 // Check whether the data model tree returned is of type module.
587 assertThat(selfNode instanceof YangModule, is(true));
588
589 // Check whether the node type is set properly to module.
590 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
591
592 // Check whether the module name is set correctly.
593 YangModule yangNode = (YangModule) selfNode;
594 assertThat(yangNode.getName(), is("IdentityTypedef"));
595
596 YangIdentity yangIdentity = (YangIdentity) yangNode.getChild();
597 assertThat(yangIdentity.getName(), is("ipv4-address-family"));
598 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
599 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
600 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
601
602 yangIdentity = (YangIdentity) yangNode.getChild().getNextSibling();
603 assertThat(yangIdentity.getName(), is("ipv6-address-family"));
604 assertThat(yangIdentity.getBaseNode().getBaseIdentifier().getName(), is("ref-address-family"));
605 assertThat(yangIdentity.getBaseNode().getReferredIdentity().getName(), is("ref-address-family"));
606 assertThat(yangIdentity.getBaseNode().getResolvableStatus(), is(ResolvableStatus.RESOLVED));
607
608 YangTypeDef typedef = (YangTypeDef) yangNode.getChild().getNextSibling().getNextSibling();
609 assertThat(typedef.getName(), is("type15"));
610
611 YangType type = typedef.getTypeList().iterator().next();
612 assertThat(type.getDataType(), is(YangDataTypes.IDENTITYREF));
613 assertThat(type.getDataTypeName(), is("identityref"));
614
615 YangIdentityRef identityRef = (YangIdentityRef) type.getDataTypeExtendedInfo();
616 assertThat(identityRef.getName(), is("ref-address-family"));
617 assertThat(identityRef.getBaseIdentity().getName(), is("ref-address-family"));
618
619 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
620 YangLeaf leafInfo = leafIterator.next();
621
622 assertThat(leafInfo.getName(), is("tunnel"));
623 assertThat(leafInfo.getDataType().getDataTypeName(), is("identityref"));
624 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
625 YangIdentityRef yangIdentityRef = (YangIdentityRef) leafInfo.getDataType().getDataTypeExtendedInfo();
626 assertThat(yangIdentityRef.getName(), is("ref-address-family"));
627 assertThat(yangIdentityRef.getBaseIdentity().getName(), is("ref-address-family"));
628 assertThat(yangIdentityRef.getReferredIdentity().getName(), is("ref-address-family"));
629 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
630
631 ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator();
632 YangLeafList leafListInfo = leafListIterator.next();
633
634 // Check whether the information in the leaf is correct.
635 assertThat(leafListInfo.getName(), is("network-ref"));
636 assertThat(leafListInfo.getDataType().getDataTypeName(), is("identityref"));
637 assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.IDENTITYREF));
638 yangIdentityRef = (YangIdentityRef) (leafListInfo.getDataType().getDataTypeExtendedInfo());
639 // Check whether leafref type got resolved.
640 assertThat(yangIdentityRef.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
641 }
642}