blob: 1f50245e9e718312cbb5c86476861417de8ba667 [file] [log] [blame]
admin07529932013-11-22 14:58:28 -08001
2class OnosSanity4ARP :
3
4 def __init__(self) :
5 self.default = ''
6
7#**********************************************************************************************************************************************************************************************
8#Test startup
9#Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
10 def CASE1(self,main) : #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
11 import time
12 main.log.report("Pulling latest code from github to all nodes")
13 main.ONOS1.git_pull()
14 main.ONOS2.git_pull()
15 main.ONOS3.git_pull()
16 main.ONOS4.git_pull()
17 main.Cassandra1.start()
18 main.Cassandra2.start()
19 main.Cassandra3.start()
20 main.Cassandra4.start()
21 time.sleep(20)
22 main.ONOS1.drop_keyspace()
23 main.ONOS1.start()
24 time.sleep(10)
25 main.ONOS2.start()
26 main.ONOS3.start()
27 main.ONOS4.start()
28 main.ONOS1.start_rest()
29 time.sleep(5)
admin68453302013-12-16 15:40:04 -080030 test= main.ONOS1.rest_status()
31 if test == main.FALSE:
32 main.ONOS1.start_rest()
admin07529932013-11-22 14:58:28 -080033 main.ONOS1.get_version()
34 main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
35 main.case("Checking if the startup was clean...")
36 main.step("Testing startup Zookeeper")
37 data = main.Zookeeper1.isup()
38 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
39 main.step("Testing startup Cassandra")
40 data = main.Cassandra1.isup()
41 if data == main.FALSE:
42 main.Cassandra1.stop()
43 main.Cassandra2.stop()
44 main.Cassandra3.stop()
45 main.Cassandra4.stop()
46
47 time.sleep(5)
48
49 main.Cassandra1.start()
50 main.Cassandra2.start()
51 main.Cassandra3.start()
52 main.Cassandra4.start()
53 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Cassandra is up!",onfail="Cassandra is down...")
54 main.step("Testing startup ONOS")
55 data = main.ONOS1.isup()
56 if data == main.FALSE:
57 main.log.report("Something is funny... restarting ONOS")
58 main.ONOS1.stop()
59 time.sleep(3)
60 main.ONOS1.start()
61 time.sleep(5)
62 data = main.ONOS1.isup()
63 utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
64
65#**********************************************************************************************************************************************************************************************
66#Assign Controllers
67#This test first checks the ip of a mininet host, to be certain that the mininet exists(Host is defined in Params as <CASE1><destination>).
68#Then the program assignes each ONOS instance a single controller to a switch(To be the initial master), then assigns all controllers.
69#NOTE: The reason why all four controllers are assigned although one was already assigned as the master is due to the 'ovs-vsctl set-controller' command erases all present controllers if
70# the controllers already assigned to the switch are not specified.
71
72 def CASE2(self,main) : #Make sure mininet exists, then assign controllers to switches
73 import time
74 main.log.report("Check if mininet started properly, then assign controllers ONOS 1,2,3 and 4")
75 main.case("Checking if one MN host exists")
76 main.step("Host IP Checking using checkIP")
77 result = main.Mininet1.checkIP(main.params['CASE1']['destination'])
78 main.step("Verifying the result")
79 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Host IP address configured",onfail="Host IP address not configured")
80 main.step("assigning ONOS controllers to switches")
81 for i in range(25):
82 if i < 3:
83 j=i+1
84 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
85 time.sleep(1)
86 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'])
87 elif i >= 3 and i < 5:
88 j=i+1
89 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
90 time.sleep(1)
91 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'])
92 elif i >= 5 and i < 15:
93 j=i+1
94 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
95 time.sleep(1)
96 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'])
97 else:
98 j=i+16
99 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
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 main.Mininet1.get_sw_controller("s1")
admin07529932013-11-22 14:58:28 -0800103
104# **********************************************************************************************************************************************************************************************
105#Add Flows
106#Deletes any remnant flows from any previous test, add flows from the file labeled <FLOWDEF>, then runs the check flow test
107#NOTE: THE FLOWDEF FILE MUST BE PRESENT ON TESTON VM!!! TestON will copy the file from its home machine into /tmp/flowtmp on the machine the ONOS instance is present on
108
109 def CASE3(self,main) : #Delete any remnant flows, then add flows, and time how long it takes flow tables to update
110 main.log.report("Delete any flows from previous tests, then add flows from FLOWDEF file, then wait for switch flow tables to update")
111 import time
admin07529932013-11-22 14:58:28 -0800112 main.case("Taking care of these flows!")
113 main.step("Cleaning out any leftover flows...")
114 main.ONOS1.delete_flow("all")
admin07529932013-11-22 14:58:28 -0800115 strtTime = time.time()
116 main.ONOS1.add_flow(main.params['FLOWDEF'])
117 main.case("Checking flows")
admin07529932013-11-22 14:58:28 -0800118
119 count = 1
120 i = 6
121 while i < 16 :
122 main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
123 ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
admin68453302013-12-16 15:40:04 -0800124 if ping == main.FALSE and count < 9:
admin07529932013-11-22 14:58:28 -0800125 count = count + 1
126 i = 6
admin68453302013-12-16 15:40:04 -0800127 main.log.info("Ping failed, making attempt number "+str(count)+" in 2 seconds")
128 time.sleep(2)
129 elif ping == main.FALSE and count ==9:
admin07529932013-11-22 14:58:28 -0800130 main.log.error("Ping test failed")
131 i = 17
admin68453302013-12-16 15:40:04 -0800132 result = main.FALSE
admin07529932013-11-22 14:58:28 -0800133 elif ping == main.TRUE:
134 i = i + 1
135 result2 = main.TRUE
admin68453302013-12-16 15:40:04 -0800136 endTime = time.time()
137 if result == main.TRUE:
138 main.log.report("\tTime to complete add flows: "+str(round(endTime-strtTime,2))+" seconds")
admin07529932013-11-22 14:58:28 -0800139 else:
140 main.log.report("\tPING TEST FAIL")
141
admin68453302013-12-16 15:40:04 -0800142 result2 = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
admin07529932013-11-22 14:58:28 -0800143 main.step("Verifying the result")
admin68453302013-12-16 15:40:04 -0800144 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Flow check PASS",onfail="Flow check FAIL")
admin07529932013-11-22 14:58:28 -0800145
146#**********************************************************************************************************************************************************************************************
147#This test case removes Controllers 2,3, and 4 then performs a ping test.
148#The assign controller is used because the ovs-vsctl module deletes all current controllers when a new controller is assigned.
149#The ping test performs single pings on hosts from opposite sides of the topology. If one ping fails, the test waits 5 seconds before trying again.
150#If the ping test fails 6 times, then the test case will return false
151
152 def CASE4(self,main) :
153 main.log.report("Remove ONOS 2,3,4 then ping until all hosts are reachable or fail after 6 attempts")
154 import time
155 for i in range(25):
156 if i < 15:
157 j=i+1
158 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1']) #Assigning a single controller removes all other controllers
159 else:
160 j=i+16
161 main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
162
163 strtTime = time.time()
164 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
admin68453302013-12-16 15:40:04 -0800165 for i in range(2):
admin07529932013-11-22 14:58:28 -0800166 if result == main.FALSE:
admin68453302013-12-16 15:40:04 -0800167 time.sleep(5)
admin07529932013-11-22 14:58:28 -0800168 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
169 else:
170 break
171
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 < 6:
178 count = count + 1
179 i = 6
180 main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
admin68453302013-12-16 15:40:04 -0800181 time.sleep(2)
admin07529932013-11-22 14:58:28 -0800182 elif ping == main.FALSE and count ==6:
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.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
192 else:
193 main.log.report("\tPING TEST FAIL")
194 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
195
196# **********************************************************************************************************************************************************************************************
197#This test case restores the controllers removed by Case 4 then performs a ping test.
198
199 def CASE5(self,main) :
200 main.log.report("Restore ONOS 2,3,4 then ping until all hosts are reachable or fail after 6 attempts")
201 import time
202 for i in range(25):
203 if i < 15:
204 j=i+1
205 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'])
206 else:
207 j=i+16
208 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'])
209
210 strtTime = time.time()
211 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
admin68453302013-12-16 15:40:04 -0800212 for i in range(2):
admin07529932013-11-22 14:58:28 -0800213 if result == main.FALSE:
214 time.sleep(3)
215 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
216 else:
217 break
218
219 count = 1
220 i = 6
221 while i < 16 :
222 main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
223 ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
224 if ping == main.FALSE and count < 6:
225 count = count + 1
226 i = 6
227 main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
admin68453302013-12-16 15:40:04 -0800228 time.sleep(2)
admin07529932013-11-22 14:58:28 -0800229 elif ping == main.FALSE and count ==6:
230 main.log.error("Ping test failed")
231 i = 17
232 result = main.FALSE
233 elif ping == main.TRUE:
234 i = i + 1
235 result = main.TRUE
236 endTime = time.time()
237 if result == main.TRUE:
238 main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
239 else:
240 main.log.report("\tPING TEST FAILED")
241 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
242
243# **********************************************************************************************************************************************************************************************
244#Brings a link that all flows pass through in the mininet down, then runs a ping test to view reroute time
245
246 def CASE6(self,main) :
247 main.log.report("Bring Link between s1 and s2 down, then ping until all hosts are reachable or fail after 10 attempts")
248 import time
249 main.case("Bringing Link down... ")
250 result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="down")
251 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link DOWN!",onfail="Link not brought down...")
252
253 strtTime = time.time()
254 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
admin68453302013-12-16 15:40:04 -0800255 for i in range(2):
admin07529932013-11-22 14:58:28 -0800256 if result == main.FALSE:
admin68453302013-12-16 15:40:04 -0800257 time.sleep(5)
admin07529932013-11-22 14:58:28 -0800258 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
259 else:
260 break
261
262 count = 1
263 i = 6
264 while i < 16 :
265 main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
266 ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
267 if ping == main.FALSE and count < 10:
268 count = count + 1
269 main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
270 i = 6
admin68453302013-12-16 15:40:04 -0800271 time.sleep(2)
admin07529932013-11-22 14:58:28 -0800272 elif ping == main.FALSE and count == 10:
273 main.log.error("Ping test failed")
274 i = 17
275 result = main.FALSE
276 elif ping == main.TRUE:
277 i = i + 1
278 result = main.TRUE
279 endTime = time.time()
280 if result == main.TRUE:
281 main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
282 else:
283 main.log.report("\tPING TEST FAILED")
284 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
285
286# **********************************************************************************************************************************************************************************************
287#Brings the link that Case 6 took down back up, then runs a ping test to view reroute time
288
289 def CASE7(self,main) :
290 main.log.report("Bring Link between s1 and s2 up, then ping until all hosts are reachable or fail after 10 attempts")
291 import time
292 main.case("Bringing Link up... ")
293 result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="up")
294 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link UP!",onfail="Link not brought up...")
295
296 strtTime = time.time()
297 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
admin68453302013-12-16 15:40:04 -0800298 for i in range(2):
admin07529932013-11-22 14:58:28 -0800299 if result == main.FALSE:
admin68453302013-12-16 15:40:04 -0800300 time.sleep(5)
admin07529932013-11-22 14:58:28 -0800301 result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
302 else:
303 break
304
305 strtTime = time.time()
306 count = 1
307 i = 6
308 while i < 16 :
309 main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
310 ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
311 if ping == main.FALSE and count < 10:
312 count = count + 1
313 main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
314 i = 6
admin68453302013-12-16 15:40:04 -0800315 time.sleep(2)
admin07529932013-11-22 14:58:28 -0800316 elif ping == main.FALSE and count ==10:
317 main.log.error("Ping test failed")
318 i = 17
319 result = main.FALSE
320 elif ping == main.TRUE:
321 i = i + 1
322 result = main.TRUE
323 endTime = time.time()
324 if result == main.TRUE:
325 main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
326 else:
327 main.log.report("\tPING TESTS FAILED")
328 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
329
330
331# ******************************************************************************************************************************************************************
332# Test Device Discovery function by yanking s6:s6-eth0 interface and re-plug it into a switch
333
334 def CASE21(self,main) :
335 import json
336 from drivers.common.api.onosrestapidriver import *
337 main.log.report("Test device discovery function, by attach/detach/move host h1 from s1->s6->s1.")
admin68453302013-12-16 15:40:04 -0800338 main.log.report("Check initially hostMAC/IP exist on the mininet...")
admin07529932013-11-22 14:58:28 -0800339 host = main.params['YANK']['hostname']
340 mac = main.params['YANK']['hostmac']
admin68453302013-12-16 15:40:04 -0800341 hostip = main.params['YANK']['hostip']
admin07529932013-11-22 14:58:28 -0800342 RestIP1 = main.params['RESTCALL']['restIP1']
admin07529932013-11-22 14:58:28 -0800343 RestPort = main.params['RESTCALL']['restPort']
344 url = main.params['RESTCALL']['restURL']
345 #print "host=" + host + "; RestIP=" + RestIP1 + "; RestPort=" + str(RestPort)
admin68453302013-12-16 15:40:04 -0800346
admin07529932013-11-22 14:58:28 -0800347 ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
348 restcall = OnosRestApiDriver()
admin68453302013-12-16 15:40:04 -0800349 Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
admin07529932013-11-22 14:58:28 -0800350 try:
admin68453302013-12-16 15:40:04 -0800351 attachedSW = RestSwitch[0]['dpid']
352 host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
admin07529932013-11-22 14:58:28 -0800353 except:
354 Reststatus = 0
admin68453302013-12-16 15:40:04 -0800355 if Reststatus == 1 and host_ip == '10.0.0.1':
admin07529932013-11-22 14:58:28 -0800356 main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
admin68453302013-12-16 15:40:04 -0800357 result = main.TRUE
358 elif Reststatus > 1:
359 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
admin07529932013-11-22 14:58:28 -0800360 else:
361 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
362 result = main.FALSE
363
admin68453302013-12-16 15:40:04 -0800364 main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
365
admin07529932013-11-22 14:58:28 -0800366 ##### Step to yank out "s1-eth1" from s1, which is on autoONOS1 #####
367
368 main.log.report("Yank out s1-eth1")
369 main.case("Yankout s6-eth1 (link to h1) from s1")
370 result = main.Mininet1.yank(SW=main.params['YANK']['sw1'],INTF=main.params['YANK']['intf'])
371 time.sleep(3)
372 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
admin68453302013-12-16 15:40:04 -0800373
374 main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
admin07529932013-11-22 14:58:28 -0800375 ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
admin68453302013-12-16 15:40:04 -0800376 restcall = OnosRestApiDriver()
377 Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
admin07529932013-11-22 14:58:28 -0800378 try:
admin68453302013-12-16 15:40:04 -0800379 attachedSW = RestSwitch[0]['dpid']
380 host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
admin07529932013-11-22 14:58:28 -0800381 except:
382 Reststatus = 0
admin68453302013-12-16 15:40:04 -0800383 if Reststatus == 1 and host_ip == '10.0.0.1':
384 main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
admin07529932013-11-22 14:58:28 -0800385 result = main.TRUE
admin68453302013-12-16 15:40:04 -0800386 elif Reststatus > 1:
387 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
admin07529932013-11-22 14:58:28 -0800388 else:
admin68453302013-12-16 15:40:04 -0800389 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
admin07529932013-11-22 14:58:28 -0800390 result = main.FALSE
admin68453302013-12-16 15:40:04 -0800391
392
admin07529932013-11-22 14:58:28 -0800393 ##### Step to plug "s1-eth1" to s6, which is on autoONOS3 ######
394 main.log.report("Plug s1-eth1 into s6")
395 main.case("Plug s1-eth1 to s6")
396 result = main.Mininet1.plug(SW=main.params['PLUG']['sw6'],INTF=main.params['PLUG']['intf'])
397 time.sleep(3)
398 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
admin68453302013-12-16 15:40:04 -0800399 main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
400
admin07529932013-11-22 14:58:28 -0800401 ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
admin68453302013-12-16 15:40:04 -0800402 restcall = OnosRestApiDriver()
403 Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
admin07529932013-11-22 14:58:28 -0800404 try:
admin68453302013-12-16 15:40:04 -0800405 attachedSW = RestSwitch[0]['dpid']
406 host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
admin07529932013-11-22 14:58:28 -0800407 except:
408 Reststatus = 0
admin68453302013-12-16 15:40:04 -0800409 if Reststatus == 1 and host_ip == '10.0.0.1':
410 main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
411 result = main.TRUE
412 elif Reststatus > 1:
413 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
admin07529932013-11-22 14:58:28 -0800414 else:
admin68453302013-12-16 15:40:04 -0800415 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
admin07529932013-11-22 14:58:28 -0800416 result = main.FALSE
417
admin68453302013-12-16 15:40:04 -0800418
admin07529932013-11-22 14:58:28 -0800419 ###### Step to put interface "s1-eth1" back to s1"#####
420 main.log.report("Move s1-eth1 back on to s1")
421 main.case("Move s1-eth1 back to s1")
422 result = main.Mininet1.yank(SW=main.params['YANK']['sw6'],INTF=main.params['YANK']['intf'])
423 time.sleep(3)
424 retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
425 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
admin68453302013-12-16 15:40:04 -0800426 main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
427
admin07529932013-11-22 14:58:28 -0800428 ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
admin68453302013-12-16 15:40:04 -0800429 restcall = OnosRestApiDriver()
430 Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
admin07529932013-11-22 14:58:28 -0800431 try:
admin68453302013-12-16 15:40:04 -0800432 attachedSW = RestSwitch[0]['dpid']
433 host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
admin07529932013-11-22 14:58:28 -0800434 except:
435 Reststatus = 0
admin68453302013-12-16 15:40:04 -0800436 if Reststatus == 1 and host_ip == '10.0.0.1':
437 main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
438 result = main.TRUE
439 elif Reststatus > 1:
440 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
admin07529932013-11-22 14:58:28 -0800441 else:
admin68453302013-12-16 15:40:04 -0800442 main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
admin07529932013-11-22 14:58:28 -0800443 result = main.FALSE
444
admin68453302013-12-16 15:40:04 -0800445
admin07529932013-11-22 14:58:28 -0800446 utilities.assert_equals(expect=main.TRUE,actual=result,onpass="DEVICE DISCOVERY TEST PASSED PLUG/UNPLUG/MOVE TEST",onfail="DEVICE DISCOVERY TEST FAILED")
447
admin07529932013-11-22 14:58:28 -0800448