blob: e5ed4cf83e412871803619ecdfef14cc9af21282 [file] [log] [blame]
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +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
Gaurav Agrawalc5f63272016-06-16 13:09:53 +053017package org.onosproject.yangutils.plugin.manager;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053018
Vidyashree Rama36f2fab2016-07-15 14:06:56 +053019import java.io.IOException;
20import java.util.Iterator;
21import java.util.ListIterator;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053022import org.apache.maven.plugin.MojoExecutionException;
janani be18b5342016-07-13 21:06:41 +053023import org.junit.Rule;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053024import org.junit.Test;
janani be18b5342016-07-13 21:06:41 +053025import org.junit.rules.ExpectedException;
Vidyashree Rama36f2fab2016-07-15 14:06:56 +053026import org.onosproject.yangutils.datamodel.YangAugment;
27import org.onosproject.yangutils.datamodel.YangContainer;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053028import org.onosproject.yangutils.datamodel.YangDerivedInfo;
29import org.onosproject.yangutils.datamodel.YangGrouping;
30import org.onosproject.yangutils.datamodel.YangLeaf;
Vidyashree Rama36f2fab2016-07-15 14:06:56 +053031import org.onosproject.yangutils.datamodel.YangList;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053032import org.onosproject.yangutils.datamodel.YangModule;
33import org.onosproject.yangutils.datamodel.YangNode;
34import org.onosproject.yangutils.datamodel.YangNodeType;
35import org.onosproject.yangutils.datamodel.YangTypeDef;
36import org.onosproject.yangutils.datamodel.YangUses;
Bharat saraswal96dfef02016-06-16 00:29:12 +053037import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
janani b23ccc312016-07-14 19:35:22 +053038import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053039import org.onosproject.yangutils.linker.impl.YangLinkerManager;
40import org.onosproject.yangutils.parser.exceptions.ParserException;
janani be18b5342016-07-13 21:06:41 +053041import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053042import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053043import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053044
45import static org.hamcrest.CoreMatchers.nullValue;
46import static org.hamcrest.MatcherAssert.assertThat;
47import static org.hamcrest.core.Is.is;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053048import static org.onosproject.yangutils.datamodel.YangNodeType.MODULE_NODE;
Bharat saraswal96dfef02016-06-16 00:29:12 +053049import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
janani b23ccc312016-07-14 19:35:22 +053050import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
51import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +053052import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053053
54/**
55 * Test cases for testing inter file linking.
56 */
57public class InterFileLinkingTest {
58
janani be18b5342016-07-13 21:06:41 +053059 @Rule
60 public ExpectedException thrown = ExpectedException.none();
61
62 private final YangUtilsParserManager manager = new YangUtilsParserManager();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053063 private final YangUtilManager utilManager = new YangUtilManager();
64 private final YangLinkerManager yangLinkerManager = new YangLinkerManager();
65
66 /**
67 * Checks inter file type linking.
68 */
69 @Test
70 public void processInterFileTypeLinking()
71 throws IOException, ParserException, MojoExecutionException {
72
73 String searchDir = "src/test/resources/interfiletype";
74 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
75 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053076 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053077
78 YangNode refNode = null;
79 YangNode selfNode = null;
80
Gaurav Agrawal95b416c2016-06-07 14:00:26 +053081 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053082 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +053083
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053084 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053085 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053086
87 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053088 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053089
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053090 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053091
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053092 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053093
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053094 if (rootNode.getName().equals("module1")) {
95 selfNode = rootNode;
96 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053097 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053098 refNode = rootNode;
99 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530100 }
101
102 // Check whether the data model tree returned is of type module.
103 assertThat(selfNode instanceof YangModule, is(true));
104
105 // Check whether the node type is set properly to module.
106 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
107
108 // Check whether the module name is set correctly.
109 YangModule yangNode = (YangModule) selfNode;
110 assertThat(yangNode.getName(), is("module1"));
111
112 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
113 YangLeaf leafInfo = leafIterator.next();
114
115 assertThat(leafInfo.getName(), is("invalid-interval"));
116 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
117 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
118
119 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
120 is((YangTypeDef) refNode.getChild()));
121
122 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
123
124 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
125
126 // Check for the effective built-in type.
127 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
128
129 // Check for the restriction.
130 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
131 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
132 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
133 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
134 }
135
136 /**
137 * Checks inter file uses linking.
138 */
139 @Test
140 public void processInterFileUsesLinking()
141 throws IOException, ParserException, MojoExecutionException {
142
143 String searchDir = "src/test/resources/interfileuses";
144 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
145 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530146 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530147
148 YangNode refNode = null;
149 YangNode selfNode = null;
150
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530151 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530152 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530153
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530154 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530155 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530156
157 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530158 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530159
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530160 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530161
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530162 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530163
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530164 if (rootNode.getName().equals("module1")) {
165 selfNode = rootNode;
166 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530167 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530168 refNode = rootNode;
169 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530170 }
171
172 // Check whether the data model tree returned is of type module.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530173 assertThat(selfNode instanceof YangModule, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530174
175 // Check whether the node type is set properly to module.
176 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
177
178 // Check whether the module name is set correctly.
179 YangModule yangNode = (YangModule) selfNode;
180 assertThat(yangNode.getName(), is("module1"));
181
182 ListIterator<YangLeaf> leafIterator;
183 YangLeaf leafInfo;
184
185 // Check whether grouping is the sibling of module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530186 assertThat(refNode.getChild() instanceof YangGrouping, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530187
188 YangGrouping grouping = (YangGrouping) refNode.getChild();
189 leafIterator = grouping.getListOfLeaf().listIterator();
190 leafInfo = leafIterator.next();
191
192 // Check whether the information in the leaf is correct under grouping.
193 assertThat(leafInfo.getName(), is("hello"));
194 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
195 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
196
197 // Check whether uses is module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530198 assertThat(yangNode.getChild() instanceof YangUses, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530199 YangUses uses = (YangUses) yangNode.getChild();
200
201 // Check whether uses get resolved.
202 assertThat(uses.getResolvableStatus(),
203 is(ResolvableStatus.RESOLVED));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530204 }
205
206 /**
207 * Checks inter file type linking with include list.
208 */
209 @Test
210 public void processInterFileTypeLinkingWithIncludeList()
211 throws IOException, ParserException, MojoExecutionException {
212
213 String searchDir = "src/test/resources/interfiletypewithinclude";
214 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
215 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530216 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530217
218 YangNode refNode = null;
219 YangNode selfNode = null;
220
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530221 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530222 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530223
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530224 // Carry out linking of sub module with module.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530225 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530226
227 // Add reference to include list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530228 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530229
230 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530231 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530232
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530233 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530234
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530235 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530236
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530237 if (rootNode.getName().equals("module1")) {
238 selfNode = rootNode;
239 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530240 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530241 refNode = rootNode;
242 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530243 }
244
245 // Check whether the data model tree returned is of type module.
246 assertThat(selfNode instanceof YangModule, is(true));
247
248 // Check whether the node type is set properly to module.
249 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
250
251 // Check whether the module name is set correctly.
252 YangModule yangNode = (YangModule) selfNode;
253 assertThat(yangNode.getName(), is("module1"));
254
255 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
256 YangLeaf leafInfo = leafIterator.next();
257
258 assertThat(leafInfo.getName(), is("invalid-interval"));
259 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
260 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
261
262 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
263 is((YangTypeDef) refNode.getChild()));
264
265 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
266
267 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
268
269 // Check for the effective built-in type.
270 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
271
272 // Check for the restriction.
273 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
274 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
275 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
276 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
277 }
278
279 /**
280 * Checks inter file uses linking with include list.
281 */
282 @Test
283 public void processInterFileUsesLinkingWithInclude()
284 throws IOException, ParserException, MojoExecutionException {
285
286 String searchDir = "src/test/resources/interfileuseswithinclude";
287 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
288 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530289 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530290
291 YangNode refNode = null;
292 YangNode selfNode = null;
293
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530294 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530295 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530296
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530297 // Carry out linking of sub module with module.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530298 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530299
300 // Add reference to include list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530301 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530302
303 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530304 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530305
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530306 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530307
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530308 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530309
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530310 if (rootNode.getName().equals("module1")) {
311 selfNode = rootNode;
312 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530313 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530314 refNode = rootNode;
315 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530316 }
317
318 // Check whether the data model tree returned is of type module.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530319 assertThat(selfNode instanceof YangModule, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530320
321 // Check whether the node type is set properly to module.
322 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
323
324 // Check whether the module name is set correctly.
325 YangModule yangNode = (YangModule) selfNode;
326 assertThat(yangNode.getName(), is("module1"));
327
328 ListIterator<YangLeaf> leafIterator;
329 YangLeaf leafInfo;
330
331 // Check whether grouping is the sibling of module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530332 assertThat(refNode.getChild() instanceof YangGrouping, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530333
334 YangGrouping grouping = (YangGrouping) refNode.getChild();
335 leafIterator = grouping.getListOfLeaf().listIterator();
336 leafInfo = leafIterator.next();
337
338 // Check whether the information in the leaf is correct under grouping.
339 assertThat(leafInfo.getName(), is("hello"));
340 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
341 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
342
343 // Check whether uses is module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530344 assertThat(yangNode.getChild() instanceof YangUses, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530345 YangUses uses = (YangUses) yangNode.getChild();
346
347 // Check whether uses get resolved.
348 assertThat(uses.getResolvableStatus(),
349 is(ResolvableStatus.RESOLVED));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530350 }
351
352 /**
353 * Checks inter file type linking with revision.
354 */
355 @Test
356 public void processInterFileTypeLinkingWithRevision()
357 throws IOException, ParserException, MojoExecutionException {
358
359 String searchDir = "src/test/resources/interfiletypewithrevision";
360 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
361 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530362 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530363
364 YangNode refNode = null;
365 YangNode selfNode = null;
366
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530367 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530368 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530369
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530370 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530371 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530372
373 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530374 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530375
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530376 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530377
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530378 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530379
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530380 if (rootNode.getName().equals("module1")) {
381 selfNode = rootNode;
382 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530383 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530384 refNode = rootNode;
385 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530386 }
387
388 // Check whether the data model tree returned is of type module.
389 assertThat(selfNode instanceof YangModule, is(true));
390
391 // Check whether the node type is set properly to module.
392 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
393
394 // Check whether the module name is set correctly.
395 YangModule yangNode = (YangModule) selfNode;
396 assertThat(yangNode.getName(), is("module1"));
397
398 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
399 YangLeaf leafInfo = leafIterator.next();
400
401 assertThat(leafInfo.getName(), is("invalid-interval"));
402 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
403 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
404
405 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
406 is((YangTypeDef) refNode.getChild()));
407
408 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
409
410 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
411
412 // Check for the effective built-in type.
413 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
414
415 // Check for the restriction.
416 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
417 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
418 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
419 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
420 }
421
422 /**
423 * Checks inter file type linking with revision in name.
424 */
425 @Test
426 public void processInterFileTypeLinkingWithRevisionInName()
427 throws IOException, ParserException, MojoExecutionException {
428
429 String searchDir = "src/test/resources/interfiletypewithrevisioninname";
430 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
431 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530432 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530433
434 YangNode refNode = null;
435 YangNode selfNode = null;
436
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530437 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530438 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530439
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530440 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530441 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530442
443 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530444 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530445
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530446 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530447
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530448 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530449
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530450 if (rootNode.getName().equals("module1")) {
451 selfNode = rootNode;
452 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530453 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530454 refNode = rootNode;
455 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530456 }
457
458 // Check whether the data model tree returned is of type module.
459 assertThat(selfNode instanceof YangModule, is(true));
460
461 // Check whether the node type is set properly to module.
462 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
463
464 // Check whether the module name is set correctly.
465 YangModule yangNode = (YangModule) selfNode;
466 assertThat(yangNode.getName(), is("module1"));
467
468 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
469 YangLeaf leafInfo = leafIterator.next();
470
471 assertThat(leafInfo.getName(), is("invalid-interval"));
472 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
473 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
474
475 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
476 is((YangTypeDef) refNode.getChild()));
477
478 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
479
480 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
481
482 // Check for the effective built-in type.
483 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
484
485 // Check for the restriction.
486 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
487 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
488 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
489 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
490 }
491
492 /**
493 * Checks hierarchical inter file type linking.
494 */
495 @Test
496 public void processHierarchicalInterFileTypeLinking()
497 throws IOException, ParserException, MojoExecutionException {
498
499 String searchDir = "src/test/resources/hierarchicalinterfiletype";
500 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
501 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530502 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530503
504 YangNode refNode1 = null;
505 YangNode refNode2 = null;
506 YangNode selfNode = null;
507
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530508 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530509 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530510
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530511 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530512 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530513
514 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530515 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530516
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530517 for (YangNode rootNode : utilManager.getYangNodeSet()) {
518 if (rootNode.getName().equals("ietf-network-topology")) {
519 selfNode = rootNode;
520 } else if (rootNode.getName().equals("ietf-network")) {
521 refNode1 = rootNode;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530522 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530523 refNode2 = rootNode;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530524 }
525 }
526
527 // Check whether the data model tree returned is of type module.
528 assertThat(selfNode instanceof YangModule, is(true));
529
530 // Check whether the node type is set properly to module.
531 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
532
533 // Check whether the module name is set correctly.
534 YangModule yangNode = (YangModule) selfNode;
535 assertThat(yangNode.getName(), is("ietf-network-topology"));
536
537 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
538 YangLeaf leafInfo = leafIterator.next();
539
540 assertThat(leafInfo.getName(), is("source-node"));
541 assertThat(leafInfo.getDataType().getDataTypeName(), is("node-id"));
542 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
543
544 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
545 is((YangTypeDef) refNode1.getChild()));
546
547 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
548
549 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
550
551 // Check for the effective built-in type.
552 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
553
554 // Check for the restriction.
555 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
556 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
557 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
558 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
559 }
560
561 /**
562 * Checks hierarchical intra with inter file type linking.
563 */
564 @Test
565 public void processHierarchicalIntraWithInterFileTypeLinking()
566 throws IOException, ParserException, MojoExecutionException {
567
568 String searchDir = "src/test/resources/hierarchicalintrawithinterfiletype";
569 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
570 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530571 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530572
573 YangNode refNode1 = null;
574 YangNode selfNode = null;
575
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530576 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530577 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530578
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530579 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530580 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530581
582 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530583 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530584
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530585 for (YangNode rootNode : utilManager.getYangNodeSet()) {
586 if (rootNode.getName().equals("ietf-network")) {
587 selfNode = rootNode;
588 } else if (rootNode.getName().equals("ietf-inet-types")) {
589 refNode1 = rootNode;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530590 }
591 }
592
593 // Check whether the data model tree returned is of type module.
594 assertThat(selfNode instanceof YangModule, is(true));
595
596 // Check whether the node type is set properly to module.
597 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
598
599 // Check whether the module name is set correctly.
600 YangModule yangNode = (YangModule) selfNode;
601 assertThat(yangNode.getName(), is("ietf-network"));
602
603 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
604 YangLeaf leafInfo = leafIterator.next();
605
606 assertThat(leafInfo.getName(), is("node-ref"));
607 assertThat(leafInfo.getDataType().getDataTypeName(), is("node-id"));
608 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
609
610 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
611 is((YangTypeDef) selfNode.getChild()));
612
613 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
614
615 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
616
617 // Check for the effective built-in type.
618 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
619
620 // Check for the restriction.
621 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
622 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
623 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
624 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
625 }
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530626
627 /**
628 * Checks hierarchical intra with inter file type linking.
629 */
630 @Test
631 public void interFileWithUsesReferringType()
632 throws IOException, ParserException, MojoExecutionException {
633
634 String searchDir = "src/test/resources/interfilewithusesreferringtype";
635 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
636 utilManager.parseYangFileInfoSet();
637 utilManager.resolveDependenciesUsingLinker();
638
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530639 YangPluginConfig yangPluginConfig = new YangPluginConfig();
640 yangPluginConfig.setCodeGenDir("target/interfilewithusesreferringtype/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530641 yangPluginConfig.setManagerCodeGenDir("target/interfilewithusesreferringtype/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530642
Bharat saraswald50c6382016-07-14 21:57:13 +0530643 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530644
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530645 deleteDirectory("target/interfilewithusesreferringtype/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530646
647 }
648
649 /**
650 * Checks hierarchical intra with inter file type linking.
651 */
652 @Test
653 public void file1UsesFile2TypeDefFile3Type()
654 throws IOException, ParserException, MojoExecutionException {
655
656 String searchDir = "src/test/resources/file1UsesFile2TypeDefFile3Type";
657 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
658 utilManager.parseYangFileInfoSet();
659 utilManager.resolveDependenciesUsingLinker();
660
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530661 YangPluginConfig yangPluginConfig = new YangPluginConfig();
662 yangPluginConfig.setCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530663 yangPluginConfig.setManagerCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530664
Bharat saraswald50c6382016-07-14 21:57:13 +0530665 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530666
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530667 deleteDirectory("target/file1UsesFile2TypeDefFile3Type/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530668
669 }
670
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530671 /**
672 * Checks hierarchical intra with inter file type linking.
673 */
674 @Test
675 public void interFileIetf()
676 throws IOException, ParserException, MojoExecutionException {
677
678 String searchDir = "src/test/resources/interfileietf";
679 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
680 utilManager.parseYangFileInfoSet();
681 utilManager.resolveDependenciesUsingLinker();
682
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530683 YangPluginConfig yangPluginConfig = new YangPluginConfig();
684 yangPluginConfig.setCodeGenDir("target/interfileietf/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530685 yangPluginConfig.setManagerCodeGenDir("target/interfileietf/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530686
Bharat saraswald50c6382016-07-14 21:57:13 +0530687 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530688
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530689 deleteDirectory("target/interfileietf/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530690
691 }
692
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530693 /**
694 * Checks hierarchical intra with inter file type linking.
695 */
696 @Test
697 public void usesInContainer()
698 throws IOException, ParserException, MojoExecutionException {
699
700 String searchDir = "src/test/resources/usesInContainer";
701 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
702 utilManager.parseYangFileInfoSet();
703 utilManager.resolveDependenciesUsingLinker();
704
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530705 YangPluginConfig yangPluginConfig = new YangPluginConfig();
706 yangPluginConfig.setCodeGenDir("target/usesInContainer/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530707 yangPluginConfig.setManagerCodeGenDir("target/usesInContainer/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530708
Bharat saraswald50c6382016-07-14 21:57:13 +0530709 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530710
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530711 deleteDirectory("target/usesInContainer/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530712
713 }
714
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530715 /**
716 * Checks hierarchical intra with inter file type linking.
717 */
718 @Test
719 public void groupingNodeSameAsModule()
720 throws IOException, ParserException, MojoExecutionException {
721
722 String searchDir = "src/test/resources/groupingNodeSameAsModule";
723 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
724 utilManager.parseYangFileInfoSet();
725 utilManager.resolveDependenciesUsingLinker();
726
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530727 YangPluginConfig yangPluginConfig = new YangPluginConfig();
728 yangPluginConfig.setCodeGenDir("target/groupingNodeSameAsModule/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530729 yangPluginConfig.setManagerCodeGenDir("target/groupingNodeSameAsModule/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530730
Bharat saraswald50c6382016-07-14 21:57:13 +0530731 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530732
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530733 deleteDirectory("target/groupingNodeSameAsModule/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530734
735 }
janani be18b5342016-07-13 21:06:41 +0530736
737 /**
Vidyashree Rama1b499062016-07-12 20:52:48 +0530738 * Checks priority of the file.
739 */
740 @Test
741 public void interFilePriority()
742 throws IOException, ParserException, MojoExecutionException {
743
744 String searchDir = "src/test/resources/interfilepriority";
745 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
746 utilManager.parseYangFileInfoSet();
747 utilManager.resolveDependenciesUsingLinker();
748
749 YangNode selfNode = null;
750 YangNode refNode1 = null;
751 YangNode refNode2 = null;
752
753 for (YangNode rootNode : utilManager.getYangNodeSet()) {
754 if (rootNode.getName().equals("module1")) {
755 selfNode = rootNode;
756 } else if (rootNode.getName().equals("module2")) {
757 refNode1 = rootNode;
758 } else {
759 refNode2 = rootNode;
760 }
761 }
762
763 // Check whether the data model tree returned is of type module.
764 assertThat(selfNode instanceof YangModule, is(true));
765
766 // Check whether the node type is set properly to module.
767 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
768
769 // Check whether the module name is set correctly.
770 YangModule yangNode = (YangModule) selfNode;
771 assertThat(yangNode.getName(), is("module1"));
772 assertThat(yangNode.getPriority(), is(2));
773
774 // Check whether the data model tree returned is of type module.
775 assertThat(refNode1 instanceof YangModule, is(true));
776
777 // Check whether the node type is set properly to module.
778 assertThat(refNode1.getNodeType(), is(MODULE_NODE));
779
780 YangModule referredNode1 = (YangModule) refNode1;
781 assertThat(referredNode1.getName(), is("module2"));
782 assertThat(referredNode1.getPriority(), is(3));
783 }
Vidyashree Rama36f2fab2016-07-15 14:06:56 +0530784
785 /**
786 * Checks contents of uses are copied as child of grouping.
787 */
788 @Test
789 public void usesInsideChildOfGrouping()
790 throws IOException, ParserException, MojoExecutionException {
791
792 String searchDir = "src/test/resources/usesInsideChildOfGrouping";
793 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
794 utilManager.parseYangFileInfoSet();
795 utilManager.resolveDependenciesUsingLinker();
796
797 YangNode selfNode = null;
798 YangNode refNode1 = null;
799
800 for (YangNode rootNode : utilManager.getYangNodeSet()) {
801 if (rootNode.getName().equals("ietf-network")) {
802 selfNode = rootNode;
803 } else if (rootNode.getName().equals("ietf-te-topology")) {
804 refNode1 = rootNode;
805 }
806 }
807
808 // Check whether the data model tree returned is of type module.
809 assertThat(selfNode instanceof YangModule, is(true));
810 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
811 YangModule yangNode = (YangModule) selfNode;
812 assertThat(yangNode.getName(), is("ietf-network"));
813
814 YangModule refNode = (YangModule) refNode1;
815 assertThat(refNode.getName(), is("ietf-te-topology"));
816
817 YangAugment augment = ((YangAugment) refNode.getChild().getNextSibling().
818 getNextSibling().getNextSibling().getNextSibling());
819 assertThat(augment.getName(), is("/nw:networks/nw:network/nw:node"));
820
821 YangUses uses = ((YangUses) augment.getChild());
822 YangContainer container = ((YangContainer) uses.getNextSibling());
823 assertThat(container.getName(), is("te"));
824
825 container = ((YangContainer) container.getChild());
826 assertThat(container.getName(), is("config"));
827
828 uses = ((YangUses) container.getChild().getNextSibling());
829 assertThat(uses.getName(), is("te-node-config-attributes"));
830
831 YangContainer container1 = ((YangContainer) uses.getNextSibling());
832 assertThat(container1.getName(), is("te-node-attributes"));
833
834 uses = ((YangUses) container1.getChild());
835 assertThat(uses.getName(), is("te-node-connectivity-matrix"));
836
837 YangList list = ((YangList) uses.getNextSibling());
838 assertThat(list.getName(), is("connectivity-matrix"));
839 }
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530840}