2 Documentation Resource for OpenFlow workflows. This library can be used for scalability and longevity tests.
6 Library RequestsLibrary
8 Library SwitchClasses/BaseSwitch.py
10 Resource FlowLib.robot
11 Resource CompareStream.robot
12 Resource MininetKeywords.robot
13 Resource KarafKeywords.robot
14 Resource ../variables/Variables.robot
15 Resource ../variables/openflowplugin/Variables.robot
28 Workflow Linear Topology
29 [Documentation] Workflow to bring a Linear topology of ${switches} switches, push flows, hold for ${sustain_time} seconds, delete flows and stop topology.
30 ... This KW returns workflow state (PASS/FAIL), error message and topology discover time.
31 [Arguments] ${switches} ${sustain_time}=0
32 # Define required variables
33 ${error_message} Set Variable Test has completed
34 ${topology_discover_time} Set Variable ${0}
35 ${controller_list} Create List ${ODL_SYSTEM_IP}
36 ${flow_count} Convert to Integer ${flow_count}
37 ${flows_ovs_25} Evaluate ${flow_count} + ${switches}
38 ${flows_before} Set Variable ${switches}
39 ${flows_after} Set Variable ${flows_ovs_25}
40 ${flows} ${notes} ScaleClient.Generate New Flow Details
41 ... flows=${flow_count}
42 ... switches=${switches}
43 ... swspread=${swspread}
45 ... tabspread=${tabspread}
48 Log To Console Starting mininet linear ${switches} switches
49 ${status} ${result} Run Keyword And Ignore Error
50 ... MininetKeywords.Start Mininet Linear
52 ... mininet_timeout=${switches*4}
53 IF '${status}' == 'FAIL'
54 RETURN ${status} Fail starting mininet ${topology_discover_time}
56 ${start_time} DateTime.Get Current Date result_format=timestamp
57 Log To Console Verify controller is OK
58 ${status} ${result} Run Keyword And Ignore Error Utils.Verify Controller Is Not Dead ${ODL_SYSTEM_IP}
59 IF '${status}' == 'FAIL'
60 RETURN ${status} Controller is dead ${topology_discover_time}
62 ${status} ${result} Run Keyword And Ignore Error
63 ... Utils.Verify Controller Has No Null Pointer Exceptions
65 IF '${status}' == 'FAIL'
66 RETURN ${status} Controller has NPE ${topology_discover_time}
68 ${status} ${result} Run Keyword And Ignore Error
69 ... Utils.Verify Controller Has No Runtime Exceptions
71 IF '${status}' == 'FAIL'
72 RETURN ${status} Controller has RuntimeException ${topology_discover_time}
74 Log To Console Checking ${switches} switches
75 ${status} ${result} Run Keyword And Ignore Error
76 ... Wait Until Keyword Succeeds
79 ... FlowLib.Check Switches In Inventory
81 IF '${status}' == 'FAIL'
82 RETURN ${status} Fail checking switch ${topology_discover_time}
84 Log To Console Add table miss flows
85 ${status} ${result} Run Keyword And Ignore Error FlowLib.Add Table Miss Flows ${switches}
86 IF '${status}' == 'FAIL'
87 RETURN ${status} Fail adding table Miss flows ${topology_discover_time}
89 Log To Console Checking Table Miss Flows
90 ${status} ${result} Run Keyword And Ignore Error
91 ... Wait Until Keyword Succeeds
94 ... FlowLib.Check Table Miss Flows
96 IF '${status}' == 'FAIL'
97 RETURN ${status} Fail checking table miss flows ${topology_discover_time}
99 Log To Console Checking Linear Topology
100 ${status} ${result} Run Keyword And Ignore Error
101 ... Wait Until Keyword Succeeds
104 ... FlowLib.Check Linear Topology
106 IF '${status}' == 'FAIL'
107 RETURN ${status} Fail checking topology ${topology_discover_time}
109 ${end_time} DateTime.Get Current Date result_format=timestamp
110 ${topology_discover_time} DateTime.Subtract Date From Date ${end_time} ${start_time}
111 Log To Console Topology Discovery Time = ${topology_discover_time} seconds
112 Log To Console Adding ${flow_count} flows
113 ${status} ${result} Run Keyword And Ignore Error
114 ... ScaleClient.Configure Flows
115 ... flow_details=${flows}
116 ... controllers=${controller_list}
117 ... nrthreads=${nrthreads}
118 IF '${status}' == 'FAIL'
119 RETURN ${status} Fail configuring flows ${topology_discover_time}
121 Log To Console Checking ${flow_count} flows in Mininet
122 ${status} ${result} Run Keyword And Ignore Error
123 ... MininetKeywords.Verify Aggregate Flow From Mininet Session
124 ... ${mininet_conn_id}
127 IF '${status}' == 'FAIL'
128 RETURN ${status} Fail checking flows in mininet ${topology_discover_time}
130 Log To Console Checking ${flow_count} flows in Operational DS
131 ${status} ${result} Run Keyword And Ignore Error
132 ... Wait Until Keyword Succeeds
135 ... FlowLib.Check Flows Operational Datastore
137 IF '${status}' == 'FAIL'
138 RETURN ${status} Fail checking flows in operational DS ${topology_discover_time}
140 Log To Console Sleep for ${sustain_time} seconds
141 Sleep ${sustain_time}
142 Log To Console Deleting ${flow_count} flows
143 ${status} ${result} Run Keyword And Ignore Error
144 ... ScaleClient.Deconfigure Flows
145 ... flow_details=${flows}
146 ... controllers=${controller_list}
147 ... nrthreads=${nrthreads}
148 IF '${status}' == 'FAIL'
149 RETURN ${status} Fail deconfiguring flows ${topology_discover_time}
151 Log To Console Checking no flows in Mininet
152 ${status} ${result} Run Keyword And Ignore Error
153 ... MininetKeywords.Verify Aggregate Flow From Mininet Session
154 ... ${mininet_conn_id}
157 IF '${status}' == 'FAIL'
158 RETURN ${status} Fail checking no flows in mininet ${topology_discover_time}
160 Log To Console Checking no flows in Operational DS
161 ${status} ${result} Run Keyword And Ignore Error
162 ... Wait Until Keyword Succeeds
165 ... FlowLib.Check Flows Operational Datastore
167 IF '${status}' == 'FAIL'
168 RETURN ${status} Fail checking no flows in operational DS ${topology_discover_time}
170 Log To Console Stopping Mininet
171 ${status} ${result} Run Keyword And Ignore Error MininetKeywords.Stop Mininet And Exit
172 IF '${status}' == 'FAIL'
173 RETURN ${status} Fail stopping mininet ${topology_discover_time}
175 Log To Console Checking No Switches
176 ${status} ${result} Run Keyword And Ignore Error
177 ... Wait Until Keyword Succeeds
180 ... FlowLib.Check No Switches In Inventory
182 IF '${status}' == 'FAIL'
183 RETURN ${status} Fail checking no switch ${topology_discover_time}
185 Log To Console Checking No Topology
186 ${status} ${result} Run Keyword And Ignore Error
187 ... Wait Until Keyword Succeeds
190 ... FlowLib.Check No Switches In Topology
192 IF '${status}' == 'FAIL'
193 RETURN ${status} Fail checking no topology ${topology_discover_time}
195 RETURN PASS ${error_message} ${topology_discover_time}
197 Workflow Full Mesh Topology
198 [Documentation] Workflow to bring a Full mesh topology of ${switches} switches, push some flows, delete flows and stop topology.
199 ... This KW returns workflow state (PASS/FAIL), error message and topology discover time.
200 [Arguments] ${switches} ${sustain_time}=0
201 # Define required variables
202 ${error_message} Set Variable Test has completed
203 ${topology_discover_time} Set Variable ${0}
204 ${mininet_timeout} Evaluate ${switches} * ${switches}
205 ${links} Evaluate ${switches} * ${switches-1}
206 ${controller_list} Create List ${ODL_SYSTEM_IP}
207 ${flow_count} Convert to Integer ${flow_count}
208 ${flows_ovs_25} Evaluate ${flow_count} + ${switches}
209 ${flows_before} Set Variable ${switches}
210 ${flows_after} Set Variable ${flows_ovs_25}
211 ${flows} ${notes} ScaleClient.Generate New Flow Details
212 ... flows=${flow_count}
213 ... switches=${switches}
214 ... swspread=${swspread}
216 ... tabspread=${tabspread}
219 Log To Console Start a mininet full mesh ${switches} switches
220 ${status} ${result} Run Keyword And Ignore Error
221 ... MininetKeywords.Start Mininet Full Mesh
223 ... mininet_timeout=${mininet_timeout}
224 IF '${status}' == 'FAIL'
225 RETURN ${status} Fail starting mininet ${topology_discover_time}
227 ${start_time} DateTime.Get Current Date result_format=timestamp
228 Log To Console Verify controller is OK
229 ${status} ${result} Run Keyword And Ignore Error Utils.Verify Controller Is Not Dead ${ODL_SYSTEM_IP}
230 IF '${status}' == 'FAIL'
231 RETURN ${status} Controller is dead ${topology_discover_time}
233 ${status} ${result} Run Keyword And Ignore Error
234 ... Utils.Verify Controller Has No Null Pointer Exceptions
236 IF '${status}' == 'FAIL'
237 RETURN ${status} Controller has NPE ${topology_discover_time}
239 ${status} ${result} Run Keyword And Ignore Error
240 ... Utils.Verify Controller Has No Runtime Exceptions
242 IF '${status}' == 'FAIL'
243 RETURN ${status} Controller has RuntimeException ${topology_discover_time}
245 Log To Console Checking ${switches} switches
246 ${status} ${result} Run Keyword And Ignore Error
247 ... Wait Until Keyword Succeeds
250 ... FlowLib.Check Switches In Inventory
252 IF '${status}' == 'FAIL'
253 RETURN ${status} Fail checking switch ${topology_discover_time}
255 Log To Console Check number of links in inventory is ${links}
256 ${status} ${result} Run Keyword And Ignore Error
257 ... Wait Until Keyword Succeeds
260 ... FlowLib.Check Number Of Links
262 IF '${status}' == 'FAIL'
263 RETURN ${status} Fail checking topology ${topology_discover_time}
265 ${end_time} DateTime.Get Current Date result_format=timestamp
266 ${topology_discover_time} DateTime.Subtract Date From Date ${end_time} ${start_time}
267 Log To Console Topology Discovery Time = ${topology_discover_time} seconds
268 Log To Console Adding ${flow_count} flows
269 ${status} ${result} Run Keyword And Ignore Error
270 ... ScaleClient.Configure Flows
271 ... flow_details=${flows}
272 ... controllers=${controller_list}
273 ... nrthreads=${nrthreads}
274 IF '${status}' == 'FAIL'
275 RETURN ${status} Fail configuring flows ${topology_discover_time}
277 Log To Console Checking ${flow_count} flows in Mininet
278 ${status} ${result} Run Keyword And Ignore Error
279 ... MininetKeywords.Verify Aggregate Flow From Mininet Session
280 ... ${mininet_conn_id}
283 IF '${status}' == 'FAIL'
284 RETURN ${status} Fail checking flows in mininet ${topology_discover_time}
286 Log To Console Checking ${flow_count} flows in Operational DS
287 ${status} ${result} Run Keyword And Ignore Error
288 ... Wait Until Keyword Succeeds
291 ... FlowLib.Check Flows Operational Datastore
293 IF '${status}' == 'FAIL'
294 RETURN ${status} Fail checking flows in operational DS ${topology_discover_time}
296 Log To Console Sleep for ${sustain_time} seconds
297 Sleep ${sustain_time}
298 Log To Console Deleting ${flow_count} flows
299 ${status} ${result} Run Keyword And Ignore Error
300 ... ScaleClient.Deconfigure Flows
301 ... flow_details=${flows}
302 ... controllers=${controller_list}
303 ... nrthreads=${nrthreads}
304 IF '${status}' == 'FAIL'
305 RETURN ${status} Fail deconfiguring flows ${topology_discover_time}
307 Log To Console Checking no flows in Mininet
308 ${status} ${result} Run Keyword And Ignore Error
309 ... MininetKeywords.Verify Aggregate Flow From Mininet Session
310 ... ${mininet_conn_id}
313 IF '${status}' == 'FAIL'
314 RETURN ${status} Fail checking no flows in mininet ${topology_discover_time}
316 Log To Console Checking no flows in Operational DS
317 ${status} ${result} Run Keyword And Ignore Error
318 ... Wait Until Keyword Succeeds
321 ... FlowLib.Check Flows Operational Datastore
323 IF '${status}' == 'FAIL'
324 RETURN ${status} Fail checking no flows in operational DS ${topology_discover_time}
326 Log To Console Stopping Mininet
327 ${status} ${result} Run Keyword And Ignore Error MininetKeywords.Stop Mininet And Exit
328 IF '${status}' == 'FAIL'
329 RETURN ${status} Fail stopping mininet ${topology_discover_time}
331 Log To Console Checking No Switches
332 ${status} ${result} Run Keyword And Ignore Error
333 ... Wait Until Keyword Succeeds
336 ... FlowLib.Check No Switches In Inventory
338 IF '${status}' == 'FAIL'
339 RETURN ${status} Fail checking no switch ${topology_discover_time}
341 Log To Console Checking No Topology
342 ${status} ${result} Run Keyword And Ignore Error
343 ... Wait Until Keyword Succeeds
346 ... FlowLib.Check No Switches In Topology
348 IF '${status}' == 'FAIL'
349 RETURN ${status} Fail checking no topology ${topology_discover_time}
351 RETURN PASS ${error_message} ${topology_discover_time}
354 RequestsLibrary.Create Session
356 ... http://${ODL_SYSTEM_IP}:${RESTCONFPORT}
358 ... headers=${HEADERS_XML}
359 Wait Until Keyword Succeeds 3x 1s KarafKeywords.Issue Command On Karaf Console log:set ${log_level}
362 [Documentation] Cleanup when workflow is interrupt
363 Run Keyword And Ignore Error RequestsLibrary.Delete Request session ${RFC8040_NODES_API}
364 Utils.Clean Mininet System
365 RequestsLibrary.Delete All Sessions