blob: a99cd6cc46569eebae56c99373c7d19b08de8b5a [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;
Vidyashree Rama07c26bb2016-07-28 17:33:15 +053027import org.onosproject.yangutils.datamodel.YangChoice;
Vidyashree Rama36f2fab2016-07-15 14:06:56 +053028import org.onosproject.yangutils.datamodel.YangContainer;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053029import org.onosproject.yangutils.datamodel.YangDerivedInfo;
30import org.onosproject.yangutils.datamodel.YangGrouping;
31import org.onosproject.yangutils.datamodel.YangLeaf;
Vidyashree Rama36f2fab2016-07-15 14:06:56 +053032import org.onosproject.yangutils.datamodel.YangList;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053033import org.onosproject.yangutils.datamodel.YangModule;
34import org.onosproject.yangutils.datamodel.YangNode;
35import org.onosproject.yangutils.datamodel.YangNodeType;
36import org.onosproject.yangutils.datamodel.YangTypeDef;
37import org.onosproject.yangutils.datamodel.YangUses;
Bharat saraswal96dfef02016-06-16 00:29:12 +053038import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
janani b23ccc312016-07-14 19:35:22 +053039import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053040import org.onosproject.yangutils.linker.impl.YangLinkerManager;
41import org.onosproject.yangutils.parser.exceptions.ParserException;
janani be18b5342016-07-13 21:06:41 +053042import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053043import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053044import org.onosproject.yangutils.datamodel.javadatamodel.YangPluginConfig;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053045
46import static org.hamcrest.CoreMatchers.nullValue;
47import static org.hamcrest.MatcherAssert.assertThat;
48import static org.hamcrest.core.Is.is;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053049import static org.onosproject.yangutils.datamodel.YangNodeType.MODULE_NODE;
Bharat saraswal96dfef02016-06-16 00:29:12 +053050import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
janani b23ccc312016-07-14 19:35:22 +053051import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
52import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
Vidyashree Rama07c26bb2016-07-28 17:33:15 +053053import static org.onosproject.yangutils.linker.impl.YangLinkerUtils.updateFilePriority;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +053054import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053055
56/**
57 * Test cases for testing inter file linking.
58 */
59public class InterFileLinkingTest {
60
janani be18b5342016-07-13 21:06:41 +053061 @Rule
62 public ExpectedException thrown = ExpectedException.none();
63
64 private final YangUtilsParserManager manager = new YangUtilsParserManager();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053065 private final YangUtilManager utilManager = new YangUtilManager();
66 private final YangLinkerManager yangLinkerManager = new YangLinkerManager();
67
68 /**
69 * Checks inter file type linking.
70 */
71 @Test
72 public void processInterFileTypeLinking()
73 throws IOException, ParserException, MojoExecutionException {
74
75 String searchDir = "src/test/resources/interfiletype";
76 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
77 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053078 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053079
80 YangNode refNode = null;
81 YangNode selfNode = null;
82
Gaurav Agrawal95b416c2016-06-07 14:00:26 +053083 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053084 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +053085
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053086 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053087 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053088
Vidyashree Rama07c26bb2016-07-28 17:33:15 +053089 updateFilePriority(utilManager.getYangNodeSet());
90
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053091 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053092 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053093
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053094 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053095
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053096 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053097
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053098 if (rootNode.getName().equals("module1")) {
99 selfNode = rootNode;
100 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530101 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530102 refNode = rootNode;
103 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530104 }
105
106 // Check whether the data model tree returned is of type module.
107 assertThat(selfNode instanceof YangModule, is(true));
108
109 // Check whether the node type is set properly to module.
110 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
111
112 // Check whether the module name is set correctly.
113 YangModule yangNode = (YangModule) selfNode;
114 assertThat(yangNode.getName(), is("module1"));
115
116 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
117 YangLeaf leafInfo = leafIterator.next();
118
119 assertThat(leafInfo.getName(), is("invalid-interval"));
120 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
121 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
122
123 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
124 is((YangTypeDef) refNode.getChild()));
125
126 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
127
128 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
129
130 // Check for the effective built-in type.
131 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
132
133 // Check for the restriction.
134 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
135 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
136 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
137 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
138 }
139
140 /**
141 * Checks inter file uses linking.
142 */
143 @Test
144 public void processInterFileUsesLinking()
145 throws IOException, ParserException, MojoExecutionException {
146
147 String searchDir = "src/test/resources/interfileuses";
148 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
149 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530150 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530151
152 YangNode refNode = null;
153 YangNode selfNode = null;
154
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530155 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530156 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530157
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530158 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530159 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530160
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530161 updateFilePriority(utilManager.getYangNodeSet());
162
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530163 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530164 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530165
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530166 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530167
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530168 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530169
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530170 if (rootNode.getName().equals("module1")) {
171 selfNode = rootNode;
172 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530173 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530174 refNode = rootNode;
175 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530176 }
177
178 // Check whether the data model tree returned is of type module.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530179 assertThat(selfNode instanceof YangModule, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530180
181 // Check whether the node type is set properly to module.
182 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
183
184 // Check whether the module name is set correctly.
185 YangModule yangNode = (YangModule) selfNode;
186 assertThat(yangNode.getName(), is("module1"));
187
188 ListIterator<YangLeaf> leafIterator;
189 YangLeaf leafInfo;
190
191 // Check whether grouping is the sibling of module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530192 assertThat(refNode.getChild() instanceof YangGrouping, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530193
194 YangGrouping grouping = (YangGrouping) refNode.getChild();
195 leafIterator = grouping.getListOfLeaf().listIterator();
196 leafInfo = leafIterator.next();
197
198 // Check whether the information in the leaf is correct under grouping.
199 assertThat(leafInfo.getName(), is("hello"));
200 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
201 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
202
203 // Check whether uses is module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530204 assertThat(yangNode.getChild() instanceof YangUses, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530205 YangUses uses = (YangUses) yangNode.getChild();
206
207 // Check whether uses get resolved.
208 assertThat(uses.getResolvableStatus(),
209 is(ResolvableStatus.RESOLVED));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530210 }
211
212 /**
213 * Checks inter file type linking with include list.
214 */
215 @Test
216 public void processInterFileTypeLinkingWithIncludeList()
217 throws IOException, ParserException, MojoExecutionException {
218
219 String searchDir = "src/test/resources/interfiletypewithinclude";
220 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
221 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530222 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530223
224 YangNode refNode = null;
225 YangNode selfNode = null;
226
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530227 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530228 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530229
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530230 // Carry out linking of sub module with module.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530231 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530232
233 // Add reference to include list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530234 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530235
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530236 updateFilePriority(utilManager.getYangNodeSet());
237
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530238 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530239 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530240
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530241 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530242
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530243 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530244
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530245 if (rootNode.getName().equals("module1")) {
246 selfNode = rootNode;
247 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530248 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530249 refNode = rootNode;
250 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530251 }
252
253 // Check whether the data model tree returned is of type module.
254 assertThat(selfNode instanceof YangModule, is(true));
255
256 // Check whether the node type is set properly to module.
257 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
258
259 // Check whether the module name is set correctly.
260 YangModule yangNode = (YangModule) selfNode;
261 assertThat(yangNode.getName(), is("module1"));
262
263 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
264 YangLeaf leafInfo = leafIterator.next();
265
266 assertThat(leafInfo.getName(), is("invalid-interval"));
267 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
268 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
269
270 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
271 is((YangTypeDef) refNode.getChild()));
272
273 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
274
275 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
276
277 // Check for the effective built-in type.
278 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
279
280 // Check for the restriction.
281 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
282 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
283 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
284 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
285 }
286
287 /**
288 * Checks inter file uses linking with include list.
289 */
290 @Test
291 public void processInterFileUsesLinkingWithInclude()
292 throws IOException, ParserException, MojoExecutionException {
293
294 String searchDir = "src/test/resources/interfileuseswithinclude";
295 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
296 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530297 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530298
299 YangNode refNode = null;
300 YangNode selfNode = null;
301
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530302 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530303 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530304
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530305 // Carry out linking of sub module with module.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530306 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530307
308 // Add reference to include list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530309 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530310
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530311 updateFilePriority(utilManager.getYangNodeSet());
312
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530313 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530314 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530315
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530316 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530317
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530318 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530319
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530320 if (rootNode.getName().equals("module1")) {
321 selfNode = rootNode;
322 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530323 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530324 refNode = rootNode;
325 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530326 }
327
328 // Check whether the data model tree returned is of type module.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530329 assertThat(selfNode instanceof YangModule, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530330
331 // Check whether the node type is set properly to module.
332 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
333
334 // Check whether the module name is set correctly.
335 YangModule yangNode = (YangModule) selfNode;
336 assertThat(yangNode.getName(), is("module1"));
337
338 ListIterator<YangLeaf> leafIterator;
339 YangLeaf leafInfo;
340
341 // Check whether grouping is the sibling of module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530342 assertThat(refNode.getChild() instanceof YangGrouping, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530343
344 YangGrouping grouping = (YangGrouping) refNode.getChild();
345 leafIterator = grouping.getListOfLeaf().listIterator();
346 leafInfo = leafIterator.next();
347
348 // Check whether the information in the leaf is correct under grouping.
349 assertThat(leafInfo.getName(), is("hello"));
350 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
351 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
352
353 // Check whether uses is module's child.
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530354 assertThat(yangNode.getChild() instanceof YangUses, is(true));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530355 YangUses uses = (YangUses) yangNode.getChild();
356
357 // Check whether uses get resolved.
358 assertThat(uses.getResolvableStatus(),
359 is(ResolvableStatus.RESOLVED));
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530360 }
361
362 /**
363 * Checks inter file type linking with revision.
364 */
365 @Test
366 public void processInterFileTypeLinkingWithRevision()
367 throws IOException, ParserException, MojoExecutionException {
368
369 String searchDir = "src/test/resources/interfiletypewithrevision";
370 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
371 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530372 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530373
374 YangNode refNode = null;
375 YangNode selfNode = null;
376
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530377 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530378 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530379
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530380 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530381 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530382
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530383 updateFilePriority(utilManager.getYangNodeSet());
384
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530385 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530386 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530387
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530388 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530389
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530390 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530391
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530392 if (rootNode.getName().equals("module1")) {
393 selfNode = rootNode;
394 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530395 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530396 refNode = rootNode;
397 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530398 }
399
400 // Check whether the data model tree returned is of type module.
401 assertThat(selfNode instanceof YangModule, is(true));
402
403 // Check whether the node type is set properly to module.
404 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
405
406 // Check whether the module name is set correctly.
407 YangModule yangNode = (YangModule) selfNode;
408 assertThat(yangNode.getName(), is("module1"));
409
410 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
411 YangLeaf leafInfo = leafIterator.next();
412
413 assertThat(leafInfo.getName(), is("invalid-interval"));
414 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
415 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
416
417 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
418 is((YangTypeDef) refNode.getChild()));
419
420 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
421
422 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
423
424 // Check for the effective built-in type.
425 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
426
427 // Check for the restriction.
428 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
429 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
430 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
431 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
432 }
433
434 /**
435 * Checks inter file type linking with revision in name.
436 */
437 @Test
438 public void processInterFileTypeLinkingWithRevisionInName()
439 throws IOException, ParserException, MojoExecutionException {
440
441 String searchDir = "src/test/resources/interfiletypewithrevisioninname";
442 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
443 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530444 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530445
446 YangNode refNode = null;
447 YangNode selfNode = null;
448
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530449 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530450 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530451
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530452 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530453 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530454
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530455 updateFilePriority(utilManager.getYangNodeSet());
456
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530457 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530458 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530459
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530460 Iterator<YangNode> yangNodeIterator = utilManager.getYangNodeSet().iterator();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530461
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530462 YangNode rootNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530463
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530464 if (rootNode.getName().equals("module1")) {
465 selfNode = rootNode;
466 refNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530467 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530468 refNode = rootNode;
469 selfNode = yangNodeIterator.next();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530470 }
471
472 // Check whether the data model tree returned is of type module.
473 assertThat(selfNode instanceof YangModule, is(true));
474
475 // Check whether the node type is set properly to module.
476 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
477
478 // Check whether the module name is set correctly.
479 YangModule yangNode = (YangModule) selfNode;
480 assertThat(yangNode.getName(), is("module1"));
481
482 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
483 YangLeaf leafInfo = leafIterator.next();
484
485 assertThat(leafInfo.getName(), is("invalid-interval"));
486 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
487 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
488
489 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
490 is((YangTypeDef) refNode.getChild()));
491
492 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
493
494 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
495
496 // Check for the effective built-in type.
497 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
498
499 // Check for the restriction.
500 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
501 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
502 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
503 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
504 }
505
506 /**
507 * Checks hierarchical inter file type linking.
508 */
509 @Test
510 public void processHierarchicalInterFileTypeLinking()
511 throws IOException, ParserException, MojoExecutionException {
512
513 String searchDir = "src/test/resources/hierarchicalinterfiletype";
514 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
515 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530516 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530517
518 YangNode refNode1 = null;
519 YangNode refNode2 = null;
520 YangNode selfNode = null;
521
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530522 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530523 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530524
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530525 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530526 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530527
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530528 updateFilePriority(utilManager.getYangNodeSet());
529
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530530 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530531 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530532
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530533 for (YangNode rootNode : utilManager.getYangNodeSet()) {
534 if (rootNode.getName().equals("ietf-network-topology")) {
535 selfNode = rootNode;
536 } else if (rootNode.getName().equals("ietf-network")) {
537 refNode1 = rootNode;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530538 } else {
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530539 refNode2 = rootNode;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530540 }
541 }
542
543 // Check whether the data model tree returned is of type module.
544 assertThat(selfNode instanceof YangModule, is(true));
545
546 // Check whether the node type is set properly to module.
547 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
548
549 // Check whether the module name is set correctly.
550 YangModule yangNode = (YangModule) selfNode;
551 assertThat(yangNode.getName(), is("ietf-network-topology"));
552
553 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
554 YangLeaf leafInfo = leafIterator.next();
555
556 assertThat(leafInfo.getName(), is("source-node"));
557 assertThat(leafInfo.getDataType().getDataTypeName(), is("node-id"));
558 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
559
560 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
561 is((YangTypeDef) refNode1.getChild()));
562
563 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
564
565 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
566
567 // Check for the effective built-in type.
568 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
569
570 // Check for the restriction.
571 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
572 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
573 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
574 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
575 }
576
577 /**
578 * Checks hierarchical intra with inter file type linking.
579 */
580 @Test
581 public void processHierarchicalIntraWithInterFileTypeLinking()
582 throws IOException, ParserException, MojoExecutionException {
583
584 String searchDir = "src/test/resources/hierarchicalintrawithinterfiletype";
585 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
586 utilManager.parseYangFileInfoSet();
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530587 utilManager.createYangNodeSet();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530588
589 YangNode refNode1 = null;
590 YangNode selfNode = null;
591
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530592 // Create YANG node set
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530593 yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
Gaurav Agrawal95b416c2016-06-07 14:00:26 +0530594
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530595 // Add references to import list.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530596 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530597
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530598 updateFilePriority(utilManager.getYangNodeSet());
599
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530600 // Carry out inter-file linking.
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530601 yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530602
Gaurav Agrawal8a5af142016-06-15 13:58:01 +0530603 for (YangNode rootNode : utilManager.getYangNodeSet()) {
604 if (rootNode.getName().equals("ietf-network")) {
605 selfNode = rootNode;
606 } else if (rootNode.getName().equals("ietf-inet-types")) {
607 refNode1 = rootNode;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530608 }
609 }
610
611 // Check whether the data model tree returned is of type module.
612 assertThat(selfNode instanceof YangModule, is(true));
613
614 // Check whether the node type is set properly to module.
615 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
616
617 // Check whether the module name is set correctly.
618 YangModule yangNode = (YangModule) selfNode;
619 assertThat(yangNode.getName(), is("ietf-network"));
620
621 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
622 YangLeaf leafInfo = leafIterator.next();
623
624 assertThat(leafInfo.getName(), is("node-ref"));
625 assertThat(leafInfo.getDataType().getDataTypeName(), is("node-id"));
626 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
627
628 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
629 is((YangTypeDef) selfNode.getChild()));
630
631 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
632
633 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
634
635 // Check for the effective built-in type.
636 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
637
638 // Check for the restriction.
639 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
640 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
641 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
642 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
643 }
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530644
645 /**
646 * Checks hierarchical intra with inter file type linking.
647 */
648 @Test
649 public void interFileWithUsesReferringType()
650 throws IOException, ParserException, MojoExecutionException {
651
652 String searchDir = "src/test/resources/interfilewithusesreferringtype";
653 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
654 utilManager.parseYangFileInfoSet();
655 utilManager.resolveDependenciesUsingLinker();
656
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530657 YangPluginConfig yangPluginConfig = new YangPluginConfig();
658 yangPluginConfig.setCodeGenDir("target/interfilewithusesreferringtype/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530659 yangPluginConfig.setManagerCodeGenDir("target/interfilewithusesreferringtype/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530660
Bharat saraswald50c6382016-07-14 21:57:13 +0530661 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530662
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530663 deleteDirectory("target/interfilewithusesreferringtype/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530664
665 }
666
667 /**
668 * Checks hierarchical intra with inter file type linking.
669 */
670 @Test
671 public void file1UsesFile2TypeDefFile3Type()
672 throws IOException, ParserException, MojoExecutionException {
673
674 String searchDir = "src/test/resources/file1UsesFile2TypeDefFile3Type";
675 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
676 utilManager.parseYangFileInfoSet();
677 utilManager.resolveDependenciesUsingLinker();
678
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530679 YangPluginConfig yangPluginConfig = new YangPluginConfig();
680 yangPluginConfig.setCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530681 yangPluginConfig.setManagerCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530682
Bharat saraswald50c6382016-07-14 21:57:13 +0530683 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530684
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530685 deleteDirectory("target/file1UsesFile2TypeDefFile3Type/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530686
687 }
688
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530689 /**
690 * Checks hierarchical intra with inter file type linking.
691 */
692 @Test
693 public void interFileIetf()
694 throws IOException, ParserException, MojoExecutionException {
695
696 String searchDir = "src/test/resources/interfileietf";
697 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
698 utilManager.parseYangFileInfoSet();
699 utilManager.resolveDependenciesUsingLinker();
700
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530701 YangPluginConfig yangPluginConfig = new YangPluginConfig();
702 yangPluginConfig.setCodeGenDir("target/interfileietf/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530703 yangPluginConfig.setManagerCodeGenDir("target/interfileietf/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530704
Bharat saraswald50c6382016-07-14 21:57:13 +0530705 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530706
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530707 deleteDirectory("target/interfileietf/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530708
709 }
710
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530711 /**
712 * Checks hierarchical intra with inter file type linking.
713 */
714 @Test
715 public void usesInContainer()
716 throws IOException, ParserException, MojoExecutionException {
717
718 String searchDir = "src/test/resources/usesInContainer";
719 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
720 utilManager.parseYangFileInfoSet();
721 utilManager.resolveDependenciesUsingLinker();
722
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530723 YangPluginConfig yangPluginConfig = new YangPluginConfig();
724 yangPluginConfig.setCodeGenDir("target/usesInContainer/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530725 yangPluginConfig.setManagerCodeGenDir("target/usesInContainer/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530726
Bharat saraswald50c6382016-07-14 21:57:13 +0530727 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530728
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530729 deleteDirectory("target/usesInContainer/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530730
731 }
732
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530733 /**
734 * Checks hierarchical intra with inter file type linking.
735 */
736 @Test
737 public void groupingNodeSameAsModule()
738 throws IOException, ParserException, MojoExecutionException {
739
740 String searchDir = "src/test/resources/groupingNodeSameAsModule";
741 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
742 utilManager.parseYangFileInfoSet();
743 utilManager.resolveDependenciesUsingLinker();
744
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530745 YangPluginConfig yangPluginConfig = new YangPluginConfig();
746 yangPluginConfig.setCodeGenDir("target/groupingNodeSameAsModule/");
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530747 yangPluginConfig.setManagerCodeGenDir("target/groupingNodeSameAsModule/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530748
Bharat saraswald50c6382016-07-14 21:57:13 +0530749 utilManager.translateToJava(yangPluginConfig);
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530750
Bharat saraswalb1170bd2016-07-14 13:26:18 +0530751 deleteDirectory("target/groupingNodeSameAsModule/");
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530752
753 }
janani be18b5342016-07-13 21:06:41 +0530754
755 /**
Vidyashree Rama1b499062016-07-12 20:52:48 +0530756 * Checks priority of the file.
757 */
758 @Test
759 public void interFilePriority()
760 throws IOException, ParserException, MojoExecutionException {
761
762 String searchDir = "src/test/resources/interfilepriority";
763 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
764 utilManager.parseYangFileInfoSet();
765 utilManager.resolveDependenciesUsingLinker();
766
767 YangNode selfNode = null;
768 YangNode refNode1 = null;
769 YangNode refNode2 = null;
770
771 for (YangNode rootNode : utilManager.getYangNodeSet()) {
772 if (rootNode.getName().equals("module1")) {
773 selfNode = rootNode;
774 } else if (rootNode.getName().equals("module2")) {
775 refNode1 = rootNode;
776 } else {
777 refNode2 = rootNode;
778 }
779 }
780
781 // Check whether the data model tree returned is of type module.
782 assertThat(selfNode instanceof YangModule, is(true));
783
784 // Check whether the node type is set properly to module.
785 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
786
787 // Check whether the module name is set correctly.
788 YangModule yangNode = (YangModule) selfNode;
789 assertThat(yangNode.getName(), is("module1"));
790 assertThat(yangNode.getPriority(), is(2));
791
792 // Check whether the data model tree returned is of type module.
793 assertThat(refNode1 instanceof YangModule, is(true));
794
795 // Check whether the node type is set properly to module.
796 assertThat(refNode1.getNodeType(), is(MODULE_NODE));
797
798 YangModule referredNode1 = (YangModule) refNode1;
799 assertThat(referredNode1.getName(), is("module2"));
800 assertThat(referredNode1.getPriority(), is(3));
801 }
Vidyashree Rama36f2fab2016-07-15 14:06:56 +0530802
803 /**
804 * Checks contents of uses are copied as child of grouping.
805 */
806 @Test
807 public void usesInsideChildOfGrouping()
808 throws IOException, ParserException, MojoExecutionException {
809
810 String searchDir = "src/test/resources/usesInsideChildOfGrouping";
811 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
812 utilManager.parseYangFileInfoSet();
813 utilManager.resolveDependenciesUsingLinker();
814
815 YangNode selfNode = null;
816 YangNode refNode1 = null;
817
818 for (YangNode rootNode : utilManager.getYangNodeSet()) {
819 if (rootNode.getName().equals("ietf-network")) {
820 selfNode = rootNode;
821 } else if (rootNode.getName().equals("ietf-te-topology")) {
822 refNode1 = rootNode;
823 }
824 }
825
826 // Check whether the data model tree returned is of type module.
827 assertThat(selfNode instanceof YangModule, is(true));
828 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
829 YangModule yangNode = (YangModule) selfNode;
830 assertThat(yangNode.getName(), is("ietf-network"));
831
832 YangModule refNode = (YangModule) refNode1;
833 assertThat(refNode.getName(), is("ietf-te-topology"));
834
835 YangAugment augment = ((YangAugment) refNode.getChild().getNextSibling().
836 getNextSibling().getNextSibling().getNextSibling());
837 assertThat(augment.getName(), is("/nw:networks/nw:network/nw:node"));
838
839 YangUses uses = ((YangUses) augment.getChild());
840 YangContainer container = ((YangContainer) uses.getNextSibling());
841 assertThat(container.getName(), is("te"));
842
843 container = ((YangContainer) container.getChild());
844 assertThat(container.getName(), is("config"));
845
846 uses = ((YangUses) container.getChild().getNextSibling());
847 assertThat(uses.getName(), is("te-node-config-attributes"));
848
849 YangContainer container1 = ((YangContainer) uses.getNextSibling());
850 assertThat(container1.getName(), is("te-node-attributes"));
851
852 uses = ((YangUses) container1.getChild());
853 assertThat(uses.getName(), is("te-node-connectivity-matrix"));
854
855 YangList list = ((YangList) uses.getNextSibling());
856 assertThat(list.getName(), is("connectivity-matrix"));
857 }
Vidyashree Rama07c26bb2016-07-28 17:33:15 +0530858
859 /**
860 * Checks contents of uses are copied as child of grouping.
861 */
862 @Test
863 public void interFileUsesInsideChildOfGrouping()
864 throws IOException, ParserException, MojoExecutionException {
865
866 String searchDir = "src/test/resources/interFileUsesInsideChildOfGrouping";
867 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
868 utilManager.parseYangFileInfoSet();
869 utilManager.resolveDependenciesUsingLinker();
870
871 YangNode selfNode = null;
872 YangNode refNode1 = null;
873
874 for (YangNode rootNode : utilManager.getYangNodeSet()) {
875 if (rootNode.getName().equals("ietf-network")) {
876 selfNode = rootNode;
877 } else if (rootNode.getName().equals("ietf-te-topology")) {
878 refNode1 = rootNode;
879 }
880 }
881
882 // Check whether the data model tree returned is of type module.
883 assertThat(selfNode instanceof YangModule, is(true));
884 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
885 YangModule yangNode = (YangModule) selfNode;
886 assertThat(yangNode.getName(), is("ietf-network"));
887
888 YangModule refNode = (YangModule) refNode1;
889 assertThat(refNode.getName(), is("ietf-te-topology"));
890
891 YangAugment augment = ((YangAugment) refNode.getChild().getNextSibling().
892 getNextSibling().getNextSibling().getNextSibling().getNextSibling());
893 assertThat(augment.getName(), is("/nw:networks/nw:network/nt:link"));
894
895 YangUses uses = ((YangUses) augment.getChild());
896 assertThat(uses.getResolvableStatus(), is(RESOLVED));
897 YangContainer container = ((YangContainer) uses.getNextSibling());
898 assertThat(container.getName(), is("te"));
899
900 container = ((YangContainer) container.getChild());
901 assertThat(container.getName(), is("config"));
902
903 uses = ((YangUses) container.getChild().getNextSibling());
904 assertThat(uses.getName(), is("te-link-config-attributes"));
905 assertThat(uses.getResolvableStatus(), is(RESOLVED));
906
907 YangContainer container1 = ((YangContainer) uses.getNextSibling());
908 assertThat(container1.getName(), is("te-link-attributes"));
909
910 container = ((YangContainer) container1.getChild());
911 assertThat(container.getName(), is("underlay"));
912
913 uses = ((YangUses) container.getChild());
914 assertThat(uses.getName(), is("te-link-underlay-attributes"));
915 assertThat(uses.getResolvableStatus(), is(RESOLVED));
916
917 container = ((YangContainer) uses.getNextSibling());
918 assertThat(container.getName(), is("underlay-primary-path"));
919
920 YangList yangList = ((YangList) container.getChild());
921 assertThat(yangList.getName(), is("path-element"));
922
923 uses = ((YangUses) yangList.getChild());
924 assertThat(uses.getName(), is("te-path-element"));
925 assertThat(uses.getResolvableStatus(), is(RESOLVED));
926
927 uses = ((YangUses) uses.getNextSibling());
928 assertThat(uses.getName(), is("explicit-route-subobject"));
929 assertThat(uses.getResolvableStatus(), is(RESOLVED));
930
931 YangChoice choice = ((YangChoice) uses.getNextSibling());
932 assertThat(choice.getName(), is("type"));
933 }
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530934}