blob: 32a660159fb25acb70c795aab4cd65ee64d50aaa [file] [log] [blame]
admincb593912014-04-14 10:34:41 -07001
2class RCOnosPerf4nodes:
3
4 def __init__(self) :
5 self.default = ''
6
7 def CASE1(self,main) :
8 '''
9 First case is to simply check if ONOS, ZK, and RamCloud are all running properly.
10 If ONOS if not running properly, it will restart ONOS once before continuing.
11 It will then check if the ONOS has a view of all the switches and links as defined in the params file.
12 The test will only pass if ONOS is running properly, and has a full view of all topology elements.
13 '''
14 import time
Jon Hallbd795bf2014-06-18 09:46:32 -070015 main.case("Initial Setup")
16 main.step("Stopping ONOS")
17 main.ONOS1.stop_all()
18 main.ONOS2.stop_all()
19 main.ONOS3.stop_all()
20 main.ONOS4.stop_all()
admin1723f1c2014-05-19 16:08:39 -070021 main.Zookeeper1.start()
22 main.Zookeeper2.start()
23 main.Zookeeper3.start()
24 main.Zookeeper4.start()
25 main.RamCloud1.del_db()
26 main.RamCloud2.del_db()
27 main.RamCloud3.del_db()
28 main.RamCloud4.del_db()
Jon Hallbd795bf2014-06-18 09:46:32 -070029 main.step("Start tcpdump on mn")
admin2580a0e2014-07-29 11:24:34 -070030 main.Mininet2.start_tcpdump(main.params['tcpdump']['filename'], intf = main.params['tcpdump']['intf'], port = main.params['tcpdump']['port'])
admin41d6b772014-06-24 15:59:50 -070031# main.step("Start tcpdump on mn")
32# main.Mininet1.start_tcpdump(main.params['tcpdump']['filename'], intf = main.params['tcpdump']['intf'], port = main.params['tcpdump']['port'])
Jon Hallbd795bf2014-06-18 09:46:32 -070033 main.step("Starting ONOS")
34 main.ONOS1.start_all()
35 main.ONOS2.start_all()
36 main.ONOS3.start_all()
37 main.ONOS4.start_all()
admincb593912014-04-14 10:34:41 -070038 main.ONOS1.start_rest()
39 time.sleep(5)
40 test= main.ONOS1.rest_status()
41 if test == main.FALSE:
42 main.ONOS1.start_rest()
43 main.ONOS1.get_version()
44 main.log.report("Startup check Zookeeper1, RamCloud1, and ONOS1 connections")
admincb593912014-04-14 10:34:41 -070045 main.step("Testing startup Zookeeper")
46 data = main.Zookeeper1.isup()
47 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
48 main.step("Testing startup RamCloud")
Jon Hallbd795bf2014-06-18 09:46:32 -070049 data = main.RamCloud1.status_serv()
admincb593912014-04-14 10:34:41 -070050 if data == main.FALSE:
51 main.RamCloud1.stop_coor()
52 main.RamCloud1.stop_serv()
53 main.RamCloud2.stop_serv()
54 main.RamCloud3.stop_serv()
55 main.RamCloud4.stop_serv()
56
57 time.sleep(5)
58 main.RamCloud1.start_coor()
59 main.RamCloud1.start_serv()
60 main.RamCloud2.start_serv()
61 main.RamCloud3.start_serv()
62 main.RamCloud4.start_serv()
Jon Hallbd795bf2014-06-18 09:46:32 -070063 data = main.RamCloud1.status_serv()
admincb593912014-04-14 10:34:41 -070064 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="RamCloud is up!",onfail="RamCloud is down...")
65 main.step("Testing startup ONOS")
66 data = main.ONOS1.isup()
67 data = data and main.ONOS2.isup()
68 data = data and main.ONOS3.isup()
69 data = data and main.ONOS4.isup()
Jon Hallbd795bf2014-06-18 09:46:32 -070070 for i in range(3):
71 if data == main.FALSE:
72 main.log.report("Something is funny... rechecking ONOS")
73 time.sleep(5)
74 data = main.ONOS1.isup()
75 data = data and main.ONOS2.isup()
76 data = data and main.ONOS3.isup()
77 data = data and main.ONOS4.isup()
78 else:
79 break
admincb593912014-04-14 10:34:41 -070080 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
81
82 def CASE2(self,main) :
83 '''
84 Makes sure that the HW links are all up
85 Verifies that at least one mininet host exists.
86 Proves that there is actually a mininet that we are working with
87 '''
88 import time
Jon Hallbd795bf2014-06-18 09:46:32 -070089 import re
admincb593912014-04-14 10:34:41 -070090 main.step("Checking if MN switches exist")
91 main.log.report("Check if MN switches exist")
92 #result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
93 #for i in range(2):
94 # if result == main.FALSE:
95 # time.sleep(5)
96 # result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
97 # else:
98 # break
99 #main.step("Verifying the result")
100 #utilities.assert_equals(expect=main.TRUE,actual=result,onpass="MN switches exist",onfail="MN is missing switches and or links...")
101
102 main.step("assigning ONOS controllers to switches")
Jon Hallbd795bf2014-06-18 09:46:32 -0700103 data = main.TRUE
admincb593912014-04-14 10:34:41 -0700104 for i in range(25):
105 if i < 3:
106 j=i+1
107 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
Jon Hallbd795bf2014-06-18 09:46:32 -0700108 controllers = main.Mininet1.get_sw_controller("s"+str(j))
109
110 if re.search("tcp:"+main.params['CTRL']['ip1'],controllers):
111 main.log.report("SW" + str(j) + " Master Controller Set Correctly")
112 data = data and main.TRUE
113 else:
114 main.log.report("SW" + str(j) + " MASTER CONTROLLER SET INCORRECTLY!!")
115 data = main.FALSE
admincb593912014-04-14 10:34:41 -0700116 time.sleep(1)
Jon Hallbd795bf2014-06-18 09:46:32 -0700117
admincb593912014-04-14 10:34:41 -0700118 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
Jon Hallbd795bf2014-06-18 09:46:32 -0700119
admincb593912014-04-14 10:34:41 -0700120 elif i >= 3 and i < 5:
121 j=i+1
122 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
Jon Hallbd795bf2014-06-18 09:46:32 -0700123 controllers = main.Mininet1.get_sw_controller("s"+str(j))
124 if re.search("tcp:"+ main.params['CTRL']['ip2'],controllers):
125 main.log.report("SW" + str(j) + " Master Controller Set Correctly")
126 data = data and main.TRUE
127 else:
128 main.log.report("SW" + str(j) + " MASTER CONTROLLER SET INCORRECTLY!!")
129 data = main.FALSE
admincb593912014-04-14 10:34:41 -0700130 time.sleep(1)
131 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
132 elif i >= 5 and i < 15:
133 j=i+1
134 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
Jon Hallbd795bf2014-06-18 09:46:32 -0700135 controllers = main.Mininet1.get_sw_controller("s"+str(j))
136 if re.search("tcp:"+ main.params['CTRL']['ip3'],controllers):
137 main.log.report("SW" + str(j) + " Master Controller Set Correctly")
138 data = data and main.TRUE
139 else:
140 main.log.report("SW" + str(j) + " MASTER CONTROLLER SET INCORRECTLY!!")
141 data = main.FALSE
admincb593912014-04-14 10:34:41 -0700142 time.sleep(1)
143 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
144 else:
145 j=i+16
146 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
Jon Hallbd795bf2014-06-18 09:46:32 -0700147
148 controllers = main.Mininet1.get_sw_controller("s"+str(j))
149 if re.search("tcp:"+ main.params['CTRL']['ip4'],controllers):
150 main.log.report("SW" + str(j) + " Master Controller Set Correctly")
151 data = data and main.TRUE
152 else:
153 main.log.report("SW" + str(j) + " MASTER CONTROLLER SET INCORRECTLY!!")
154 data = main.FALSE
admincb593912014-04-14 10:34:41 -0700155 time.sleep(1)
156 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
157 main.Mininet1.get_sw_controller("s1")
Jon Hallbd795bf2014-06-18 09:46:32 -0700158 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Mininet Controllers Set!",onfail="Mininet Controllers not correct!!!!!!!!!!!!!!!!!!!!")
admincb593912014-04-14 10:34:41 -0700159 time.sleep(5)
160
161 def CASE3(self,main) :
162 '''
163 Verifies that ONOS sees the right topology...
164 '''
165 import time
166 main.log.report("checking if ONOS sees the right topo...")
167 main.case("TOPO check")
168 main.step("calling rest calls")
169 for i in range(4):
170 result = main.ONOS1.check_status(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
171 time.sleep(5)
172 if result == 1:
173 break
174 if result == 0:
175 main.ONOS1.start()
176 main.ONOS2.start()
177 main.ONOS3.start()
178 main.ONOS4.start()
179 time.sleep(45)
180 for i in range(4):
181 result = main.ONOS1.check_status(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
182 time.sleep(5)
183 if result == 1:
184 break
185 utilities.assert_equals(expect=1,actual=result)
186
187 def CASE4(self,main) :
188 '''
189 This Test case:
190 - Clears out any leftover flows
191 - Adds new flows into ONOS
192 - Checks flows up to 10 times waiting for each flow to be caluculated and no "NOT" statements inte get_flow
193 '''
194 import time
195 main.log.report("Deleting and adding flows")
196 main.case("Taking care of these flows!")
197 main.step("Cleaning out any leftover flows...")
198 main.log.info("deleting...")
Jon Hallbd795bf2014-06-18 09:46:32 -0700199 main.ONOS1.rm_intents()
Jon Halle80ef8c2014-04-29 15:29:13 -0700200 # main.ONOS1.delete_flow("all")
admincb593912014-04-14 10:34:41 -0700201 main.log.info("adding...")
202 t1 = time.time()
Jon Hallbd795bf2014-06-18 09:46:32 -0700203 main.ONOS1.add_intents()
Jon Halle80ef8c2014-04-29 15:29:13 -0700204 # main.ONOS1.add_flow(main.params['FLOWDEF'])
admincb593912014-04-14 10:34:41 -0700205 main.log.info("Checking...")
206 for i in range(15):
Jon Hallbd795bf2014-06-18 09:46:32 -0700207 #result = main.ONOS1.check_flow()
208 result = main.TRUE
admincb593912014-04-14 10:34:41 -0700209 if result == main.TRUE:
210 t2 = time.time()
211 main.log.info( 'Adding flows took %0.3f s' % (t2-t1))
212 break
213 time.sleep(5)
214 main.log.info("Checking Flows again...")
215
216 strtTime = time.time()
217 count = 1
218 i = 6
219 while i < 16 :
220 main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
221 ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
222 if ping == main.FALSE and count < 3:
223 count = count + 1
224 i = 6
225 main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
226 time.sleep(10)
227 elif ping == main.FALSE and count ==3:
228 main.log.error("Ping test failed")
229 i = 17
230 result = main.FALSE
231 elif ping == main.TRUE:
232 i = i + 1
233 result = main.TRUE
234 endTime = time.time()
235 if result == main.TRUE:
236 main.log.info("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
237 else:
238 main.log.info("\tPING TEST FAIL")
239
240 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="flows are good",onfail="FLOWS not correct")
241
242 main.log.report("checking if ONOS sees the right topo...")
243 main.case("TOPO check")
244 main.step("calling rest calls")
245 for i in range(3):
246 result = main.ONOS1.check_status(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
247 time.sleep(5)
248 if result == 1:
249 break
250
251 def CASE5(self,main) :
252 '''
253 Tests a single ping
254 '''
255 main.log.report("Testing a single ping")
256 main.case("Testing ping...")
257 ping_result = main.Mininet4.pingHost(src=main.params['PING']['source1'],target=main.params['PING']['target1'])
258 utilities.assert_equals(expect=main.TRUE,actual=ping_result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
259
260
261 def CASE6(self,main) :
262 '''
263 Starts continuous pings on the Mininet nodes
264 '''
265 main.log.report("Starting continuous ping, then toggle a single link in the center triangle")
266 import time
267 import os
268 main.case("Starting long ping... ")
admin2580a0e2014-07-29 11:24:34 -0700269 main.Mininet4.pingLong(src=main.params['PING']['source1'],target=main.params['PING']['target1'], pingTime = 100)
270 main.Mininet4.pingLong(src=main.params['PING']['source2'],target=main.params['PING']['target2'], pingTime = 100)
271 main.Mininet4.pingLong(src=main.params['PING']['source3'],target=main.params['PING']['target3'], pingTime = 100)
272 main.Mininet4.pingLong(src=main.params['PING']['source4'],target=main.params['PING']['target4'], pingTime = 100)
273 main.Mininet4.pingLong(src=main.params['PING']['source5'],target=main.params['PING']['target5'], pingTime = 100)
274 main.Mininet4.pingLong(src=main.params['PING']['source6'],target=main.params['PING']['target6'], pingTime = 100)
275 main.Mininet4.pingLong(src=main.params['PING']['source7'],target=main.params['PING']['target7'], pingTime = 100)
276 main.Mininet4.pingLong(src=main.params['PING']['source8'],target=main.params['PING']['target8'], pingTime = 100)
277 main.Mininet4.pingLong(src=main.params['PING']['source9'],target=main.params['PING']['target9'], pingTime = 100)
278 main.Mininet4.pingLong(src=main.params['PING']['source10'],target=main.params['PING']['target10'], pingTime = 100)
admincb593912014-04-14 10:34:41 -0700279 main.step("Check that the pings are going")
280 result = main.Mininet4.pingstatus(src=main.params['PING']['source1'])
281 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source2'])
282 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source3'])
283 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source4'])
284 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source5'])
285 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source6'])
286 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source7'])
287 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source8'])
288 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source9'])
289 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source10'])
290 main.step( "Link down number of iterations: " + main.params['Iterations'] )
291 for i in range(int(main.params['Iterations'])):
292 main.log.info("Bringing Link down... ")
293 main.Mininet1.link(END1="s1",END2="s2",OPTION="down")
294 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
295 time.sleep( int(main.params['WaitTime']) )
296 main.log.info("Bringing Link up... ")
297 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
298 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
299 time.sleep( int(main.params['WaitTime']) )
300 main.case("Killing remote ping processes ")
301 result = result & main.Mininet4.pingKill()
302 utilities.assert_equals(expect=main.TRUE,actual=result)
303
304
305 def CASE7(self,main) :
306 '''
307 Processes all of the ping data and outputs raw data and an overall average
308 '''
309 import os
310 import time
311 main.log.report("Process ping data (Fail is time is >20 seconds)")
312 main.case("Processing Ping data")
313 time.sleep(3)
314 #result=os.popen("/home/admin/tools/shell.sh " + main.params['Iterations']).read()
315 try:
316 result=os.popen("/home/admin/ONLabTest/TestON/scripts/get_reroute_times.py").read()
317 average=result.split(":")[1]
318 main.log.info( "Reroute times are... " )
319 main.log.report( result + " seconds" )
320 try:
321 if float(average) < float(main.params['TargetTime']) :
322 test=main.TRUE
323 else:
324 test=main.FALSE
325 except ValueError:
326 main.log.error("Data is corrupted")
327 test=main.FALSE
328 except:
329 main.log.report("No data")
330 test=main.FALSE
331 utilities.assert_equals(expect=main.TRUE,actual=test,onpass="Average is less then the target time!",onfail="Average is worse then target time... ")
332
333 def CASE8(self,main) :
334 '''
335 Starts continuous pings on the Mininet nodes
336 '''
337 main.log.report("Start continuous pings, then toggle multiple links in center triangle")
338 import time
339 import os
340 time.sleep(20)
341 main.case("Starting long ping... ")
admin2580a0e2014-07-29 11:24:34 -0700342 main.Mininet4.pingLong(src=main.params['PING']['source1'],target=main.params['PING']['target1'], pingTime = 100)
343 main.Mininet4.pingLong(src=main.params['PING']['source2'],target=main.params['PING']['target2'], pingTime = 100)
344 main.Mininet4.pingLong(src=main.params['PING']['source3'],target=main.params['PING']['target3'], pingTime = 100)
345 main.Mininet4.pingLong(src=main.params['PING']['source4'],target=main.params['PING']['target4'], pingTime = 100)
346 main.Mininet4.pingLong(src=main.params['PING']['source5'],target=main.params['PING']['target5'], pingTime = 100)
347 main.Mininet4.pingLong(src=main.params['PING']['source6'],target=main.params['PING']['target6'], pingTime = 100)
348 main.Mininet4.pingLong(src=main.params['PING']['source7'],target=main.params['PING']['target7'], pingTime = 100)
349 main.Mininet4.pingLong(src=main.params['PING']['source8'],target=main.params['PING']['target8'], pingTime = 100)
350 main.Mininet4.pingLong(src=main.params['PING']['source9'],target=main.params['PING']['target9'], pingTime = 100)
351 main.Mininet4.pingLong(src=main.params['PING']['source10'],target=main.params['PING']['target10'], pingTime = 100)
admincb593912014-04-14 10:34:41 -0700352 main.step("Check that the pings are going")
353 result = main.Mininet4.pingstatus(src=main.params['PING']['source1'])
354 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source2'])
355 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source3'])
356 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source4'])
357 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source5'])
358 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source6'])
359 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source7'])
360 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source8'])
361 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source9'])
362 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source10'])
363 main.step( "Making topo change while flows are rerouting")
364 main.step( "Link down number of iterations: " + main.params['Iterations'] )
365 for i in range(int(main.params['Iterations'])):
366 main.log.info("s1-s2 link down")
367 main.Mininet1.link(END1="s1",END2="s2",OPTION="down")
368 main.Mininet1.link(END1="s1",END2="s3",OPTION="up")
369 main.Mininet1.link(END1="s2",END2="s3",OPTION="up")
370
371 time.sleep(5)
372
373 main.log.info("s1-s2 link up | s1-s3 link down | s2-s3 link down")
374 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
375 main.Mininet1.link(END1="s1",END2="s3",OPTION="down")
376 main.Mininet1.link(END1="s2",END2="s3",OPTION="down")
377
378 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
379 time.sleep( int(main.params['WaitTime']) + 60 )
380
381 main.case("Killing remote ping processes ")
382 result = result & main.Mininet4.pingKill()
383 utilities.assert_equals(expect=main.TRUE,actual=result)
384 main.log.info("Make sure all links in triangle are up")
385 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
386 main.Mininet1.link(END1="s1",END2="s3",OPTION="up")
387 main.Mininet1.link(END1="s2",END2="s3",OPTION="up")
388
389 def CASE9(self,main) :
390 '''
391 Starts continuous pings on the Mininet nodes
392 '''
393 main.log.report("Start continuous pings, then toggle one link in center triangle and start/stop 1 ONOS node")
394 import time
395 import os
396
397 time.sleep(20)
398 main.case("Starting long ping... ")
admin2580a0e2014-07-29 11:24:34 -0700399 main.Mininet4.pingLong(src=main.params['PING']['source1'],target=main.params['PING']['target1'], pingTime = 100)
400 main.Mininet4.pingLong(src=main.params['PING']['source2'],target=main.params['PING']['target2'], pingTime = 100)
401 main.Mininet4.pingLong(src=main.params['PING']['source3'],target=main.params['PING']['target3'], pingTime = 100)
402 main.Mininet4.pingLong(src=main.params['PING']['source4'],target=main.params['PING']['target4'], pingTime = 100)
403 main.Mininet4.pingLong(src=main.params['PING']['source5'],target=main.params['PING']['target5'], pingTime = 100)
404 main.Mininet4.pingLong(src=main.params['PING']['source6'],target=main.params['PING']['target6'], pingTime = 100)
405 main.Mininet4.pingLong(src=main.params['PING']['source7'],target=main.params['PING']['target7'], pingTime = 100)
406 main.Mininet4.pingLong(src=main.params['PING']['source8'],target=main.params['PING']['target8'], pingTime = 100)
407 main.Mininet4.pingLong(src=main.params['PING']['source9'],target=main.params['PING']['target9'], pingTime = 100)
408 main.Mininet4.pingLong(src=main.params['PING']['source10'],target=main.params['PING']['target10'], pingTime = 100)
admincb593912014-04-14 10:34:41 -0700409 main.step("Check that the pings are going")
410 result = main.Mininet4.pingstatus(src=main.params['PING']['source1'])
411 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source2'])
412 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source3'])
413 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source4'])
414 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source5'])
415 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source6'])
416 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source7'])
417 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source8'])
418 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source9'])
419 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source10'])
420 main.step( "Making topo change while flows are rerouting")
421 main.step( "Link down number of iterations: " + main.params['Iterations'] )
422 for i in range(int(main.params['Iterations'])):
423 main.log.info("s1-s2 link down | Onos 1 down")
424 main.Mininet1.link(END1="s1",END2="s2",OPTION="down")
425 if i % 4 == 0:
426 main.ONOS1.stop()
427 elif i % 4 == 1:
428 main.ONOS2.stop()
429 elif i % 4 == 2:
430 main.ONOS3.stop()
431 else:
432 main.ONOS4.stop()
433
434 time.sleep(5)
435
436 main.log.info("s1-s2 link up | Onos 1 back up")
437 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
438 if i % 4 == 0:
439 main.ONOS1.start()
440 main.ONOS1.isup()
441 elif i % 4 == 1:
442 main.ONOS2.start()
443 main.ONOS2.isup()
444 elif i % 4 == 2:
445 main.ONOS3.start()
446 main.ONOS3.isup()
447 else:
448 main.ONOS4.start()
449 main.ONOS4.isup()
450
451 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
452 time.sleep( int(main.params['WaitTime']) )
453
454 main.case("Killing remote ping processes ")
455 result = result & main.Mininet4.pingKill()
456 utilities.assert_equals(expect=main.TRUE,actual=result)
457
admin1723f1c2014-05-19 16:08:39 -0700458 def CASE66(self, main):
459 main.log.report("Checking ONOS logs for exceptions")
Jon Hall1c4d2742014-05-22 10:57:05 -0700460 count = 0
admin1723f1c2014-05-19 16:08:39 -0700461 check1 = main.ONOS1.check_exceptions()
462 main.log.report("Exceptions in ONOS1 logs: \n" + check1)
463 check2 = main.ONOS2.check_exceptions()
464 main.log.report("Exceptions in ONOS2 logs: \n" + check2)
465 check3 = main.ONOS3.check_exceptions()
466 main.log.report("Exceptions in ONOS3 logs: \n" + check3)
467 check4 = main.ONOS4.check_exceptions()
468 main.log.report("Exceptions in ONOS4 logs: \n" + check4)
Jon Hall1c4d2742014-05-22 10:57:05 -0700469 result = main.TRUE
admin1723f1c2014-05-19 16:08:39 -0700470 if (check1 or check2 or check3 or check4):
Jon Hall1c4d2742014-05-22 10:57:05 -0700471 result = main.FALSE
472 count = len(check1.splitlines()) + len(check2.splitlines()) + len(check3.splitlines()) + len(check4.splitlines())
473 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="No Exceptions found in the logs",onfail=str(count) + " Exceptions were found in the logs")
admin2580a0e2014-07-29 11:24:34 -0700474 main.Mininet2.stop_tcpdump()
admin1723f1c2014-05-19 16:08:39 -0700475
476