2 Documentation Test suite to verify update behaviour during different topoprocessing operations on NT and inventory models.
3 ... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API.
4 ... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
5 ... Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational
6 ... xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
7 Suite Setup Setup Environment
8 Suite Teardown Clean Environment
9 Test Teardown Refresh Underlay Topologies And Delete Overlay Topology ${OVERLAY_TOPO_URL}
10 Library RequestsLibrary
13 Variables ../../../variables/topoprocessing/TopologyRequests.py
14 Variables ../../../variables/topoprocessing/TargetFields.py
15 Variables ../../../variables/Variables.py
16 Resource ../../../libraries/KarafKeywords.robot
17 Resource ../../../libraries/Utils.robot
18 Resource ../../../libraries/TopoprocessingKeywords.robot
21 ${OVERLAY_TOPO_URL} ${TOPOLOGY_URL}/topo:1
24 Unification Node Update
25 [Documentation] Test processing of updates using unification operation on Network Topology model
26 #Create the original topology
27 ${model} Set Variable network-topology-model
28 ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node network-topo:1 network-topo:2
29 ${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
30 ${request} Insert Target Field ${request} 1 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
31 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 8
32 #Update a node, expecting a unification of two nodes into one
33 ${node} Create Isis Node bgp:1 router-id-ipv4=192.168.1.2
34 Basic Request Put ${node} network-topology:network-topology/topology/network-topo:1/node/bgp:1
35 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 7
36 : FOR ${index} IN RANGE 1 11
37 \ Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
38 Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:2 bgp:1
39 #Update a unified node, expecting creation of a new overlay node
40 ${node} Create Isis Node bgp:3 router-id-ipv4=192.168.3.1
41 Basic Request Put ${node} network-topology:network-topology/topology/network-topo:1/node/bgp:3
42 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 8
43 : FOR ${index} IN RANGE 1 11
44 \ Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
46 Unification Node Inventory
47 [Documentation] Test processing of updates using unification operation on Inventory model
48 ${model} Set Variable opendaylight-inventory-model
49 ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node openflow-topo:1 openflow-topo:2
50 ${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_IP_ADDRESS} 0
51 ${request} Insert Target Field ${request} 1 ${OPENFLOW_NODE_IP_ADDRESS} 0
52 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 7
53 #Update a node, expecting unification of two nodes into one
54 ${node} Create Openflow Node openflow:2 192.168.1.1
55 Basic Request Put ${node} opendaylight-inventory:nodes/node/openflow:2
56 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 6
57 : FOR ${index} IN RANGE 1 11
58 \ Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
59 Check Aggregated Node in Topology ${model} ${resp.content} 5 of-node:2 of-node:6 of-node:1
60 #Update a unified node, expecting creation of a new overlay node
61 ${node} Create Openflow Node openflow:4 192.168.3.1
62 Basic Request Put ${node} opendaylight-inventory:nodes/node/openflow:4
63 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 7
64 : FOR ${index} IN RANGE 1 11
65 \ Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
67 Filtration Range Number Node Update Network Topology Model
68 ${model} Set Variable network-topology-model
69 ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} node network-topo:2
70 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OVS_VERSION}
71 ${request} Set Range Number Filter ${request} 20 25
72 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 4
73 ${request} Create Isis Node bgp:7 17
74 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7
75 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
76 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
77 : FOR ${index} IN RANGE 8 11
78 \ Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
79 Should Contain X Times ${resp.content} <termination-point> 3
80 Should Not Contain ${resp.content} <node-ref>bgp:7</node-ref>
81 ${topology_id} Set Variable network-topo:2
82 Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:8 tp:8:1 tp:8:1
83 Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:9 tp:9:1 tp:9:1
84 Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:10 tp:10:1 tp:10:1
85 ${request} Create Isis Node bgp:7 23
86 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7
87 ${request} Create OVSDB Termination Point tp:7:1 1119
88 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:1
89 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
90 : FOR ${index} IN RANGE 7 11
91 \ Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
92 Should Contain X Times ${resp.content} <termination-point> 4
93 Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:7 tp:7:1 tp:7:1
94 Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:8 tp:8:1 tp:8:1
95 Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:9 tp:9:1 tp:9:1
96 Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:10 tp:10:1 tp:10:1
98 Filtration Range Number Node Update Inventory Model
99 ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:2
100 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_SERIAL_NUMBER}
101 ${request} Set Range Number Filter ${request} 20 25
102 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 3
103 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
104 ${request} Create Openflow Node openflow:7 192.168.2.3 23
105 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:7
106 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
107 : FOR ${index} IN RANGE 7 11
108 \ Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
109 ${request} Create Openflow Node openflow:7 192.168.2.3 17
110 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:7
111 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
112 : FOR ${index} IN RANGE 8 11
113 \ Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
114 Should Not Contain ${resp.content} <node-ref>of-node:7</node-ref>
116 Filtration Range Number Termination Point Update NT
117 [Documentation] Test processing of updates using range number type of filtration operation on Network Topology model
118 ${model} Set Variable network-topology-model
119 ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point network-topo:2
120 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OFPORT}
121 ${request} Set Range Number Filter ${request} 1115 1119
122 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 5
123 #Update a previously out-of-range termination point, so it passes filtration
124 ${terminationPoint} Create OVSDB Termination Point tp:8:1 1115
125 Basic Request Put ${terminationPoint} network-topology:network-topology/topology/network-topo:2/node/bgp:8/termination-point/tp:8:1
126 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 5
127 Should Contain X Times ${resp.content} <termination-point> 4
128 Check Aggregated Termination Point in Node ${model} ${resp.content} network-topo:2 bgp:8 tp:8:1 tp:8:1
129 #Update a previsouly in-range termination point, so it is filtered out
130 ${terminationPoint} Create OVSDB Termination Point tp:7:2 1110
131 Basic Request Put ${terminationPoint} network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:2
132 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 5
133 Should Contain X Times ${resp.content} <termination-point> 3
134 Check Aggregated Termination Point in Node ${model} ${resp.content} network-topo:2 bgp:7 tp:7:1 tp:7:1
136 Filtration Range Number Termination Point Update Inventory
137 [Documentation] Test processing of updates using range number type of filtration operation on Inventory model
138 ${model} Set Variable opendaylight-inventory-model
139 ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point openflow-topo:1
140 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_CONNECTOR_PORT_NUMBER}
141 ${request} Set Range Number Filter ${request} 2 4
142 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 5
143 Should Contain X Times ${resp.content} <termination-point> 5
144 #Update a previously out-of-range termination point, so it passes filtration
145 ${nodeConnector} Create Openflow Node Connector openflow:2:1 3
146 Basic Request Put ${nodeConnector} opendaylight-inventory:nodes/node/openflow:2/node-connector/openflow:2:1
147 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 5
148 Should Contain X Times ${resp.content} <termination-point> 6
149 Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:1 tp:2:1
150 Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:2 tp:2:2
151 Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:3 tp:2:3
152 #Update an in-range termination point, so it is filtered out
153 ${nodeConnector} Create Openflow Node Connector openflow:3:2 5
154 Basic Request Put ${nodeConnector} opendaylight-inventory:nodes/node/openflow:3/node-connector/openflow:3:2
155 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <node-id>node: 5
156 Should Contain X Times ${resp.content} <termination-point> 5
157 Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:3 tp:3:1 tp:3:1
159 Filtration Range Number Link Update Network Topology Model
160 [Documentation] Tests the processing of link update requests when using a range-number filtration on NT model
161 ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1
162 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
163 ${request} Set Range Number Filter ${request} 11 13
164 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <link-id>link: 3
165 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
167 ${request} Create Link link:1:4 bgp:1 bgp:4 linkA 15
168 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:1/link/link:1:4
169 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <link-id> 2
170 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref> 1
171 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref> 1
172 Should Not Contain ${resp.content} network-topology/topology/network-topo:1/link/link:1:4
173 #Put the link back in
174 ${request} Create Link link:1:4 bgp:1 bgp:4 linkA 12
175 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:1/link/link:1:4
176 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <link-id> 3
177 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:4</link-ref> 1
178 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref> 1
179 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref> 1
181 Filtration Range Number Link Update Inventory Model
182 [Documentation] Tests the processing of link update requests when using a range-number filtration on Inventory model
183 ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3
184 ${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
185 ${request} Set Range Number Filter ${request} 14 15
186 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <link-id>link: 2
187 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
188 ${request} Create Link link:11:12 of-node:11 of-node:12 linkB 14
189 Basic Request Put ${request} network-topology:network-topology/topology/openflow-topo:3/link/link:11:12
190 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <link-id> 3
191 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref> 1
192 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref> 1
193 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:11:12</link-ref> 1
194 ${request} Create Link link:11:12 of-node:11 of-node:12 linkB 13
195 Basic Request Put ${request} network-topology:network-topology/topology/openflow-topo:3/link/link:11:12
196 ${resp} Basic Request Get And Test ${OVERLAY_TOPO_URL} <link-id> 2
197 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref> 1
198 Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref> 1
200 Unification Filtration Node Update Inside Network Topology model
201 ${model} Set Variable network-topology-model
202 ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${ISIS_NODE_TE_ROUTER_ID_IPV4} network-topo:4
203 ${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4} 1
204 ${request} Insert Apply Filters ${request} 1 1
205 ${request} Set IPV4 Filter ${request} 192.168.2.1/24
206 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 2
207 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
208 Should Contain ${resp.content} <node-ref>bgp: 3
209 ${request} Create Isis Node bgp:17 10 192.168.2.1
210 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:4/node/bgp:17
211 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
212 : FOR ${index} IN RANGE 17 21
213 \ Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
214 Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:18 bgp:17 bgp:20
215 ${request} Create Isis Node bgp:17 10 192.168.1.2
216 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:4/node/bgp:17
217 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
218 : FOR ${index} IN RANGE 18 21
219 \ Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
220 Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:18 bgp:20
222 Unification Filtration Node Update Inside Inventory model
223 ${model} Set Variable opendaylight-inventory-model
224 ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${OPENFLOW_NODE_IP_ADDRESS} openflow-topo:4
225 ${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${OPENFLOW_NODE_IP_ADDRESS} 1
226 ${request} Insert Apply Filters ${request} 1 1
227 ${request} Set IPV4 Filter ${request} 192.168.2.1/24
228 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 2
229 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
230 Should Contain ${resp.content} <node-ref>of-node: 4
231 ${request} Create Openflow Node openflow:17 192.168.1.2
232 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:17
233 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
234 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
235 Should Contain ${resp.content} <node-ref>of-node: 3
236 : FOR ${index} IN RANGE 18 21
237 \ Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
238 ${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='of-node:19']/..
239 ${node} Element to String ${node}
240 Should Contain X Times ${node} <supporting-node> 2
241 Should Contain ${node} <node-ref>of-node:19</node-ref>
242 Should Contain ${node} <node-ref>of-node:20</node-ref>
243 Should Not Contain ${node} <node-ref>of-node:17</node-ref>
244 ${request} Create Openflow Node openflow:17 192.168.2.3
245 Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:17
246 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
247 : FOR ${index} IN RANGE 17 21
248 \ Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
249 Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:17 of-node:19 of-node:20
251 Link Computation Aggregation Inside Update NT
252 [Documentation] Test of link computation with unification type of aggregation inside on updated nodes from network-topology model
253 ${model} Set Variable network-topology-model
254 ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node network-topo:6
255 ${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
256 ${request} Insert Link Computation Inside ${request} ${LINK_COMPUTATION_INSIDE} n:network-topology-model network-topo:6
257 ${resp} Send Basic Request And Test If Contain X Times ${request} ${OVERLAY_TOPO_URL} <node-id>node: 4
258 #Divide double nodes from overlay topology
259 ${request} Create Isis Node bgp:29 router-id-ipv4=192.168.1.3
260 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:6/node/bgp:29
261 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
262 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
263 Should Contain X Times ${resp.content} <link-id> 4
264 ${node_26} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:26
265 ${node_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27
266 ${node_28} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:28
267 ${node_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:29
268 ${node_30} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:30
269 ${topo_id} Set Variable network-topo:6
270 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:28:29 ${node_28} ${node_29}
271 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:26:28 ${node_26} ${node_28}
272 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-2 ${node_29} ${node_30}
273 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30}
274 #Update link to node out of topology
275 ${request} Create Link link:28:29 bgp:28 bgp:31 linkB 11
276 Basic Request Put ${request} network-topology:network-topology/topology/network-topo:6/link/link:28:29
277 ${resp} Basic Request Get ${OVERLAY_TOPO_URL}
278 Should Contain ${resp.content} <topology-id>topo:1</topology-id>
279 Should Contain X Times ${resp.content} <link-id> 3
281 ${node_26} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:26
282 ${node_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27
283 ${node_28} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:28
284 ${node_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:29
285 ${node_30} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:30
286 Should Not Contain ${resp.content} /network-topology/topology/network-topo:6/link/link:28:29
287 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:26:28 ${node_26} ${node_28}
288 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-2 ${node_29} ${node_30}
289 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30}
290 Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30}