blob: dee5648f7392960b4dfb302b8e7f3cb258dc1354 [file] [log] [blame]
sonu gupta1bb37b82016-11-11 16:51:18 +05301/*
sonu guptaeff184b2016-11-24 12:43:49 +05302 * Copyright (c) 2016. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
3 * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
4 * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
5 * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
6 * Vestibulum commodo. Ut rhoncus gravida arcu.
sonu gupta1bb37b82016-11-11 16:51:18 +05307 */
8
9package org.onosproject.yms.app.ydt;
10
11import org.junit.Test;
12
13import java.util.HashSet;
14import java.util.Set;
15
sonu gupta1bb37b82016-11-11 16:51:18 +053016import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.BOTH;
sonu gupta1bb37b82016-11-11 16:51:18 +053017import static org.onosproject.yms.app.ydt.YdtTestConstants.A2L;
sonu gupta1bb37b82016-11-11 16:51:18 +053018import static org.onosproject.yms.app.ydt.YdtTestConstants.A5L;
sonu gupta1bb37b82016-11-11 16:51:18 +053019import static org.onosproject.yms.app.ydt.YdtTestConstants.A6L;
20import static org.onosproject.yms.app.ydt.YdtTestConstants.AUG1;
sonu gupta1bb37b82016-11-11 16:51:18 +053021import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF;
sonu guptaeff184b2016-11-24 12:43:49 +053022import static org.onosproject.yms.app.ydt.YdtTestConstants.NETNS;
sonu gupta1bb37b82016-11-11 16:51:18 +053023import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK;
24import static org.onosproject.yms.app.ydt.YdtTestConstants.STP;
25import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS;
26import static org.onosproject.yms.app.ydt.YdtTestUtils.augmentNetworkYdt;
27import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents;
28import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents;
29import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents;
30import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
31import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents;
32import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
33import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
34import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE;
35import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
36
37public class AugmentTest {
38
39 private Set<String> valueSet = new HashSet();
40
41 private static final String[] EXPECTED = {
42 "Entry Node is yms-ietf-network.",
43 "Entry Node is yms-ietf-network.",
44 "Entry Node is networks.",
45 "Entry Node is network.",
46 "Entry Node is network-id.",
47 "Exit Node is network-id.",
48 "Entry Node is link.",
49 "Entry Node is link-id.",
50 "Exit Node is link-id.",
51 "Entry Node is source.",
52 "Entry Node is source-node.",
53 "Exit Node is source-node.",
54 "Entry Node is source-tp.",
55 "Exit Node is source-tp.",
56 "Exit Node is source.",
57
58 "Entry Node is destination.",
59 "Entry Node is dest-node.",
60 "Exit Node is dest-node.",
61 "Entry Node is dest-tp.",
62 "Exit Node is dest-tp.",
63 "Exit Node is destination.",
64
65 "Entry Node is supporting-link.",
66 "Entry Node is network-ref.",
67 "Exit Node is network-ref.",
68 "Entry Node is link-ref.",
69 "Exit Node is link-ref.",
70 "Exit Node is supporting-link.",
71
72 "Entry Node is supporting-link.",
73 "Entry Node is network-ref.",
74 "Exit Node is network-ref.",
75 "Entry Node is link-ref.",
76 "Exit Node is link-ref.",
77 "Exit Node is supporting-link.",
78
79 "Entry Node is augment1.",
80 "Entry Node is value1.",
81 "Exit Node is value1.",
82 "Exit Node is augment1.",
83
84 "Entry Node is augment2.",
85 "Entry Node is key1.",
86 "Exit Node is key1.",
87 "Entry Node is key2.",
88 "Exit Node is key2.",
89
90 "Entry Node is augment5.",
91
92 "Entry Node is augment6leafList.",
93 "Exit Node is augment6leafList.",
94
95 "Entry Node is value5.",
96 "Exit Node is value5.",
97 "Exit Node is augment5.",
98
99 "Entry Node is augment5leafList.",
100 "Exit Node is augment5leafList.",
101
102 "Entry Node is augment3.",
103
104 "Entry Node is augment4.",
105 "Entry Node is value4.",
106 "Exit Node is value4.",
107 "Exit Node is augment4.",
108
109 "Entry Node is augment5.",
110
111 "Entry Node is leaf6.",
112 "Exit Node is leaf6.",
113
114 "Entry Node is value5.",
115 "Exit Node is value5.",
116 "Exit Node is augment5.",
117
118 "Entry Node is augment6.",
119 "Entry Node is value6.",
120 "Exit Node is value6.",
121 "Exit Node is augment6.",
122
123 "Entry Node is value3.",
124 "Exit Node is value3.",
125 "Exit Node is augment3.",
126
127 "Entry Node is augment3leaf.",
128 "Exit Node is augment3leaf.",
129
130 "Exit Node is augment2.",
131
132 "Entry Node is augment2leafList.",
133 "Exit Node is augment2leafList.",
134
135 "Exit Node is link.",
136
137 "Entry Node is supporting-network.",
138 "Entry Node is network-ref.",
139 "Exit Node is network-ref.",
140 "Exit Node is supporting-network.",
141 "Entry Node is node.",
142 "Entry Node is node-id.",
143 "Exit Node is node-id.",
144 "Entry Node is t-point.",
145 "Entry Node is tp-id.",
146 "Exit Node is tp-id.",
147
148 "Entry Node is supporting-termination-point.",
149 "Entry Node is network-ref.",
150 "Exit Node is network-ref.",
151 "Entry Node is node-ref.",
152 "Exit Node is node-ref.",
153 "Entry Node is tp-ref.",
154 "Exit Node is tp-ref.",
155
156 "Entry Node is augment1.",
157 "Entry Node is value1.",
158 "Exit Node is value1.",
159 "Exit Node is augment1.",
160
161 "Entry Node is augment1-leaf.",
162 "Exit Node is augment1-leaf.",
163
164 "Entry Node is augment2.",
165
166 "Entry Node is augment3.",
167 "Entry Node is value3.",
168 "Exit Node is value3.",
169 "Exit Node is augment3.",
170
171 "Entry Node is augment4leaf.",
172 "Exit Node is augment4leaf.",
173
174 "Entry Node is value2.",
175 "Exit Node is value2.",
176 "Exit Node is augment2.",
177 "Entry Node is augment2leafList.",
178 "Exit Node is augment2leafList.",
179 "Entry Node is augment2leaf.",
180 "Exit Node is augment2leaf.",
181
182 "Exit Node is supporting-termination-point.",
183 "Exit Node is t-point.",
184 "Entry Node is supporting-node.",
185 "Entry Node is network-ref.",
186 "Exit Node is network-ref.",
187 "Entry Node is node-ref.",
188 "Exit Node is node-ref.",
189 "Exit Node is supporting-node.",
190
191 "Exit Node is node.",
192 // last augmented sibling in network
193 "Entry Node is link-id.",
194 "Exit Node is link-id.",
195
196 "Exit Node is network.",
197 "Exit Node is networks.",
198 "Entry Node is networks-state.",
199 "Entry Node is network.",
200 "Entry Node is network-ref.",
201 "Exit Node is network-ref.",
202 "Entry Node is server-provided.",
203 "Exit Node is server-provided.",
204 "Exit Node is network.",
205 "Exit Node is networks-state.",
206 "Exit Node is yms-ietf-network.",
sonu guptaeff184b2016-11-24 12:43:49 +0530207
208 "Entry Node is augmentNetwork.",
209 "Entry Node is node.",
210 "Entry Node is name.",
211 "Exit Node is name.",
212 "Entry Node is cont1s.",
213 "Entry Node is cont1s.",
214 "Entry Node is fine.",
215 "Exit Node is fine.",
216
217 // augmenting node augment1 under cont1s
218 "Entry Node is augment1.",
219 "Entry Node is value1.",
220 "Exit Node is value1.",
221 "Exit Node is augment1.",
222
223 "Exit Node is cont1s.",
224 "Exit Node is cont1s.",
225 "Exit Node is node.",
226 "Exit Node is augmentNetwork.",
227
sonu gupta1bb37b82016-11-11 16:51:18 +0530228 "Exit Node is yms-ietf-network."
229 };
230
231 /**
232 * Creates and validates ietf network augment ydt.
233 */
234 @Test
235 public void augmentTest() {
236 YangRequestWorkBench ydtBuilder = augmentNetworkYdt();
237 validateTree(ydtBuilder);
238 validateAppTree(ydtBuilder);
239 walkINTree(ydtBuilder, EXPECTED);
240 }
241
242 /**
243 * Validates the given built ydt.
244 */
245 private void validateTree(YangRequestWorkBench ydtBuilder) {
246
247 // Assign root node to ydtNode for validating purpose.
248 YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
249 // Logical root node does not have operation type
250 validateNodeContents(ydtNode, "yms-ietf-network", null);
251 ydtNode = ydtNode.getFirstChild();
252 validateNodeContents(ydtNode, "yms-ietf-network", MERGE);
253 ydtNode = ydtNode.getFirstChild();
254 validateNodeContents(ydtNode, "networks", MERGE);
255 ydtNode = ydtNode.getFirstChild();
256 validateNodeContents(ydtNode, "network", MERGE);
257 ydtNode = ydtNode.getFirstChild();
258 validateLeafContents(ydtNode, "network-id", "network1");
259 ydtNode = ydtNode.getNextSibling();
260
261 // Validating augmented child
262 validateNodeContents(ydtNode, "link", MERGE);
263 ydtNode = ydtNode.getFirstChild();
264 validateLeafContents(ydtNode, "link-id", "id1");
265 ydtNode = ydtNode.getNextSibling();
266
267 // Inside source node
268 validateNodeContents(ydtNode, "source", MERGE);
269 ydtNode = ydtNode.getFirstChild();
270 validateLeafContents(ydtNode, "source-node", "source1");
271 ydtNode = ydtNode.getNextSibling();
272 validateLeafContents(ydtNode, "source-tp", "source2");
273 ydtNode = ydtNode.getParent();
274 ydtNode = ydtNode.getNextSibling();
275
276 //Inside destination node
277 validateNodeContents(ydtNode, "destination", MERGE);
278 ydtNode = ydtNode.getFirstChild();
279 validateLeafContents(ydtNode, "dest-node", "dest1");
280 ydtNode = ydtNode.getNextSibling();
281 validateLeafContents(ydtNode, "dest-tp", "dest2");
282 ydtNode = ydtNode.getParent();
283 ydtNode = ydtNode.getNextSibling();
284
285 //Inside supporting links
286 validateNodeContents(ydtNode, SLINK, MERGE);
287 ydtNode = ydtNode.getFirstChild();
288 validateLeafContents(ydtNode, "network-ref", "network1");
289 ydtNode = ydtNode.getNextSibling();
290 validateLeafContents(ydtNode, "link-ref", "id2");
291 ydtNode = ydtNode.getParent();
292 ydtNode = ydtNode.getNextSibling();
293
294 //Inside another supporting links instance
295 validateNodeContents(ydtNode, SLINK, MERGE);
296 ydtNode = ydtNode.getFirstChild();
297 validateLeafContents(ydtNode, "network-ref", "network2");
298 ydtNode = ydtNode.getNextSibling();
299 validateLeafContents(ydtNode, "link-ref", "id3");
300 ydtNode = ydtNode.getParent();
301 ydtNode = ydtNode.getNextSibling();
302
303 validateNodeContents(ydtNode, "augment1", MERGE);
304 ydtNode = ydtNode.getFirstChild();
305 validateLeafContents(ydtNode, "value1", "1");
306 ydtNode = ydtNode.getParent();
307
308 ydtNode = ydtNode.getNextSibling();
309 validateNodeContents(ydtNode, "augment2", MERGE);
310 ydtNode = ydtNode.getFirstChild();
311 validateLeafContents(ydtNode, "key1", "1");
312 ydtNode = ydtNode.getNextSibling();
313 validateLeafContents(ydtNode, "key2", "2");
314
315 ydtNode = ydtNode.getNextSibling();
316 validateNodeContents(ydtNode, "augment5", DELETE);
317 ydtNode = ydtNode.getFirstChild();
318 valueSet.add("1");
319 valueSet.add("2");
320 validateLeafListContents(ydtNode, A6L, valueSet);
321 ydtNode = ydtNode.getNextSibling();
322
323 validateLeafContents(ydtNode, "value5", "5");
324 ydtNode = ydtNode.getParent();
325
326 ydtNode = ydtNode.getNextSibling();
327 validateLeafListContents(ydtNode, A5L, valueSet);
328
329 ydtNode = ydtNode.getNextSibling();
330 validateNodeContents(ydtNode, "augment3", MERGE);
331 ydtNode = ydtNode.getFirstChild();
332
333 validateNodeContents(ydtNode, "augment4", DELETE);
334 ydtNode = ydtNode.getFirstChild();
335 validateLeafContents(ydtNode, "value4", "4");
336 ydtNode = ydtNode.getParent();
337 ydtNode = ydtNode.getNextSibling();
338
339 validateNodeContents(ydtNode, "augment5", MERGE);
340 ydtNode = ydtNode.getFirstChild();
341
342 validateLeafContents(ydtNode, "leaf6", "6");
343 ydtNode = ydtNode.getNextSibling();
344
345 validateLeafContents(ydtNode, "value5", "5");
346 ydtNode = ydtNode.getParent();
347 ydtNode = ydtNode.getNextSibling();
348
349 validateNodeContents(ydtNode, "augment6", DELETE);
350 ydtNode = ydtNode.getFirstChild();
351 validateLeafContents(ydtNode, "value6", "6");
352 ydtNode = ydtNode.getParent();
353 ydtNode = ydtNode.getNextSibling();
354
355 validateLeafContents(ydtNode, "value3", "3");
356 ydtNode = ydtNode.getParent();
357 ydtNode = ydtNode.getNextSibling();
358 validateLeafContents(ydtNode, "augment3leaf", "3");
359
360 ydtNode = ydtNode.getParent();
361
362 ydtNode = ydtNode.getNextSibling();
363 validateLeafListContents(ydtNode, A2L, valueSet);
364
365 ydtNode = ydtNode.getParent();
366
367 ydtNode = ydtNode.getNextSibling();
368 validateNodeContents(ydtNode, "supporting-network", MERGE);
369 ydtNode = ydtNode.getFirstChild();
370 validateLeafContents(ydtNode, "network-ref", "network2");
371 ydtNode = ydtNode.getParent();
372
373 ydtNode = ydtNode.getNextSibling();
374 validateNodeContents(ydtNode, "node", MERGE);
375 ydtNode = ydtNode.getFirstChild();
376 validateLeafContents(ydtNode, "node-id", "node1");
377 ydtNode = ydtNode.getNextSibling();
378
379 //Inside termination-point
380 validateNodeContents(ydtNode, "t-point", MERGE);
381 ydtNode = ydtNode.getFirstChild();
382 validateLeafContents(ydtNode, "tp-id", "tp_id1");
383 ydtNode = ydtNode.getNextSibling();
384
385 validateTerminationPointAugment(ydtNode);
386 }
387
388 /**
389 * Validates the termination point node in given built ydt.
390 */
391 private void validateTerminationPointAugment(YdtNode ydtNode) {
392
393 //Inside supporting-termination-point
394 validateNodeContents(ydtNode, STP, MERGE);
395 ydtNode = ydtNode.getFirstChild();
396 validateLeafContents(ydtNode, "network-ref", "network-ref");
397 ydtNode = ydtNode.getNextSibling();
398 validateLeafContents(ydtNode, "node-ref", "node-ref");
399 ydtNode = ydtNode.getNextSibling();
400 validateLeafContents(ydtNode, "tp-ref", "tp-ref");
401
402 ydtNode = ydtNode.getNextSibling();
403 validateNodeContents(ydtNode, "augment1", MERGE);
404 ydtNode = ydtNode.getFirstChild();
405 validateLeafContents(ydtNode, "value1", "1");
406 ydtNode = ydtNode.getParent();
407
408 ydtNode = ydtNode.getNextSibling();
409 validateLeafContents(ydtNode, "augment1-leaf", "1");
410
411 ydtNode = ydtNode.getNextSibling();
412 validateNodeContents(ydtNode, "augment2", MERGE);
413 ydtNode = ydtNode.getFirstChild();
414
415 validateNodeContents(ydtNode, "augment3", MERGE);
416 ydtNode = ydtNode.getFirstChild();
417 validateLeafContents(ydtNode, "value3", "3");
418 ydtNode = ydtNode.getParent();
419
420 ydtNode = ydtNode.getNextSibling();
421 validateLeafContents(ydtNode, "augment4leaf", "4");
422
423 ydtNode = ydtNode.getNextSibling();
424 validateLeafContents(ydtNode, "value2", "2");
425 ydtNode = ydtNode.getParent();
426 ydtNode = ydtNode.getNextSibling();
427 validateLeafListContents(ydtNode, A2L, valueSet);
428
429 ydtNode = ydtNode.getNextSibling();
430 validateLeafContents(ydtNode, "augment2leaf", "2");
431
432 ydtNode = ydtNode.getParent();
433 ydtNode = ydtNode.getParent();
434
435 ydtNode = ydtNode.getNextSibling();
436 validateNodeContents(ydtNode, "supporting-node", MERGE);
437 ydtNode = ydtNode.getFirstChild();
438 validateLeafContents(ydtNode, "network-ref", "network3");
439 ydtNode = ydtNode.getNextSibling();
440 validateLeafContents(ydtNode, "node-ref", "network4");
441
442 ydtNode = ydtNode.getParent().getParent();
443
444 ydtNode = ydtNode.getNextSibling();
445 validateLeafContents(ydtNode, "link-id", "id1");
446 ydtNode = ydtNode.getParent().getParent();
447
448 ydtNode = ydtNode.getNextSibling();
449 validateNodeContents(ydtNode, "networks-state", MERGE);
450 ydtNode = ydtNode.getFirstChild();
451 validateNodeContents(ydtNode, "network", MERGE);
452 ydtNode = ydtNode.getFirstChild();
453 validateLeafContents(ydtNode, "network-ref", "network5");
454 ydtNode = ydtNode.getNextSibling();
455 validateLeafContents(ydtNode, "server-provided", "true");
sonu guptaeff184b2016-11-24 12:43:49 +0530456 ydtNode = ydtNode.getParent().getParent().getParent();
457
458 validateAugmentNetworkModule(ydtNode);
459 }
460
461 /**
462 * Validates the given built ydt for augment network module.
463 */
464 private void validateAugmentNetworkModule(YdtNode ydtNode) {
465
466 ydtNode = ydtNode.getNextSibling();
467 //augmenting network module node
468 validateNodeContents(ydtNode, "augmentNetwork", MERGE);
469 ydtNode = ydtNode.getFirstChild();
470 validateNodeContents(ydtNode, "node", MERGE);
471 ydtNode = ydtNode.getFirstChild();
472 validateLeafContents(ydtNode, "name", "node1");
473 ydtNode = ydtNode.getNextSibling();
474 validateNodeContents(ydtNode, "cont1s", MERGE);
475 ydtNode = ydtNode.getFirstChild();
476 validateNodeContents(ydtNode, "cont1s", MERGE);
477 ydtNode = ydtNode.getFirstChild();
478 validateLeafContents(ydtNode, "fine", "leaf");
479
480 // checking augmenting node augment1
481 ydtNode = ydtNode.getNextSibling();
482 validateNodeContents(ydtNode, "augment1", DELETE);
483 ydtNode = ydtNode.getFirstChild();
484 validateLeafContents(ydtNode, "value1", "1");
sonu gupta1bb37b82016-11-11 16:51:18 +0530485 }
486
487 /**
488 * Validates the given built ydt application tree.
489 */
490 private void validateAppTree(YangRequestWorkBench ydtBuilder) {
491
492 // Assign root node to ydtNode for validating purpose.
493 YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode();
494 // Logical root node does not have operation type
495 validateAppLogicalNodeContents(ydtAppContext);
496 ydtAppContext = ydtAppContext.getFirstChild();
497 validateAppModuleNodeContents(ydtAppContext, IETF, BOTH);
498 ydtAppContext = ydtAppContext.getFirstChild();
499
500 //Inside link node
501 validateAppNodeContents(ydtAppContext, AUG1, TOPONS, BOTH);
sonu gupta1bb37b82016-11-11 16:51:18 +0530502
503 ydtAppContext = ydtAppContext.getParent();
sonu guptaeff184b2016-11-24 12:43:49 +0530504 validateAugmentNetworkAppTree(ydtAppContext);
505 }
506
507 /**
508 * Validates the given built ydt application tree for augmenting network
509 * module.
510 */
511 private void validateAugmentNetworkAppTree(YdtAppContext ydtAppContext) {
sonu gupta1bb37b82016-11-11 16:51:18 +0530512
513 ydtAppContext = ydtAppContext.getNextSibling();
sonu guptaeff184b2016-11-24 12:43:49 +0530514 //augmenting network module node
515 validateAppModuleNodeContents(ydtAppContext, "augmentNetwork", BOTH);
sonu gupta1bb37b82016-11-11 16:51:18 +0530516 ydtAppContext = ydtAppContext.getFirstChild();
sonu guptaeff184b2016-11-24 12:43:49 +0530517 validateAppNodeContents(ydtAppContext, "/node", NETNS, BOTH);
sonu gupta1bb37b82016-11-11 16:51:18 +0530518 }
519}