blob: f8c8185dc8435a3dc14d458c0be7d5a627bfb574 [file] [log] [blame]
pingping-lin28e7b212015-09-10 10:14:58 -07001# Testing the functionality of SDN-IP with single ONOS instance
pingping-lin5bb663b2015-09-24 11:47:50 -07002class USECASE_SdnipFunction:
pingping-lin28e7b212015-09-10 10:14:58 -07003
4 def __init__( self ):
5 self.default = ''
6 global branchName
7
pingping-linb702c602015-09-10 17:00:29 -07008 def CASE100( self, main ):
9 """
10 Start mininet
11 """
12 import os
Jon Hall70b768c2016-04-19 08:38:29 -070013 main.case( "Setup the Mininet testbed" )
pingping-linb702c602015-09-10 17:00:29 -070014 main.dependencyPath = main.testDir + \
15 main.params[ 'DEPENDENCY' ][ 'path' ]
16 main.topology = main.params[ 'DEPENDENCY' ][ 'topology' ]
17
18 main.step( "Starting Mininet Topology" )
19 topology = main.dependencyPath + main.topology
Jon Hall6e9897d2016-02-29 14:41:32 -080020 topoResult = main.Mininet.startNet( topoFile=topology )
21 utilities.assert_equals( expect=main.TRUE,
22 actual=topoResult,
23 onpass="Successfully loaded topology",
24 onfail="Failed to load topology" )
pingping-linb702c602015-09-10 17:00:29 -070025 # Exit if topology did not load properly
26 if not topoResult:
27 main.cleanup()
28 main.exit()
pingping-lin5bb663b2015-09-24 11:47:50 -070029 main.step( "Connect switches to controller" )
30
pingping-lin5bb663b2015-09-24 11:47:50 -070031 # connect all switches to controller
32 swResult = main.TRUE
33 for i in range ( 1, int( main.params['config']['switchNum'] ) + 1 ):
34 sw = "sw%s" % ( i )
Devin Lim58046fa2017-07-05 16:55:00 -070035 swResult = swResult and main.Mininet.assignSwController( sw, main.ONOSip[ 0 ] )
Jon Hall6e9897d2016-02-29 14:41:32 -080036 utilities.assert_equals( expect=main.TRUE,
37 actual=swResult,
38 onpass="Successfully connect all switches to ONOS",
39 onfail="Failed to connect all switches to ONOS" )
pingping-lin5bb663b2015-09-24 11:47:50 -070040 if not swResult:
41 main.cleanup()
42 main.exit()
43
44 main.step( "Set up tunnel from Mininet node to onos node" )
Devin Lim58046fa2017-07-05 16:55:00 -070045 forwarding1 = '%s:2000:%s:2000' % ( '1.1.1.2', main.ONOSip[ 0 ] )
pingping-lin5bb663b2015-09-24 11:47:50 -070046 command = 'ssh -nNT -o "PasswordAuthentication no" \
Devin Lim58046fa2017-07-05 16:55:00 -070047 -o "StrictHostKeyChecking no" -l sdn -L %s %s & ' % ( forwarding1, main.ONOSip[ 0 ] )
pingping-lin5bb663b2015-09-24 11:47:50 -070048
49 tunnelResult = main.TRUE
50 tunnelResult = main.Mininet.node( "root", command )
Jon Hall6e9897d2016-02-29 14:41:32 -080051 utilities.assert_equals( expect=True,
52 actual=( "PasswordAuthentication" in tunnelResult ),
53 onpass="Created tunnel succeeded",
54 onfail="Create tunnel failed" )
pingping-linb3ebd3f2015-09-28 22:17:05 -070055 if ("PasswordAuthentication" not in tunnelResult) :
pingping-lin5bb663b2015-09-24 11:47:50 -070056 main.cleanup()
57 main.exit()
pingping-lin5bb663b2015-09-24 11:47:50 -070058
pingping-linb702c602015-09-10 17:00:29 -070059 def CASE101( self, main ):
pingping-lin28e7b212015-09-10 10:14:58 -070060 """
pingping-linea32cf82015-10-08 22:37:37 -070061 Package ONOS and install it
pingping-lin28e7b212015-09-10 10:14:58 -070062 Startup sequence:
63 cell <name>
64 onos-verify-cell
pingping-lin28e7b212015-09-10 10:14:58 -070065 onos-package
66 onos-install -f
67 onos-wait-for-start
68 """
pingping-lin28e7b212015-09-10 10:14:58 -070069 import time
Jon Hall6e9897d2016-02-29 14:41:32 -080070 import os
Devin Lim58046fa2017-07-05 16:55:00 -070071 try:
72 from tests.USECASE.dependencies.sdnipBaseFunction import SdnBase
73 except ImportError:
74 main.log.error( "sdnBase not found. exiting the test" )
pingping-lin28e7b212015-09-10 10:14:58 -070075 main.exit()
Devin Lim58046fa2017-07-05 16:55:00 -070076 try:
77 main.sdnBase
78 except ( NameError, AttributeError ):
79 main.sdnBase = SdnBase()
80
81 main.sdnBase.initSetup()
pingping-lin28e7b212015-09-10 10:14:58 -070082
Jon Hall6e9897d2016-02-29 14:41:32 -080083 def CASE200( self, main ):
alisone4121a92016-11-22 16:31:36 -080084 import json
85 import time
86
Jon Hall6e9897d2016-02-29 14:41:32 -080087 main.case( "Activate sdn-ip application" )
88 main.log.info( "waiting link discovery......" )
89 time.sleep( int( main.params['timers']['TopoDiscovery'] ) )
90
pingping-linb3ebd3f2015-09-28 22:17:05 -070091 main.log.info( "Get links in the network" )
Devin Lim58046fa2017-07-05 16:55:00 -070092 summaryResult = main.ONOScli1.summary()
pingping-lin3f091d62015-09-29 12:00:05 -070093 linkNum = json.loads( summaryResult )[ "links" ]
Devin Lim58046fa2017-07-05 16:55:00 -070094 listResult = main.ONOScli1.links( jsonFormat=False )
Jon Hall6e9897d2016-02-29 14:41:32 -080095 main.log.info( listResult )
pingping-lin3f091d62015-09-29 12:00:05 -070096 if linkNum < 100:
Jon Hall6e9897d2016-02-29 14:41:32 -080097 main.log.error( "Link number is wrong!" )
98 time.sleep( int( main.params['timers']['TopoDiscovery'] ) )
Devin Lim58046fa2017-07-05 16:55:00 -070099 listResult = main.ONOScli1.links( jsonFormat=False )
pingping-lin3f091d62015-09-29 12:00:05 -0700100 main.log.info( listResult )
101 main.cleanup()
102 main.exit()
103
pingping-linb3ebd3f2015-09-28 22:17:05 -0700104 main.step( "Activate sdn-ip application" )
Devin Lim58046fa2017-07-05 16:55:00 -0700105 activeSDNIPresult = main.ONOScli1.activateApp( "org.onosproject.sdnip" )
Jon Hall6e9897d2016-02-29 14:41:32 -0800106 utilities.assert_equals( expect=main.TRUE,
107 actual=activeSDNIPresult,
108 onpass="Activate SDN-IP succeeded",
109 onfail="Activate SDN-IP failed" )
pingping-lin3f091d62015-09-29 12:00:05 -0700110 if not activeSDNIPresult:
111 main.log.info( "Activate SDN-IP failed!" )
112 main.cleanup()
113 main.exit()
114
pingping-linb3ebd3f2015-09-28 22:17:05 -0700115
116 main.log.info( "Wait SDN-IP to finish installing connectivity intents \
pingping-linb702c602015-09-10 17:00:29 -0700117 and the BGP paths in data plane are ready..." )
pingping-lin28e7b212015-09-10 10:14:58 -0700118 time.sleep( int( main.params[ 'timers' ][ 'SdnIpSetup' ] ) )
pingping-linb702c602015-09-10 17:00:29 -0700119 main.log.info( "Wait Quagga to finish delivery all routes to each \
120 other and to sdn-ip, plus finish installing all intents..." )
pingping-lin28e7b212015-09-10 10:14:58 -0700121 time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
122 time.sleep( int( main.params[ 'timers' ][ 'PathAvailable' ] ) )
123
124
pingping-lin4f80c492015-09-15 14:34:42 -0700125 def CASE102( self, main ):
126 '''
127 This test case is to load the methods from other Python files.
128 '''
alisone4121a92016-11-22 16:31:36 -0800129 import imp
130
pingping-linb3ebd3f2015-09-28 22:17:05 -0700131 main.case( "Loading methods from other Python file" )
pingping-lin4f80c492015-09-15 14:34:42 -0700132 # load the methods from other file
133 wrapperFile = main.params[ 'DEPENDENCY' ][ 'wrapper1' ]
134 main.Functions = imp.load_source( wrapperFile,
135 main.dependencyPath +
136 wrapperFile +
137 ".py" )
138
139
pingping-lin0ce60622015-09-10 14:37:33 -0700140 def CASE1( self, main ):
141 '''
alisone4121a92016-11-22 16:31:36 -0800142 ping test from 7 bgp peers to BGP speaker
pingping-lin0ce60622015-09-10 14:37:33 -0700143 '''
pingping-lin950b50d2015-09-14 12:00:08 -0700144
pingping-linb3ebd3f2015-09-28 22:17:05 -0700145 main.case( "Ping tests between BGP peers and speakers" )
alisone4121a92016-11-22 16:31:36 -0800146 main.Functions.pingSpeakerToPeer( main, speakers=[ "spk1" ],
147 peers=[ "p64514", "p64515", "p64516" ],
148 expectAllSuccess=True )
pingping-lin0ce60622015-09-10 14:37:33 -0700149
alisone4121a92016-11-22 16:31:36 -0800150 main.Functions.pingSpeakerToPeer( main, speakers=[ "spk2" ],
151 peers=[ "p64517", "p64518" ],
152 expectAllSuccess=True )
153
154 main.Functions.pingSpeakerToPeer( main, speakers=[ "spk3" ],
155 peers=[ "p64519", "p64520" ],
156 expectAllSuccess=True )
pingping-lin950b50d2015-09-14 12:00:08 -0700157
pingping-lin0ce60622015-09-10 14:37:33 -0700158 def CASE2( self, main ):
159 '''
160 point-to-point intents test for each BGP peer and BGP speaker pair
161 '''
Devin Lim58046fa2017-07-05 16:55:00 -0700162 main.sdnBase.pToPIntentTest( 6 )
pingping-lin0ce60622015-09-10 14:37:33 -0700163
164
165 def CASE3( self, main ):
166 '''
167 routes and intents check to all BGP peers
168 '''
pingping-linb3ebd3f2015-09-28 22:17:05 -0700169 main.case( "Check routes and M2S intents to all BGP peers" )
pingping-lin0ce60622015-09-10 14:37:33 -0700170
pingping-lin28e7b212015-09-10 10:14:58 -0700171 allRoutesExpected = []
172 allRoutesExpected.append( "4.0.0.0/24" + "/" + "10.0.4.1" )
173 allRoutesExpected.append( "5.0.0.0/24" + "/" + "10.0.5.1" )
174 allRoutesExpected.append( "6.0.0.0/24" + "/" + "10.0.6.1" )
alisone4121a92016-11-22 16:31:36 -0800175 allRoutesExpected.append( "7.0.0.0/24" + "/" + "10.0.7.1" )
176 allRoutesExpected.append( "8.0.0.0/24" + "/" + "10.0.8.1" )
177 allRoutesExpected.append( "9.0.0.0/24" + "/" + "10.0.9.1" )
178 allRoutesExpected.append( "20.0.0.0/24" + "/" + "10.0.20.1" )
179
Devin Lim58046fa2017-07-05 16:55:00 -0700180 main.sdnBase.routeAndIntentCheck( allRoutesExpected, 7 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700181
pingping-lin950b50d2015-09-14 12:00:08 -0700182
183 def CASE4( self, main ):
184 '''
185 Ping test in data plane for each route
186 '''
pingping-linb3ebd3f2015-09-28 22:17:05 -0700187 main.case( "Ping test for each route, all hosts behind BGP peers" )
alisone4121a92016-11-22 16:31:36 -0800188 #No vlan
pingping-lin829428d2015-09-22 20:50:00 -0700189 main.Functions.pingHostToHost( main,
alisone4121a92016-11-22 16:31:36 -0800190 hosts=[ "h64514", "h64515", "h64516" ],
191 expectAllSuccess=True )
192 #vlan 10
193 main.Functions.pingHostToHost( main,
194 hosts=[ "h64519", "h64520" ],
195 expectAllSuccess=True )
pingping-lin4f80c492015-09-15 14:34:42 -0700196
alisone4121a92016-11-22 16:31:36 -0800197 # vlan 20
198 main.Functions.pingHostToHost( main,
199 hosts=[ "h64517", "h64518" ],
200 expectAllSuccess=True )
pingping-lin4f80c492015-09-15 14:34:42 -0700201
202 def CASE5( self, main ):
203 '''
204 Cut links to peers one by one, check routes/intents
205 '''
Devin Lim58046fa2017-07-05 16:55:00 -0700206 main.sdnBase.linkUpDownCheck( "p64514", "p64515", "p64516",
207 6, 6, 5, 5, 4, 4,
208 "spk1", [ "h64514", "h64515", "h64516" ],
209 "down" )
pingping-lin4f80c492015-09-15 14:34:42 -0700210
pingping-lin829428d2015-09-22 20:50:00 -0700211
212 def CASE6( self, main ):
pingping-lin4f80c492015-09-15 14:34:42 -0700213 '''
214 Recover links to peers one by one, check routes/intents
215 '''
Devin Lim58046fa2017-07-05 16:55:00 -0700216 main.sdnBase.linkUpDownCheck( "p64514", "p64515", "p64516",
217 5, 5, 6, 6, 7, 7,
218 "spk1", [ "h64514", "h64515", "h64516" ],
219 "up" )
pingping-lin8244a3b2015-09-16 13:36:56 -0700220
pingping-lin829428d2015-09-22 20:50:00 -0700221 def CASE7( self, main ):
pingping-lin8244a3b2015-09-16 13:36:56 -0700222 '''
pingping-lin829428d2015-09-22 20:50:00 -0700223 Shut down a edge switch, check P-2-P and M-2-S intents, ping test
pingping-lin8244a3b2015-09-16 13:36:56 -0700224 '''
225 import time
pingping-linb3ebd3f2015-09-28 22:17:05 -0700226 main.case( "Stop edge sw32,check P-2-P and M-2-S intents, ping test" )
pingping-lin8244a3b2015-09-16 13:36:56 -0700227 main.step( "Stop sw32" )
Jon Hall6e9897d2016-02-29 14:41:32 -0800228 result = main.Mininet.switch( SW="sw32", OPTION="stop" )
229 utilities.assertEquals( expect=main.TRUE, actual=result,
230 onpass="Stopping switch succeeded!",
231 onfail="Stopping switch failed!" )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700232
pingping-lin8244a3b2015-09-16 13:36:56 -0700233 if result == main.TRUE:
234 time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
alisone4121a92016-11-22 16:31:36 -0800235 main.Functions.checkRouteNum( main, 6 ) #stop one sw, which bring one link between peer and sw down.
236 main.Functions.checkM2SintentNum( main, 6 )
237 main.Functions.checkP2PintentNum( main, 36 ) #6 intents from sw to speakers x 6 intents to sw x 2 intents between them
pingping-lin8244a3b2015-09-16 13:36:56 -0700238 else:
Jon Hall6e9897d2016-02-29 14:41:32 -0800239 main.log.error( "Stopping switch failed!" )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700240 main.cleanup()
241 main.exit()
pingping-lin8244a3b2015-09-16 13:36:56 -0700242
pingping-lin829428d2015-09-22 20:50:00 -0700243 main.step( "Check ping between hosts behind BGP peers" )
alisone4121a92016-11-22 16:31:36 -0800244 result1 = main.Mininet.pingHost( src="h64514", target="h64515" )
245 result2 = main.Mininet.pingHost( src="h64515", target="h64516" )
246 result3 = main.Mininet.pingHost( src="h64514", target="h64516" )
pingping-lin829428d2015-09-22 20:50:00 -0700247
248 pingResult1 = ( result1 == main.FALSE ) and ( result2 == main.TRUE ) \
249 and ( result3 == main.FALSE )
Jon Hall6e9897d2016-02-29 14:41:32 -0800250 utilities.assert_equals( expect=True, actual=pingResult1,
251 onpass="Ping test result is correct",
252 onfail="Ping test result is wrong" )
pingping-lin829428d2015-09-22 20:50:00 -0700253
254 if pingResult1 == False:
255 main.cleanup()
256 main.exit()
257
258 main.step( "Check ping between BGP peers and speakers" )
alisone4121a92016-11-22 16:31:36 -0800259 result4 = main.Mininet.pingHost( src="spk1", target="p64514" )
260 result5 = main.Mininet.pingHost( src="spk1", target="p64515" )
261 result6 = main.Mininet.pingHost( src="spk1", target="p64516" )
pingping-lin829428d2015-09-22 20:50:00 -0700262
263 pingResult2 = ( result4 == main.FALSE ) and ( result5 == main.TRUE ) \
264 and ( result6 == main.TRUE )
Jon Hall6e9897d2016-02-29 14:41:32 -0800265 utilities.assert_equals( expect=True, actual=pingResult2,
266 onpass="Speaker1 ping peers successful",
267 onfail="Speaker1 ping peers NOT successful" )
pingping-lin829428d2015-09-22 20:50:00 -0700268
269 if pingResult2 == False:
270 main.cleanup()
271 main.exit()
272
pingping-linbab7f8a2015-09-21 17:33:36 -0700273 main.step( "Check whether all flow status are ADDED" )
Devin Lim58046fa2017-07-05 16:55:00 -0700274 flowCheck = utilities.retry( main.ONOScli1.checkFlowsState,
Jon Hall6e9897d2016-02-29 14:41:32 -0800275 main.FALSE,
276 kwargs={'isPENDING':False},
277 attempts=10 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700278 utilities.assertEquals( \
Jon Hall6e9897d2016-02-29 14:41:32 -0800279 expect=main.TRUE,
280 actual=flowCheck,
281 onpass="Flow status is correct!",
282 onfail="Flow status is wrong!" )
pingping-lin8244a3b2015-09-16 13:36:56 -0700283
pingping-lind791d342015-09-17 18:34:31 -0700284
pingping-lin8244a3b2015-09-16 13:36:56 -0700285 def CASE8( self, main ):
pingping-lind791d342015-09-17 18:34:31 -0700286 '''
pingping-linb3ebd3f2015-09-28 22:17:05 -0700287 Bring up the edge switch (sw32) which was shut down in CASE7,
pingping-lind791d342015-09-17 18:34:31 -0700288 check P-2-P and M-2-S intents, ping test
289 '''
290 import time
pingping-linb3ebd3f2015-09-28 22:17:05 -0700291 main.case( "Start the edge sw32, check P-2-P and M-2-S intents, ping test" )
pingping-lind791d342015-09-17 18:34:31 -0700292 main.step( "Start sw32" )
Jon Hall6e9897d2016-02-29 14:41:32 -0800293 result1 = main.Mininet.switch( SW="sw32", OPTION="start" )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700294 utilities.assertEquals( \
Jon Hall6e9897d2016-02-29 14:41:32 -0800295 expect=main.TRUE,
296 actual=result1,
297 onpass="Starting switch succeeded!",
298 onfail="Starting switch failed!" )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700299
Devin Lim58046fa2017-07-05 16:55:00 -0700300 result2 = main.Mininet.assignSwController( "sw32", main.ONOSip[ 0 ] )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700301 utilities.assertEquals( \
Jon Hall6e9897d2016-02-29 14:41:32 -0800302 expect=main.TRUE,
303 actual=result2,
304 onpass="Connect switch to ONOS succeeded!",
305 onfail="Connect switch to ONOS failed!" )
pingping-lind791d342015-09-17 18:34:31 -0700306
307 if result1 and result2:
308 time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
alisone4121a92016-11-22 16:31:36 -0800309 main.Functions.checkRouteNum( main, 7 )
310 main.Functions.checkM2SintentNum( main, 7 )
311 main.Functions.checkP2PintentNum( main, 42 )
pingping-lind791d342015-09-17 18:34:31 -0700312 else:
Jon Hall6e9897d2016-02-29 14:41:32 -0800313 main.log.error( "Starting switch failed!" )
pingping-lind791d342015-09-17 18:34:31 -0700314 main.cleanup()
pingping-linb3ebd3f2015-09-28 22:17:05 -0700315 main.exit()
pingping-lin4f80c492015-09-15 14:34:42 -0700316
pingping-linbab7f8a2015-09-21 17:33:36 -0700317 main.step( "Check whether all flow status are ADDED" )
Devin Lim58046fa2017-07-05 16:55:00 -0700318 flowCheck = utilities.retry( main.ONOScli1.checkFlowsState,
Jon Hall6e9897d2016-02-29 14:41:32 -0800319 main.FALSE,
320 kwargs={'isPENDING':False},
321 attempts=10 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700322 utilities.assertEquals( \
Jon Hall6e9897d2016-02-29 14:41:32 -0800323 expect=main.TRUE,
324 actual=flowCheck,
325 onpass="Flow status is correct!",
326 onfail="Flow status is wrong!" )
pingping-linbab7f8a2015-09-21 17:33:36 -0700327
pingping-lin829428d2015-09-22 20:50:00 -0700328 # Ping test
alisone4121a92016-11-22 16:31:36 -0800329 main.Functions.pingSpeakerToPeer( main, speakers=["spk1"],
330 peers=["p64514", "p64515", "p64516"],
Jon Hall6e9897d2016-02-29 14:41:32 -0800331 expectAllSuccess=True )
pingping-lin829428d2015-09-22 20:50:00 -0700332 main.Functions.pingHostToHost( main,
alisone4121a92016-11-22 16:31:36 -0800333 hosts=["h64514", "h64515", "h64516"],
Jon Hall6e9897d2016-02-29 14:41:32 -0800334 expectAllSuccess=True )
pingping-linbab7f8a2015-09-21 17:33:36 -0700335
pingping-lin829428d2015-09-22 20:50:00 -0700336
337 def CASE9( self, main ):
pingping-linbab7f8a2015-09-21 17:33:36 -0700338 '''
339 Bring down a switch in best path, check:
340 route number, P2P intent number, M2S intent number, ping test
341 '''
pingping-linb3ebd3f2015-09-28 22:17:05 -0700342 main.case( "Stop sw11 located in best path, \
pingping-linbab7f8a2015-09-21 17:33:36 -0700343 check route number, P2P intent number, M2S intent number, ping test" )
344
pingping-lin581a3662015-09-29 17:43:39 -0700345 main.log.info( "Check the flow number correctness before stopping sw11" )
alisone4121a92016-11-22 16:31:36 -0800346 main.Functions.checkFlowNum( main, "sw11", 43 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700347 main.Functions.checkFlowNum( main, "sw1", 3 )
alisone4121a92016-11-22 16:31:36 -0800348 main.Functions.checkFlowNum( main, "sw7", 34 )
Jon Hall6e9897d2016-02-29 14:41:32 -0800349 main.log.debug( main.Mininet.checkFlows( "sw11" ) )
350 main.log.debug( main.Mininet.checkFlows( "sw1" ) )
351 main.log.debug( main.Mininet.checkFlows( "sw7" ) )
pingping-linbab7f8a2015-09-21 17:33:36 -0700352
353 main.step( "Stop sw11" )
Jon Hall6e9897d2016-02-29 14:41:32 -0800354 result = main.Mininet.switch( SW="sw11", OPTION="stop" )
355 utilities.assertEquals( expect=main.TRUE, actual=result,
356 onpass="Stopping switch succeeded!",
357 onfail="Stopping switch failed!" )
pingping-linbab7f8a2015-09-21 17:33:36 -0700358 if result:
359 time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700360 time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
alisone4121a92016-11-22 16:31:36 -0800361 main.Functions.checkRouteNum( main, 7 )
362 main.Functions.checkM2SintentNum( main, 7 )
363 main.Functions.checkP2PintentNum( main, 42 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700364 else:
Jon Hall6e9897d2016-02-29 14:41:32 -0800365 main.log.error( "Stopping switch failed!" )
pingping-linbab7f8a2015-09-21 17:33:36 -0700366 main.cleanup()
pingping-linb3ebd3f2015-09-28 22:17:05 -0700367 main.exit()
pingping-linbab7f8a2015-09-21 17:33:36 -0700368
369 main.step( "Check whether all flow status are ADDED" )
Devin Lim58046fa2017-07-05 16:55:00 -0700370 flowCheck = utilities.retry( main.ONOScli1.checkFlowsState,
Jon Hall6e9897d2016-02-29 14:41:32 -0800371 main.FALSE,
372 kwargs={'isPENDING':False},
373 attempts=10 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700374 utilities.assertEquals( \
Jon Hall6e9897d2016-02-29 14:41:32 -0800375 expect=main.TRUE,
376 actual=flowCheck,
377 onpass="Flow status is correct!",
378 onfail="Flow status is wrong!" )
pingping-lin829428d2015-09-22 20:50:00 -0700379 # Ping test
alisone4121a92016-11-22 16:31:36 -0800380 main.Functions.pingSpeakerToPeer( main, speakers=["spk1"],
381 peers=["p64514", "p64515", "p64516"],
Jon Hall6e9897d2016-02-29 14:41:32 -0800382 expectAllSuccess=True )
pingping-lin829428d2015-09-22 20:50:00 -0700383 main.Functions.pingHostToHost( main,
alisone4121a92016-11-22 16:31:36 -0800384 hosts=["h64514", "h64515", "h64516"],
Jon Hall6e9897d2016-02-29 14:41:32 -0800385 expectAllSuccess=True )
pingping-linbab7f8a2015-09-21 17:33:36 -0700386
387
388 def CASE10( self, main ):
389 '''
390 Bring up the switch which was stopped in CASE9, check:
391 route number, P2P intent number, M2S intent number, ping test
392 '''
pingping-linb3ebd3f2015-09-28 22:17:05 -0700393 main.case( "Start sw11 which was stopped in CASE9, \
pingping-linbab7f8a2015-09-21 17:33:36 -0700394 check route number, P2P intent number, M2S intent number, ping test" )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700395
pingping-lin581a3662015-09-29 17:43:39 -0700396 main.log.info( "Check the flow status before starting sw11" )
alisone4121a92016-11-22 16:31:36 -0800397 main.Functions.checkFlowNum( main, "sw1", 33 )
398 main.Functions.checkFlowNum( main, "sw7", 28 )
Jon Hall6e9897d2016-02-29 14:41:32 -0800399 main.log.debug( main.Mininet.checkFlows( "sw1" ) )
400 main.log.debug( main.Mininet.checkFlows( "sw7" ) )
pingping-linb3ebd3f2015-09-28 22:17:05 -0700401
pingping-linbab7f8a2015-09-21 17:33:36 -0700402 main.step( "Start sw11" )
Jon Hall6e9897d2016-02-29 14:41:32 -0800403 result1 = main.Mininet.switch( SW="sw11", OPTION="start" )
404 utilities.assertEquals( expect=main.TRUE, actual=result1,
405 onpass="Starting switch succeeded!",
406 onfail="Starting switch failed!" )
Devin Lim58046fa2017-07-05 16:55:00 -0700407 result2 = main.Mininet.assignSwController( "sw11", main.ONOSip[ 0 ] )
Jon Hall6e9897d2016-02-29 14:41:32 -0800408 utilities.assertEquals( expect=main.TRUE, actual=result2,
409 onpass="Connect switch to ONOS succeeded!",
410 onfail="Connect switch to ONOS failed!" )
pingping-lin0351dee2015-09-28 13:26:35 -0700411 if result1 and result2:
pingping-linbab7f8a2015-09-21 17:33:36 -0700412 time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
alisone4121a92016-11-22 16:31:36 -0800413 main.Functions.checkRouteNum( main, 7 )
414 main.Functions.checkM2SintentNum( main, 7 )
415 main.Functions.checkP2PintentNum( main, 42 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700416
pingping-lin3f091d62015-09-29 12:00:05 -0700417 main.log.debug( main.Mininet.checkFlows( "sw11" ) )
418 main.log.debug( main.Mininet.checkFlows( "sw1" ) )
419 main.log.debug( main.Mininet.checkFlows( "sw7" ) )
pingping-linbab7f8a2015-09-21 17:33:36 -0700420 else:
Jon Hall6e9897d2016-02-29 14:41:32 -0800421 main.log.error( "Starting switch failed!" )
pingping-linbab7f8a2015-09-21 17:33:36 -0700422 main.cleanup()
pingping-linb3ebd3f2015-09-28 22:17:05 -0700423 main.exit()
pingping-linbab7f8a2015-09-21 17:33:36 -0700424
425 main.step( "Check whether all flow status are ADDED" )
Devin Lim58046fa2017-07-05 16:55:00 -0700426 flowCheck = utilities.retry( main.ONOScli1.checkFlowsState,
Jon Hall6e9897d2016-02-29 14:41:32 -0800427 main.FALSE,
428 kwargs={'isPENDING':False},
429 attempts=10 )
pingping-linbab7f8a2015-09-21 17:33:36 -0700430 utilities.assertEquals( \
Jon Hall6e9897d2016-02-29 14:41:32 -0800431 expect=main.TRUE,
432 actual=flowCheck,
433 onpass="Flow status is correct!",
434 onfail="Flow status is wrong!" )
pingping-lin829428d2015-09-22 20:50:00 -0700435 # Ping test
alisone4121a92016-11-22 16:31:36 -0800436 main.Functions.pingSpeakerToPeer( main, speakers=["spk1"],
437 peers=["p64514", "p64515", "p64516"],
Jon Hall6e9897d2016-02-29 14:41:32 -0800438 expectAllSuccess=True )
pingping-lin829428d2015-09-22 20:50:00 -0700439 main.Functions.pingHostToHost( main,
alisone4121a92016-11-22 16:31:36 -0800440 hosts=["h64514", "h64515", "h64516"],
Jon Hall6e9897d2016-02-29 14:41:32 -0800441 expectAllSuccess=True )