blob: a50d3a59dfd2e3812b8460183d94e9667d3f1e5c [file] [log] [blame]
VinodKumarS-Huawei7b1733c2016-10-25 13:44:26 +05301/*
2 * 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.
7 */
8
9package org.onosproject.yms.app.yob;
10
11import org.junit.Test;
12import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.AugmentedTopoNode;
13import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.DefaultAugmentedTopoNode;
14import org.onosproject.yang.gen.v1.urn.topo.rev20140101.YmsTopologyOpParam;
15import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.DefaultNode;
16import org.onosproject.yms.app.ydt.YangRequestWorkBench;
17import org.onosproject.yms.app.ydt.YdtExtendedContext;
18import org.onosproject.yms.ydt.YdtContext;
19
20import java.io.IOException;
21
22import static org.hamcrest.core.Is.is;
23import static org.junit.Assert.assertEquals;
24import static org.junit.Assert.assertNotNull;
25import static org.junit.Assert.assertThat;
26import static org.onosproject.yms.app.yob.YobTestUtils.NODE;
27import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE;
28import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_ID;
29import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_IP;
30import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE;
31import static org.onosproject.yms.app.yob.YobTestUtils.TOPOLOGY;
32import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
33
34/**
35 * Test the YANG object building for the YANG data tree based on the non
36 * schema augmented nodes.
37 */
38public class YobAugmentTest {
39
40 private YobTestUtils utils = YobTestUtils.instance();
41
42 @Test
43 public void augmentedLeaf() throws IOException {
44
45 YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
46 ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(),
47 true);
48
49 ydtBuilder.addChild(TOPOLOGY, null, NONE);
50 ydtBuilder.addChild(NODE, null);
51 ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE);
52
53 YdtContext logicalRoot = ydtBuilder.getRootNode();
54 YdtExtendedContext appRoot =
55 (YdtExtendedContext) logicalRoot.getFirstChild();
56
57 DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
58 Object yangObject = yobBuilder.getYangObject(appRoot,
59 utils.schemaRegistry());
60 assertNotNull("Fail to create augmented YANG object", yangObject);
61
62 assertEquals("invalid augmented node created", YmsTopologyOpParam.class,
63 yangObject.getClass());
64
65 YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
66 assertNotNull("failed to build augmented node", topology.node());
67 assertEquals("Single node entry is expected", 1, topology.node().size());
68 assertEquals("Node type is not DefaultNode", DefaultNode.class,
69 topology.node().get(0).getClass());
70
71 DefaultNode node = (DefaultNode) topology.node().get(0);
72 assertNotNull("Augmented info is missing", node.yangAugmentedInfo(
73 AugmentedTopoNode.class));
74 assertEquals("Augmented class is incorrect",
75 DefaultAugmentedTopoNode.class,
76 node.yangAugmentedInfo(AugmentedTopoNode.class)
77 .getClass());
78
79 DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode)
80 node.yangAugmentedInfo(AugmentedTopoNode.class);
81 assertThat("Augmented leaf value is incorrect",
82 augmentedNode.routerId(), is(STR_LEAF_VALUE));
83 }
84
85 @Test
86 public void augmentedLeaves() throws IOException {
87
88 YangRequestWorkBench ydtBuilder = new YangRequestWorkBench(
89 ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(),
90 true);
91
92 ydtBuilder.addChild(TOPOLOGY, null, NONE);
93 ydtBuilder.addChild(NODE, null);
94 ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE);
95 ydtBuilder.traverseToParent();
96 ydtBuilder.addLeaf(ROUTER_IP, "urn:ip:topo", STR_LEAF_VALUE);
97
98 YdtContext logicalRoot = ydtBuilder.getRootNode();
99 YdtExtendedContext appRoot =
100 (YdtExtendedContext) logicalRoot.getFirstChild();
101
102 DefaultYobBuilder yobBuilder = new DefaultYobBuilder();
103 Object yangObject = yobBuilder.getYangObject(appRoot,
104 utils.schemaRegistry());
105 assertNotNull("Fail to create augmented YANG object", yangObject);
106
107 assertEquals("invalid augmented node created",
108 YmsTopologyOpParam.class, yangObject.getClass());
109
110 YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject;
111 assertNotNull("failed to build augmented node", topology.node());
112 assertEquals("Single node entry is expected", 1,
113 topology.node().size());
114 assertEquals("Node type is not DefaultNode", DefaultNode.class,
115 topology.node().get(0).getClass());
116
117 DefaultNode node = (DefaultNode) topology.node().get(0);
118 assertNotNull("Augmented info is missing", node.yangAugmentedInfo(
119 AugmentedTopoNode.class));
120 assertEquals("Augmented class is incorrect",
121 DefaultAugmentedTopoNode.class,
122 node.yangAugmentedInfo(AugmentedTopoNode.class)
123 .getClass());
124
125 DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode)
126 node.yangAugmentedInfo(AugmentedTopoNode.class);
127 assertThat("Augmented router id is incorrect",
128 augmentedNode.routerId(), is(STR_LEAF_VALUE));
129 assertThat("Augmented router ip is incorrect",
130 augmentedNode.routerIp(), is(STR_LEAF_VALUE));
131 }
132}