blob: c757b0c9be325bdb7e50c798142b556e7770cc41 [file] [log] [blame]
sonu gupta1bb37b82016-11-11 16:51:18 +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
17package org.onosproject.yms.app.ydt;
18
19import org.junit.Test;
20
21import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT;
22import static org.onosproject.yms.app.ydt.YdtTestConstants.AUG1;
23import static org.onosproject.yms.app.ydt.YdtTestConstants.AUG2;
24import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF;
25import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK;
26import static org.onosproject.yms.app.ydt.YdtTestConstants.STP;
27import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS;
28import static org.onosproject.yms.app.ydt.YdtTestUtils.ietfNetworkTopologyYdt;
29import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents;
30import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents;
31import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents;
32import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
33import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
34import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree;
35import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
36
37public class IetfTopologyTest {
38
39 private static final String[] EXPECTED = {
40 "Entry Node is yms-ietf-network.",
41 "Entry Node is yms-ietf-network.",
42 "Entry Node is networks.",
43 "Entry Node is network.",
44 "Entry Node is network-id.",
45 "Exit Node is network-id.",
46 "Entry Node is link.",
47 "Entry Node is link-id.",
48 "Exit Node is link-id.",
49 "Entry Node is source.",
50 "Entry Node is source-node.",
51 "Exit Node is source-node.",
52 "Entry Node is source-tp.",
53 "Exit Node is source-tp.",
54 "Exit Node is source.",
55
56 "Entry Node is destination.",
57 "Entry Node is dest-node.",
58 "Exit Node is dest-node.",
59 "Entry Node is dest-tp.",
60 "Exit Node is dest-tp.",
61 "Exit Node is destination.",
62
63 "Entry Node is supporting-link.",
64 "Entry Node is network-ref.",
65 "Exit Node is network-ref.",
66 "Entry Node is link-ref.",
67 "Exit Node is link-ref.",
68 "Exit Node is supporting-link.",
69
70 "Entry Node is supporting-link.",
71 "Entry Node is network-ref.",
72 "Exit Node is network-ref.",
73 "Entry Node is link-ref.",
74 "Exit Node is link-ref.",
75 "Exit Node is supporting-link.",
76 "Exit Node is link.",
77
78 "Entry Node is supporting-network.",
79 "Entry Node is network-ref.",
80 "Exit Node is network-ref.",
81 "Exit Node is supporting-network.",
82 "Entry Node is node.",
83 "Entry Node is node-id.",
84 "Exit Node is node-id.",
85 "Entry Node is t-point.",
86 "Entry Node is tp-id.",
87 "Exit Node is tp-id.",
88
89 "Entry Node is supporting-termination-point.",
90 "Entry Node is network-ref.",
91 "Exit Node is network-ref.",
92 "Entry Node is node-ref.",
93 "Exit Node is node-ref.",
94 "Entry Node is tp-ref.",
95 "Exit Node is tp-ref.",
96
97 "Exit Node is supporting-termination-point.",
98 "Exit Node is t-point.",
99 "Entry Node is supporting-node.",
100 "Entry Node is network-ref.",
101 "Exit Node is network-ref.",
102 "Entry Node is node-ref.",
103 "Exit Node is node-ref.",
104 "Exit Node is supporting-node.",
105
106 "Exit Node is node.",
107 // last augmented sibling in network
108 "Entry Node is link-id.",
109 "Exit Node is link-id.",
110
111 "Exit Node is network.",
112 "Exit Node is networks.",
113 "Entry Node is networks-state.",
114 "Entry Node is network.",
115 "Entry Node is network-ref.",
116 "Exit Node is network-ref.",
117 "Entry Node is server-provided.",
118 "Exit Node is server-provided.",
119 "Exit Node is network.",
120 "Exit Node is networks-state.",
121 "Exit Node is yms-ietf-network.",
122 "Exit Node is yms-ietf-network."
123 };
124
125 /**
126 * Creates and validates ietf network ydt.
127 */
128 @Test
129 public void ietfNetwork1Test() {
130 YangRequestWorkBench ydtBuilder = ietfNetworkTopologyYdt();
131 validateTree(ydtBuilder);
132 validateAppTree(ydtBuilder);
133 walkINTree(ydtBuilder, EXPECTED);
134 }
135
136 /**
137 * Validates the given built ydt.
138 */
139 private void validateTree(YangRequestWorkBench ydtBuilder) {
140
141 // Assign root node to ydtNode for validating purpose.
142 YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
143 // Logical root node does not have operation type
144 validateNodeContents(ydtNode, "yms-ietf-network", null);
145 ydtNode = ydtNode.getFirstChild();
146 validateNodeContents(ydtNode, "yms-ietf-network", MERGE);
147 ydtNode = ydtNode.getFirstChild();
148 validateNodeContents(ydtNode, "networks", MERGE);
149 ydtNode = ydtNode.getFirstChild();
150 validateNodeContents(ydtNode, "network", MERGE);
151 ydtNode = ydtNode.getFirstChild();
152 validateLeafContents(ydtNode, "network-id", "network1");
153 ydtNode = ydtNode.getNextSibling();
154
155 // Validating augmented child
156 validateNodeContents(ydtNode, "link", MERGE);
157 ydtNode = ydtNode.getFirstChild();
158 validateLeafContents(ydtNode, "link-id", "id1");
159 ydtNode = ydtNode.getNextSibling();
160
161 // Inside source node
162 validateNodeContents(ydtNode, "source", MERGE);
163 ydtNode = ydtNode.getFirstChild();
164 validateLeafContents(ydtNode, "source-node", "source1");
165 ydtNode = ydtNode.getNextSibling();
166 validateLeafContents(ydtNode, "source-tp", "source2");
167 ydtNode = ydtNode.getParent();
168 ydtNode = ydtNode.getNextSibling();
169
170 //Inside destination node
171 validateNodeContents(ydtNode, "destination", MERGE);
172 ydtNode = ydtNode.getFirstChild();
173 validateLeafContents(ydtNode, "dest-node", "dest1");
174 ydtNode = ydtNode.getNextSibling();
175 validateLeafContents(ydtNode, "dest-tp", "dest2");
176 ydtNode = ydtNode.getParent();
177 ydtNode = ydtNode.getNextSibling();
178
179 //Inside supporting links
180 validateNodeContents(ydtNode, SLINK, MERGE);
181 ydtNode = ydtNode.getFirstChild();
182 validateLeafContents(ydtNode, "network-ref", "network1");
183 ydtNode = ydtNode.getNextSibling();
184 validateLeafContents(ydtNode, "link-ref", "id2");
185 ydtNode = ydtNode.getParent();
186 ydtNode = ydtNode.getNextSibling();
187
188 //Inside another supporting links instance
189 validateNodeContents(ydtNode, SLINK, MERGE);
190 ydtNode = ydtNode.getFirstChild();
191 validateLeafContents(ydtNode, "network-ref", "network2");
192 ydtNode = ydtNode.getNextSibling();
193 validateLeafContents(ydtNode, "link-ref", "id3");
194 ydtNode = ydtNode.getParent();
195 ydtNode = ydtNode.getParent();
196
197 ydtNode = ydtNode.getNextSibling();
198 validateNodeContents(ydtNode, "supporting-network", MERGE);
199 ydtNode = ydtNode.getFirstChild();
200 validateLeafContents(ydtNode, "network-ref", "network2");
201 ydtNode = ydtNode.getParent();
202
203 ydtNode = ydtNode.getNextSibling();
204 validateNodeContents(ydtNode, "node", MERGE);
205 ydtNode = ydtNode.getFirstChild();
206 validateLeafContents(ydtNode, "node-id", "node1");
207 ydtNode = ydtNode.getNextSibling();
208
209 //Inside termination-point
210 validateNodeContents(ydtNode, "t-point", MERGE);
211 ydtNode = ydtNode.getFirstChild();
212 validateLeafContents(ydtNode, "tp-id", "tp_id1");
213 ydtNode = ydtNode.getNextSibling();
214
215 //Inside supporting-termination-point
216 validateNodeContents(ydtNode, STP, MERGE);
217 ydtNode = ydtNode.getFirstChild();
218 validateLeafContents(ydtNode, "network-ref", "network-ref");
219 ydtNode = ydtNode.getNextSibling();
220 validateLeafContents(ydtNode, "node-ref", "node-ref");
221 ydtNode = ydtNode.getNextSibling();
222 validateLeafContents(ydtNode, "tp-ref", "tp-ref");
223 ydtNode = ydtNode.getParent();
224 ydtNode = ydtNode.getParent();
225
226 ydtNode = ydtNode.getNextSibling();
227 validateNodeContents(ydtNode, "supporting-node", MERGE);
228 ydtNode = ydtNode.getFirstChild();
229 validateLeafContents(ydtNode, "network-ref", "network3");
230 ydtNode = ydtNode.getNextSibling();
231 validateLeafContents(ydtNode, "node-ref", "network4");
232
233 ydtNode = ydtNode.getParent().getParent();
234
235 ydtNode = ydtNode.getNextSibling();
236 validateLeafContents(ydtNode, "link-id", "id1");
237 ydtNode = ydtNode.getParent().getParent();
238
239 ydtNode = ydtNode.getNextSibling();
240 validateNodeContents(ydtNode, "networks-state", MERGE);
241 ydtNode = ydtNode.getFirstChild();
242 validateNodeContents(ydtNode, "network", MERGE);
243 ydtNode = ydtNode.getFirstChild();
244 validateLeafContents(ydtNode, "network-ref", "network5");
245 ydtNode = ydtNode.getNextSibling();
246 validateLeafContents(ydtNode, "server-provided", "true");
247 }
248
249 /**
250 * Validates the given built ydt application tree.
251 */
252 private void validateAppTree(YangRequestWorkBench ydtBuilder) {
253
254 // Assign root node to ydtNode for validating purpose.
255 YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode();
256 // Logical root node does not have operation type
257 validateAppLogicalNodeContents(ydtAppContext);
258 ydtAppContext = ydtAppContext.getFirstChild();
259 validateAppModuleNodeContents(ydtAppContext, IETF, OTHER_EDIT);
260 ydtAppContext = ydtAppContext.getFirstChild();
261
262 //Inside link node
263 validateAppNodeContents(ydtAppContext, AUG1, TOPONS, OTHER_EDIT);
264 ydtAppContext = ydtAppContext.getNextSibling();
265
266 validateAppNodeContents(ydtAppContext, AUG2, TOPONS, OTHER_EDIT);
267 }
268}