blob: db0c60b2f3f9fdb82266615317e182c01197ca53 [file] [log] [blame]
adminbae64d82013-08-01 10:50:15 -07001
2class OnosPerf4nodes:
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 Cassandra 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
admine0ae8202013-08-28 11:51:43 -070015 main.ONOS1.stop()
16 main.ONOS2.stop()
17 main.ONOS3.stop()
18 main.ONOS4.stop()
admincd0944e2013-09-30 12:07:19 -070019 main.Cassandra1.start()
20 main.Cassandra2.start()
21 main.Cassandra3.start()
22 main.Cassandra4.start()
23 time.sleep(20)
24 main.ONOS1.drop_keyspace()
25 main.ONOS1.start()
26 time.sleep(10)
27 main.ONOS2.start()
28 main.ONOS3.start()
29 main.ONOS4.start()
30 main.ONOS1.start_rest()
31 time.sleep(5)
32 test= main.ONOS1.rest_status()
33 if test == main.FALSE:
34 main.ONOS1.start_rest()
adminbae64d82013-08-01 10:50:15 -070035 main.ONOS1.get_version()
admincd0944e2013-09-30 12:07:19 -070036 main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
37 main.case("Checking if the startup was clean...")
38 main.step("Testing startup Zookeeper")
adminbae64d82013-08-01 10:50:15 -070039 data = main.Zookeeper1.isup()
40 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
41 main.step("Testing startup Cassandra")
42 data = main.Cassandra1.isup()
admin530b4c92013-08-14 16:54:35 -070043 if data == main.FALSE:
44 main.Cassandra1.stop()
45 main.Cassandra2.stop()
46 main.Cassandra3.stop()
47 main.Cassandra4.stop()
48
49 time.sleep(5)
50
51 main.Cassandra1.start()
52 main.Cassandra2.start()
53 main.Cassandra3.start()
54 main.Cassandra4.start()
adminbae64d82013-08-01 10:50:15 -070055 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Cassandra is up!",onfail="Cassandra is down...")
adminbae64d82013-08-01 10:50:15 -070056 main.step("Testing startup ONOS")
57 data = main.ONOS1.isup()
admincd0944e2013-09-30 12:07:19 -070058 data = data and main.ONOS2.isup()
59 data = data and main.ONOS3.isup()
60 data = data and main.ONOS4.isup()
adminbae64d82013-08-01 10:50:15 -070061 if data == main.FALSE:
admincd0944e2013-09-30 12:07:19 -070062 main.log.report("Something is funny... restarting ONOS")
adminbae64d82013-08-01 10:50:15 -070063 main.ONOS1.stop()
admincd0944e2013-09-30 12:07:19 -070064 main.ONOS2.stop()
65 main.ONOS3.stop()
66 main.ONOS4.stop()
adminbae64d82013-08-01 10:50:15 -070067 time.sleep(5)
admincd0944e2013-09-30 12:07:19 -070068 main.ONOS1.start()
69 time.sleep(10)
70 main.ONOS2.start()
71 main.ONOS3.start()
72 main.ONOS4.start()
adminbae64d82013-08-01 10:50:15 -070073 data = main.ONOS1.isup()
admincd0944e2013-09-30 12:07:19 -070074 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
adminbae64d82013-08-01 10:50:15 -070075
76 def CASE2(self,main) :
77 '''
78 Makes sure that the HW links are all up
79 Verifies that at least one mininet host exists.
80 Proves that there is actually a mininet that we are working with
81 '''
82 import time
83 main.step("Checking if MN switches exist")
84 main.log.report("Check if MN switches exist")
admin530b4c92013-08-14 16:54:35 -070085 #result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
86 #for i in range(2):
87 # if result == main.FALSE:
88 # time.sleep(5)
89 # result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
90 # else:
91 # break
92 #main.step("Verifying the result")
93 #utilities.assert_equals(expect=main.TRUE,actual=result,onpass="MN switches exist",onfail="MN is missing switches and or links...")
adminbae64d82013-08-01 10:50:15 -070094
admin530b4c92013-08-14 16:54:35 -070095 main.step("assigning ONOS controllers to switches")
96 for i in range(25):
97 if i < 3:
98 j=i+1
99 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
100 time.sleep(1)
101 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'])
102 elif i >= 3 and i < 5:
103 j=i+1
104 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
105 time.sleep(1)
106 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'])
107 elif i >= 5 and i < 15:
108 j=i+1
109 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
110 time.sleep(1)
111 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'])
112 else:
113 j=i+16
114 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
115 time.sleep(1)
116 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'])
117 main.Mininet1.get_sw_controller("s1")
admincd0944e2013-09-30 12:07:19 -0700118 time.sleep(5)
adminbae64d82013-08-01 10:50:15 -0700119
120 def CASE3(self,main) :
121 '''
admin530b4c92013-08-14 16:54:35 -0700122 Verifies that ONOS sees the right topology...
123 '''
124 import time
125 main.log.report("checking if ONOS sees the right topo...")
126 main.case("TOPO check")
127 main.step("calling rest calls")
admincd0944e2013-09-30 12:07:19 -0700128 for i in range(4):
admin530b4c92013-08-14 16:54:35 -0700129 result = main.ONOS1.check_status(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
130 time.sleep(5)
131 if result == 1:
132 break
133 if result == 0:
134 main.ONOS1.start()
135 main.ONOS2.start()
136 main.ONOS3.start()
137 main.ONOS4.start()
admincd0944e2013-09-30 12:07:19 -0700138 for i in range(4):
admin530b4c92013-08-14 16:54:35 -0700139 result = main.ONOS1.check_status(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
140 time.sleep(5)
141 if result == 1:
142 break
143 utilities.assert_equals(expect=1,actual=result)
144
145 def CASE4(self,main) :
146 '''
adminbae64d82013-08-01 10:50:15 -0700147 This Test case:
148 - Clears out any leftover flows
149 - Adds new flows into ONOS
150 - Checks flows up to 10 times waiting for each flow to be caluculated and no "NOT" statements inte get_flow
151 '''
152 import time
153 main.log.report("Deleting and adding flows")
154 main.case("Taking care of these flows!")
155 main.step("Cleaning out any leftover flows...")
156 main.log.info("deleting...")
157 main.ONOS1.delete_flow("all")
158 main.log.info("adding...")
159 t1 = time.time()
160 main.ONOS1.add_flow(main.params['FLOWDEF'])
161 main.log.info("Checking...")
162 for i in range(15):
163 result = main.ONOS1.check_flow()
164 if result == main.TRUE:
165 t2 = time.time()
admin530b4c92013-08-14 16:54:35 -0700166 main.log.info( 'Adding flows took %0.3f s' % (t2-t1))
adminbae64d82013-08-01 10:50:15 -0700167 break
168 time.sleep(5)
169 main.log.info("Checking Flows again...")
admin530b4c92013-08-14 16:54:35 -0700170
171 strtTime = time.time()
172 count = 1
173 i = 6
174 while i < 16 :
175 main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
176 ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
177 if ping == main.FALSE and count < 3:
178 count = count + 1
179 i = 6
180 main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
181 time.sleep(10)
182 elif ping == main.FALSE and count ==3:
183 main.log.error("Ping test failed")
184 i = 17
185 result = main.FALSE
186 elif ping == main.TRUE:
187 i = i + 1
188 result = main.TRUE
189 endTime = time.time()
190 if result == main.TRUE:
191 main.log.info("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
192 else:
193 main.log.info("\tPING TEST FAIL")
194
adminbae64d82013-08-01 10:50:15 -0700195 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="flows are good",onfail="FLOWS not correct")
196
admincd0944e2013-09-30 12:07:19 -0700197 main.log.report("checking if ONOS sees the right topo...")
198 main.case("TOPO check")
199 main.step("calling rest calls")
200 for i in range(3):
201 result = main.ONOS1.check_status(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
202 time.sleep(5)
203 if result == 1:
204 break
adminbae64d82013-08-01 10:50:15 -0700205
admin530b4c92013-08-14 16:54:35 -0700206 def CASE5(self,main) :
adminbae64d82013-08-01 10:50:15 -0700207 '''
208 Tests a single ping
209 '''
210 main.log.report("Testing a single ping")
211 main.case("Testing ping...")
212 ping_result = main.Mininet4.pingHost(src=main.params['PING']['source1'],target=main.params['PING']['target1'])
213 utilities.assert_equals(expect=main.TRUE,actual=ping_result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
214
215
admin530b4c92013-08-14 16:54:35 -0700216 def CASE6(self,main) :
adminbae64d82013-08-01 10:50:15 -0700217 '''
218 Starts continuous pings on the Mininet nodes
219 '''
admin530b4c92013-08-14 16:54:35 -0700220 main.log.report("Starting continuous ping, then toggle a single link in the center triangle")
adminbae64d82013-08-01 10:50:15 -0700221 import time
admin530b4c92013-08-14 16:54:35 -0700222 import os
adminbae64d82013-08-01 10:50:15 -0700223 main.case("Starting long ping... ")
224 main.Mininet4.pingLong(src=main.params['PING']['source1'],target=main.params['PING']['target1'])
225 main.Mininet4.pingLong(src=main.params['PING']['source2'],target=main.params['PING']['target2'])
226 main.Mininet4.pingLong(src=main.params['PING']['source3'],target=main.params['PING']['target3'])
227 main.Mininet4.pingLong(src=main.params['PING']['source4'],target=main.params['PING']['target4'])
228 main.Mininet4.pingLong(src=main.params['PING']['source5'],target=main.params['PING']['target5'])
229 main.Mininet4.pingLong(src=main.params['PING']['source6'],target=main.params['PING']['target6'])
230 main.Mininet4.pingLong(src=main.params['PING']['source7'],target=main.params['PING']['target7'])
231 main.Mininet4.pingLong(src=main.params['PING']['source8'],target=main.params['PING']['target8'])
232 main.Mininet4.pingLong(src=main.params['PING']['source9'],target=main.params['PING']['target9'])
233 main.Mininet4.pingLong(src=main.params['PING']['source10'],target=main.params['PING']['target10'])
admin530b4c92013-08-14 16:54:35 -0700234 main.step("Check that the pings are going")
adminbae64d82013-08-01 10:50:15 -0700235 result = main.Mininet4.pingstatus(src=main.params['PING']['source1'])
236 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source2'])
237 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source3'])
238 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source4'])
239 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source5'])
240 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source6'])
241 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source7'])
242 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source8'])
243 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source9'])
244 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source10'])
admin530b4c92013-08-14 16:54:35 -0700245 main.step( "Link down number of iterations: " + main.params['Iterations'] )
adminbae64d82013-08-01 10:50:15 -0700246 for i in range(int(main.params['Iterations'])):
admin530b4c92013-08-14 16:54:35 -0700247 main.log.info("Bringing Link down... ")
248 main.Mininet1.link(END1="s1",END2="s2",OPTION="down")
adminbae64d82013-08-01 10:50:15 -0700249 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
250 time.sleep( int(main.params['WaitTime']) )
251 main.log.info("Bringing Link up... ")
admin530b4c92013-08-14 16:54:35 -0700252 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
adminbae64d82013-08-01 10:50:15 -0700253 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
254 time.sleep( int(main.params['WaitTime']) )
255 main.case("Killing remote ping processes ")
admin530b4c92013-08-14 16:54:35 -0700256 result = result & main.Mininet4.pingKill()
adminbae64d82013-08-01 10:50:15 -0700257 utilities.assert_equals(expect=main.TRUE,actual=result)
258
259
260 def CASE7(self,main) :
261 '''
262 Processes all of the ping data and outputs raw data and an overall average
263 '''
264 import os
265 import time
admine0ae8202013-08-28 11:51:43 -0700266 main.log.report("Process ping data (Fail is time is >20 seconds)")
adminbae64d82013-08-01 10:50:15 -0700267 main.case("Processing Ping data")
268 time.sleep(3)
admin530b4c92013-08-14 16:54:35 -0700269 #result=os.popen("/home/admin/tools/shell.sh " + main.params['Iterations']).read()
270 try:
271 result=os.popen("/home/admin/get_reroute_times.py").read()
272 average=result.split(":")[1]
273 main.log.info( "Reroute times are... " )
274 main.log.report( result + " seconds" )
275 try:
276 if float(average) < float(main.params['TargetTime']) :
277 test=main.TRUE
278 else:
279 test=main.FALSE
280 except ValueError:
281 main.log.error("Data is corrupted")
282 test=main.FALSE
283 except:
284 main.log.report("No data")
285 test=main.FALSE
286 utilities.assert_equals(expect=main.TRUE,actual=test,onpass="Average is less then the target time!",onfail="Average is worse then target time... ")
287
288 def CASE8(self,main) :
289 '''
290 Starts continuous pings on the Mininet nodes
291 '''
292 main.log.report("Start continuous pings, then toggle multiple links in center triangle")
293 import time
294 import os
admine0ae8202013-08-28 11:51:43 -0700295 time.sleep(20)
admin530b4c92013-08-14 16:54:35 -0700296 main.case("Starting long ping... ")
297 main.Mininet4.pingLong(src=main.params['PING']['source1'],target=main.params['PING']['target1'])
298 main.Mininet4.pingLong(src=main.params['PING']['source2'],target=main.params['PING']['target2'])
299 main.Mininet4.pingLong(src=main.params['PING']['source3'],target=main.params['PING']['target3'])
300 main.Mininet4.pingLong(src=main.params['PING']['source4'],target=main.params['PING']['target4'])
301 main.Mininet4.pingLong(src=main.params['PING']['source5'],target=main.params['PING']['target5'])
302 main.Mininet4.pingLong(src=main.params['PING']['source6'],target=main.params['PING']['target6'])
303 main.Mininet4.pingLong(src=main.params['PING']['source7'],target=main.params['PING']['target7'])
304 main.Mininet4.pingLong(src=main.params['PING']['source8'],target=main.params['PING']['target8'])
305 main.Mininet4.pingLong(src=main.params['PING']['source9'],target=main.params['PING']['target9'])
306 main.Mininet4.pingLong(src=main.params['PING']['source10'],target=main.params['PING']['target10'])
307 main.step("Check that the pings are going")
308 result = main.Mininet4.pingstatus(src=main.params['PING']['source1'])
309 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source2'])
310 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source3'])
311 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source4'])
312 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source5'])
313 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source6'])
314 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source7'])
315 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source8'])
316 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source9'])
317 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source10'])
318 main.step( "Making topo change while flows are rerouting")
319 main.step( "Link down number of iterations: " + main.params['Iterations'] )
320 for i in range(int(main.params['Iterations'])):
321 main.log.info("s1-s2 link down")
322 main.Mininet1.link(END1="s1",END2="s2",OPTION="down")
323 main.Mininet1.link(END1="s1",END2="s3",OPTION="up")
324 main.Mininet1.link(END1="s2",END2="s3",OPTION="up")
325
326 time.sleep(5)
327
328 main.log.info("s1-s2 link up | s1-s3 link down | s2-s3 link down")
329 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
330 main.Mininet1.link(END1="s1",END2="s3",OPTION="down")
331 main.Mininet1.link(END1="s2",END2="s3",OPTION="down")
332
333 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
334 time.sleep( int(main.params['WaitTime']) )
335
336 main.case("Killing remote ping processes ")
337 result = result & main.Mininet4.pingKill()
338 utilities.assert_equals(expect=main.TRUE,actual=result)
admin530b4c92013-08-14 16:54:35 -0700339 main.log.info("Make sure all links in triangle are up")
340 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
341 main.Mininet1.link(END1="s1",END2="s3",OPTION="up")
342 main.Mininet1.link(END1="s2",END2="s3",OPTION="up")
admine0ae8202013-08-28 11:51:43 -0700343
344 def CASE9(self,main) :
345 '''
346 Starts continuous pings on the Mininet nodes
347 '''
admin530b4c92013-08-14 16:54:35 -0700348 main.log.report("Start continuous pings, then toggle one link in center triangle and start/stop 1 ONOS node")
349 import time
350 import os
351
admine0ae8202013-08-28 11:51:43 -0700352 time.sleep(20)
admin530b4c92013-08-14 16:54:35 -0700353 main.case("Starting long ping... ")
354 main.Mininet4.pingLong(src=main.params['PING']['source1'],target=main.params['PING']['target1'])
355 main.Mininet4.pingLong(src=main.params['PING']['source2'],target=main.params['PING']['target2'])
356 main.Mininet4.pingLong(src=main.params['PING']['source3'],target=main.params['PING']['target3'])
357 main.Mininet4.pingLong(src=main.params['PING']['source4'],target=main.params['PING']['target4'])
358 main.Mininet4.pingLong(src=main.params['PING']['source5'],target=main.params['PING']['target5'])
359 main.Mininet4.pingLong(src=main.params['PING']['source6'],target=main.params['PING']['target6'])
360 main.Mininet4.pingLong(src=main.params['PING']['source7'],target=main.params['PING']['target7'])
361 main.Mininet4.pingLong(src=main.params['PING']['source8'],target=main.params['PING']['target8'])
362 main.Mininet4.pingLong(src=main.params['PING']['source9'],target=main.params['PING']['target9'])
363 main.Mininet4.pingLong(src=main.params['PING']['source10'],target=main.params['PING']['target10'])
364 main.step("Check that the pings are going")
365 result = main.Mininet4.pingstatus(src=main.params['PING']['source1'])
366 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source2'])
367 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source3'])
368 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source4'])
369 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source5'])
370 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source6'])
371 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source7'])
372 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source8'])
373 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source9'])
374 result = result & main.Mininet4.pingstatus(src=main.params['PING']['source10'])
375 main.step( "Making topo change while flows are rerouting")
376 main.step( "Link down number of iterations: " + main.params['Iterations'] )
377 for i in range(int(main.params['Iterations'])):
378 main.log.info("s1-s2 link down | Onos 1 down")
379 main.Mininet1.link(END1="s1",END2="s2",OPTION="down")
380 if i % 4 == 0:
381 main.ONOS1.stop()
382 elif i % 4 == 1:
383 main.ONOS2.stop()
384 elif i % 4 == 2:
385 main.ONOS3.stop()
386 else:
387 main.ONOS4.stop()
388
389 time.sleep(5)
390
391 main.log.info("s1-s2 link up | Onos 1 back up")
392 main.Mininet1.link(END1="s1",END2="s2",OPTION="up")
393 if i % 4 == 0:
394 main.ONOS1.start()
395 main.ONOS1.isup()
396 elif i % 4 == 1:
397 main.ONOS2.start()
398 main.ONOS2.isup()
399 elif i % 4 == 2:
400 main.ONOS3.start()
401 main.ONOS3.isup()
402 else:
403 main.ONOS4.start()
404 main.ONOS4.isup()
405
406 main.log.info( "Waiting " + main.params['WaitTime'] + " seconds.... " )
407 time.sleep( int(main.params['WaitTime']) )
408
409 main.case("Killing remote ping processes ")
410 result = result & main.Mininet4.pingKill()
411 utilities.assert_equals(expect=main.TRUE,actual=result)
412