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