blob: 2cd04c1aab02e19b9dca3509aac65231175ac31e [file] [log] [blame]
shahshreya4e13a062014-11-11 16:46:18 -08001
shahshreyafac62b12015-01-20 16:16:13 -08002# Testing the basic functionality of ONOS Next
3# For sanity and driver functionality excercises only.
shahshreya4e13a062014-11-11 16:46:18 -08004
5import time
shahshreyafac62b12015-01-20 16:16:13 -08006# import sys
7# import os
8# import re
shahshreya4e13a062014-11-11 16:46:18 -08009import json
10
shahshreyafac62b12015-01-20 16:16:13 -080011time.sleep( 1 )
12
13
shahshreya4e13a062014-11-11 16:46:18 -080014class ProdFunc:
shahshreyafac62b12015-01-20 16:16:13 -080015
16 def __init__( self ):
shahshreya4e13a062014-11-11 16:46:18 -080017 self.default = ''
18
shahshreyafac62b12015-01-20 16:16:13 -080019 def CASE1( self, main ):
shahshreya82ecd282015-02-05 16:48:03 -080020 import time
shahshreyafac62b12015-01-20 16:16:13 -080021 """
shahshreya4e13a062014-11-11 16:46:18 -080022 Startup sequence:
shahshreyae6c7cf42014-11-26 16:39:01 -080023 cell <name>
24 onos-verify-cell
25 onos-remove-raft-log
shahshreya4e13a062014-11-11 16:46:18 -080026 git pull
27 mvn clean install
28 onos-package
shahshreya4e13a062014-11-11 16:46:18 -080029 onos-install -f
30 onos-wait-for-start
shahshreyafac62b12015-01-20 16:16:13 -080031 """
32 cellName = main.params[ 'ENV' ][ 'cellName' ]
33 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
shahshreyae6c7cf42014-11-26 16:39:01 -080034
shahshreyafac62b12015-01-20 16:16:13 -080035 main.case( "Setting up test environment" )
36 main.log.report(
37 "This testcase is testing setting up test environment" )
38 main.log.report( "__________________________________" )
shahshreyae6c7cf42014-11-26 16:39:01 -080039
shahshreyafac62b12015-01-20 16:16:13 -080040 main.step( "Applying cell variable to environment" )
41 cellResult = main.ONOSbench.setCell( cellName )
42 verifyResult = main.ONOSbench.verifyCell()
43
44 main.step( "Removing raft logs before a clen installation of ONOS" )
45 main.ONOSbench.onosRemoveRaftLogs()
46
shahshreyab512cd02015-01-27 17:01:47 -080047 main.step( "Git checkout and get version" )
48 #main.ONOSbench.gitCheckout( "master" )
shahshreyafac62b12015-01-20 16:16:13 -080049 gitPullResult = main.ONOSbench.gitPull()
shahshreya82ecd282015-02-05 16:48:03 -080050 main.log.info( "git_pull_result = " + str( gitPullResult ))
shahshreyafac62b12015-01-20 16:16:13 -080051 main.ONOSbench.getVersion( report=True )
52
53 if gitPullResult == 1:
54 main.step( "Using mvn clean & install" )
55 main.ONOSbench.cleanInstall()
56 elif gitPullResult == 0:
57 main.log.report(
58 "Git Pull Failed, look into logs for detailed reason" )
shahshreya0e81ed92014-12-08 16:57:17 -080059 main.cleanup()
shahshreyafac62b12015-01-20 16:16:13 -080060 main.exit()
shahshreya4e13a062014-11-11 16:46:18 -080061
shahshreyafac62b12015-01-20 16:16:13 -080062 main.step( "Creating ONOS package" )
63 packageResult = main.ONOSbench.onosPackage()
shahshreya4e13a062014-11-11 16:46:18 -080064
shahshreyafac62b12015-01-20 16:16:13 -080065 main.step( "Installing ONOS package" )
66 onosInstallResult = main.ONOSbench.onosInstall()
67 if onosInstallResult == main.TRUE:
68 main.log.report( "Installing ONOS package successful" )
shahshreya4e13a062014-11-11 16:46:18 -080069 else:
shahshreyafac62b12015-01-20 16:16:13 -080070 main.log.report( "Installing ONOS package failed" )
shahshreya4e13a062014-11-11 16:46:18 -080071
shahshreyafac62b12015-01-20 16:16:13 -080072 onos1Isup = main.ONOSbench.isup()
73 if onos1Isup == main.TRUE:
74 main.log.report( "ONOS instance is up and ready" )
shahshreya4e13a062014-11-11 16:46:18 -080075 else:
shahshreyafac62b12015-01-20 16:16:13 -080076 main.log.report( "ONOS instance may not be up" )
shahshreya4e13a062014-11-11 16:46:18 -080077
shahshreyafac62b12015-01-20 16:16:13 -080078 main.step( "Starting ONOS service" )
79 startResult = main.ONOSbench.onosStart( ONOS1Ip )
shahshreya4e13a062014-11-11 16:46:18 -080080
shahshreyafac62b12015-01-20 16:16:13 -080081 main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
shahshreya82ecd282015-02-05 16:48:03 -080082 main.step( "Starting Mininet CLI..." )
83
84 # Starting the mininet using the old way
85 main.step( "Starting Mininet ..." )
86 netIsUp = main.Mininet1.startNet()
87 if netIsUp:
88 main.log.info("Mininet CLI is up")
89
shahshreyafac62b12015-01-20 16:16:13 -080090 case1Result = ( packageResult and
91 cellResult and verifyResult
92 and onosInstallResult and
93 onos1Isup and startResult )
94 utilities.assert_equals( expect=main.TRUE, actual=case1Result,
shahshreya9294c8d2015-01-21 15:54:16 -080095 onpass="Test startup successful",
96 onfail="Test startup NOT successful" )
shahshreyafac62b12015-01-20 16:16:13 -080097
98 def CASE2( self, main ):
99 """
shahshreya0e81ed92014-12-08 16:57:17 -0800100 Switch Down
shahshreyafac62b12015-01-20 16:16:13 -0800101 """
102 # NOTE: You should probably run a topology check after this
103 import time
shahshreya0e81ed92014-12-08 16:57:17 -0800104
shahshreyafac62b12015-01-20 16:16:13 -0800105 main.case( "Switch down discovery" )
106 main.log.report( "This testcase is testing a switch down discovery" )
107 main.log.report( "__________________________________" )
108
109 switchSleep = int( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
shahshreya0e81ed92014-12-08 16:57:17 -0800110
111 description = "Killing a switch to ensure it is discovered correctly"
shahshreyafac62b12015-01-20 16:16:13 -0800112 main.log.report( description )
113 main.case( description )
shahshreya0e81ed92014-12-08 16:57:17 -0800114
shahshreyafac62b12015-01-20 16:16:13 -0800115 # TODO: Make this switch parameterizable
116 main.step( "Kill s28 " )
117 main.log.report( "Deleting s28" )
118 # FIXME: use new dynamic topo functions
119 main.Mininet1.delSwitch( "s28" )
120 main.log.info(
121 "Waiting " +
122 str( switchSleep ) +
123 " seconds for switch down to be discovered" )
124 time.sleep( switchSleep )
125 # Peek at the deleted switch
126 device = main.ONOS2.getDevice( dpid="0028" )
shahshreya0e81ed92014-12-08 16:57:17 -0800127 print "device = ", device
shahshreyafac62b12015-01-20 16:16:13 -0800128 if device[ u'available' ] == 'False':
129 case2Result = main.FALSE
shahshreya0e81ed92014-12-08 16:57:17 -0800130 else:
shahshreyafac62b12015-01-20 16:16:13 -0800131 case2Result = main.TRUE
132 utilities.assert_equals( expect=main.TRUE, actual=case2Result,
shahshreya9294c8d2015-01-21 15:54:16 -0800133 onpass="Switch down discovery successful",
134 onfail="Switch down discovery failed" )
shahshreya0e81ed92014-12-08 16:57:17 -0800135
shahshreyadcb08e82015-02-25 10:16:42 -0800136 def CASE101( self, main ):
shahshreyafac62b12015-01-20 16:16:13 -0800137 """
shahshreya4e13a062014-11-11 16:46:18 -0800138 Cleanup sequence:
shahshreyafac62b12015-01-20 16:16:13 -0800139 onos-service <nodeIp> stop
shahshreya4e13a062014-11-11 16:46:18 -0800140 onos-uninstall
141
142 TODO: Define rest of cleanup
shahshreya4e13a062014-11-11 16:46:18 -0800143
shahshreyafac62b12015-01-20 16:16:13 -0800144 """
145 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
shahshreya4e13a062014-11-11 16:46:18 -0800146
shahshreyafac62b12015-01-20 16:16:13 -0800147 main.case( "Cleaning up test environment" )
shahshreya4e13a062014-11-11 16:46:18 -0800148
shahshreyafac62b12015-01-20 16:16:13 -0800149 main.step( "Testing ONOS kill function" )
150 killResult = main.ONOSbench.onosKill( ONOS1Ip )
shahshreya4e13a062014-11-11 16:46:18 -0800151
shahshreyafac62b12015-01-20 16:16:13 -0800152 main.step( "Stopping ONOS service" )
153 stopResult = main.ONOSbench.onosStop( ONOS1Ip )
shahshreya4e13a062014-11-11 16:46:18 -0800154
shahshreyafac62b12015-01-20 16:16:13 -0800155 main.step( "Uninstalling ONOS service" )
156 uninstallResult = main.ONOSbench.onosUninstall()
shahshreya4e13a062014-11-11 16:46:18 -0800157
shahshreyafac62b12015-01-20 16:16:13 -0800158 case11Result = killResult and stopResult and uninstallResult
159 utilities.assert_equals( expect=main.TRUE, actual=case11Result,
shahshreya9294c8d2015-01-21 15:54:16 -0800160 onpass="Cleanup successful",
161 onfail="Cleanup failed" )
shahshreyafac62b12015-01-20 16:16:13 -0800162
163 def CASE3( self, main ):
164 """
shahshreya4e13a062014-11-11 16:46:18 -0800165 Test 'onos' command and its functionality in driver
shahshreyafac62b12015-01-20 16:16:13 -0800166 """
167 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
shahshreya4e13a062014-11-11 16:46:18 -0800168
shahshreyafac62b12015-01-20 16:16:13 -0800169 main.case( "Testing 'onos' command" )
shahshreya4e13a062014-11-11 16:46:18 -0800170
shahshreyafac62b12015-01-20 16:16:13 -0800171 main.step( "Sending command 'onos -w <onos-ip> system:name'" )
shahshreya4e13a062014-11-11 16:46:18 -0800172 cmdstr1 = "system:name"
shahshreyafac62b12015-01-20 16:16:13 -0800173 cmdResult1 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr1 )
174 main.log.info( "onos command returned: " + cmdResult1 )
shahshreya4e13a062014-11-11 16:46:18 -0800175
shahshreyafac62b12015-01-20 16:16:13 -0800176 main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
shahshreya4e13a062014-11-11 16:46:18 -0800177 cmdstr2 = "onos:topology"
shahshreyafac62b12015-01-20 16:16:13 -0800178 cmdResult2 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr2 )
179 main.log.info( "onos command returned: " + cmdResult2 )
shahshreya4e13a062014-11-11 16:46:18 -0800180
shahshreyafac62b12015-01-20 16:16:13 -0800181 def CASE20( self ):
182 """
shahshreyae6c7cf42014-11-26 16:39:01 -0800183 Exit from mininet cli
184 reinstall ONOS
shahshreyafac62b12015-01-20 16:16:13 -0800185 """
186 cellName = main.params[ 'ENV' ][ 'cellName' ]
187 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800188
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800189 main.log.report( "This testcase exits the mininet cli and reinstalls" +
190 "ONOS to switch over to Packet Optical topology" )
shahshreyafac62b12015-01-20 16:16:13 -0800191 main.log.report( "_____________________________________________" )
192 main.case( "Disconnecting mininet and restarting ONOS" )
193 main.step( "Disconnecting mininet and restarting ONOS" )
194 mininetDisconnect = main.Mininet1.disconnect()
shahshreya82ecd282015-02-05 16:48:03 -0800195 print "mininetDisconnect = ", mininetDisconnect
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800196
shahshreyafac62b12015-01-20 16:16:13 -0800197 main.step( "Removing raft logs before a clen installation of ONOS" )
198 main.ONOSbench.onosRemoveRaftLogs()
shahshreyae6c7cf42014-11-26 16:39:01 -0800199
shahshreyafac62b12015-01-20 16:16:13 -0800200 main.step( "Applying cell variable to environment" )
201 cellResult = main.ONOSbench.setCell( cellName )
202 verifyResult = main.ONOSbench.verifyCell()
203
204 onosInstallResult = main.ONOSbench.onosInstall()
205 if onosInstallResult == main.TRUE:
206 main.log.report( "Installing ONOS package successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800207 else:
shahshreyafac62b12015-01-20 16:16:13 -0800208 main.log.report( "Installing ONOS package failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800209
shahshreyafac62b12015-01-20 16:16:13 -0800210 onos1Isup = main.ONOSbench.isup()
211 if onos1Isup == main.TRUE:
212 main.log.report( "ONOS instance is up and ready" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800213 else:
shahshreyafac62b12015-01-20 16:16:13 -0800214 main.log.report( "ONOS instance may not be up" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800215
shahshreyafac62b12015-01-20 16:16:13 -0800216 main.step( "Starting ONOS service" )
217 startResult = main.ONOSbench.onosStart( ONOS1Ip )
shahshreyae6c7cf42014-11-26 16:39:01 -0800218
shahshreyafac62b12015-01-20 16:16:13 -0800219 main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
220 case20Result = mininetDisconnect and cellResult and verifyResult \
221 and onosInstallResult and onos1Isup and \
222 startResult
223 utilities.assert_equals(
224 expect=main.TRUE,
225 actual=case20Result,
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800226 onpass= "Exiting functionality mininet topology and reinstalling" +
227 " ONOS successful",
228 onfail= "Exiting functionality mininet topology and reinstalling" +
229 " ONOS failed" )
shahshreyafac62b12015-01-20 16:16:13 -0800230
231 def CASE21( self, main ):
232 """
233 On ONOS bench, run this command:
shahshreya1937ec12015-04-03 15:35:48 -0700234 sudo -E python ~/onos/tools/test/topos/opticalTest.py -OC1
235 which spawns packet optical topology and copies the links
shahshreyafac62b12015-01-20 16:16:13 -0800236 json file to the onos instance.
237 Note that in case of Packet Optical, the links are not learnt
238 from the topology, instead the links are learnt
shahshreyae6c7cf42014-11-26 16:39:01 -0800239 from the json config file
shahshreyafac62b12015-01-20 16:16:13 -0800240 """
241 main.log.report(
242 "This testcase starts the packet layer topology and REST" )
243 main.log.report( "_____________________________________________" )
244 main.case( "Starting LINC-OE and other components" )
245 main.step( "Starting LINC-OE and other components" )
shahshreya1937ec12015-04-03 15:35:48 -0700246 appInstallResult = main.ONOS2.featureInstall( "onos-app-optical" )
shahshreyafac62b12015-01-20 16:16:13 -0800247 opticalMnScript = main.LincOE2.runOpticalMnScript()
shahshreyae6c7cf42014-11-26 16:39:01 -0800248
shahshreya1937ec12015-04-03 15:35:48 -0700249 case21Result = opticalMnScript and appInstallResult
shahshreyafac62b12015-01-20 16:16:13 -0800250 utilities.assert_equals(
251 expect=main.TRUE,
252 actual=case21Result,
253 onpass="Packet optical topology spawned successsfully",
254 onfail="Packet optical topology spawning failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800255
shahshreyafac62b12015-01-20 16:16:13 -0800256 def CASE22( self, main ):
257 """
shahshreya1937ec12015-04-03 15:35:48 -0700258 Curretly we use, 10 optical switches(ROADM's) and
259 6 packet layer mininet switches each with one host.
260 Therefore, the roadmCount variable = 10,
261 packetLayerSWCount variable = 6, hostCount=6 and
262 links=42.
263 All this is hardcoded in the testcase. If the topology changes,
shahshreyafac62b12015-01-20 16:16:13 -0800264 these hardcoded values need to be changed
265 """
266 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800267 "This testcase compares the optical+packet topology against what" +
268 " is expected" )
shahshreyafac62b12015-01-20 16:16:13 -0800269 main.case( "Topology comparision" )
270 main.step( "Topology comparision" )
271 main.ONOS3.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
272 devicesResult = main.ONOS3.devices( jsonFormat=False )
shahshreyae6c7cf42014-11-26 16:39:01 -0800273
shahshreyafac62b12015-01-20 16:16:13 -0800274 print "devices_result = ", devicesResult
275 devicesLinewise = devicesResult.split( "\n" )
shahshreya82ecd282015-02-05 16:48:03 -0800276 devicesLinewise = devicesLinewise[ 1: ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800277 roadmCount = 0
278 packetLayerSWCount = 0
shahshreyafac62b12015-01-20 16:16:13 -0800279 for line in devicesLinewise:
280 components = line.split( "," )
281 availability = components[ 1 ].split( "=" )[ 1 ]
282 type = components[ 3 ].split( "=" )[ 1 ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800283 if availability == 'true' and type == 'ROADM':
284 roadmCount += 1
shahshreyafac62b12015-01-20 16:16:13 -0800285 elif availability == 'true' and type == 'SWITCH':
shahshreyae6c7cf42014-11-26 16:39:01 -0800286 packetLayerSWCount += 1
shahshreya1937ec12015-04-03 15:35:48 -0700287 if roadmCount == 10:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800288 print "Number of Optical Switches = %d and is" % roadmCount +\
289 " correctly detected"
shahshreyafac62b12015-01-20 16:16:13 -0800290 main.log.info(
291 "Number of Optical Switches = " +
292 str( roadmCount ) +
293 " and is correctly detected" )
294 opticalSWResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800295 else:
shahshreyafac62b12015-01-20 16:16:13 -0800296 print "Number of Optical Switches = %d and is wrong" % roadmCount
297 main.log.info(
298 "Number of Optical Switches = " +
299 str( roadmCount ) +
300 " and is wrong" )
301 opticalSWResult = main.FALSE
shahshreyae6c7cf42014-11-26 16:39:01 -0800302
shahshreya1937ec12015-04-03 15:35:48 -0700303 if packetLayerSWCount == 6:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800304 print "Number of Packet layer or mininet Switches = %d "\
305 % packetLayerSWCount + "and is correctly detected"
shahshreyafac62b12015-01-20 16:16:13 -0800306 main.log.info(
307 "Number of Packet layer or mininet Switches = " +
308 str( packetLayerSWCount ) +
309 " and is correctly detected" )
310 packetSWResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800311 else:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800312 print "Number of Packet layer or mininet Switches = %d and"\
313 % packetLayerSWCount + " is wrong"
shahshreyafac62b12015-01-20 16:16:13 -0800314 main.log.info(
315 "Number of Packet layer or mininet Switches = " +
316 str( packetLayerSWCount ) +
317 " and is wrong" )
318 packetSWResult = main.FALSE
shahshreyae6c7cf42014-11-26 16:39:01 -0800319 print "_________________________________"
shahshreyafac62b12015-01-20 16:16:13 -0800320
321 linksResult = main.ONOS3.links( jsonFormat=False )
322 print "links_result = ", linksResult
shahshreyae6c7cf42014-11-26 16:39:01 -0800323 print "_________________________________"
shahshreya1937ec12015-04-03 15:35:48 -0700324 linkActiveCount = linksResult.count("state=ACTIVE")
325 main.log.info( "linkActiveCount = " + str( linkActiveCount ))
326 if linkActiveCount == 42:
327 linkActiveResult = main.TRUE
328 main.log.info(
329 "Number of links in ACTIVE state are correct")
330 else:
331 linkActiveResult = main.FALSE
332 main.log.info(
333 "Number of links in ACTIVE state are wrong")
shahshreyafac62b12015-01-20 16:16:13 -0800334
335 # NOTE:Since only point intents are added, there is no
336 # requirement to discover the hosts
337 # Therfore, the below portion of the code is commented.
338 """
shahshreyae6c7cf42014-11-26 16:39:01 -0800339 #Discover hosts using pingall
shahshreyafac62b12015-01-20 16:16:13 -0800340 pingallResult = main.LincOE2.pingall()
341
342 hostsResult = main.ONOS3.hosts( jsonFormat=False )
343 main.log.info( "hosts_result = "+hostsResult )
344 main.log.info( "_________________________________" )
345 hostsLinewise = hostsResult.split( "\n" )
346 hostsLinewise = hostsLinewise[ 1:-1 ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800347 hostCount = 0
shahshreyafac62b12015-01-20 16:16:13 -0800348 for line in hostsLinewise:
349 hostid = line.split( "," )[ 0 ].split( "=" )[ 1 ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800350 hostCount +=1
351 if hostCount ==2:
352 print "Number of hosts = %d and is correctly detected" %hostCount
shahshreyafac62b12015-01-20 16:16:13 -0800353 main.log.info( "Number of hosts = " + str( hostCount ) +" and \
354 is correctly detected" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800355 hostDiscovery = main.TRUE
356 else:
357 print "Number of hosts = %d and is wrong" %hostCount
shahshreyafac62b12015-01-20 16:16:13 -0800358 main.log.info( "Number of hosts = " + str( hostCount ) +" and \
359 is wrong" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800360 hostDiscovery = main.FALSE
shahshreyafac62b12015-01-20 16:16:13 -0800361 """
shahshreya1937ec12015-04-03 15:35:48 -0700362 case22Result = opticalSWResult and packetSWResult and \
363 linkActiveResult
shahshreyafac62b12015-01-20 16:16:13 -0800364 utilities.assert_equals(
365 expect=main.TRUE,
366 actual=case22Result,
367 onpass="Packet optical topology discovery successful",
368 onfail="Packet optical topology discovery failed" )
shahshreya0e81ed92014-12-08 16:57:17 -0800369
shahshreyafac62b12015-01-20 16:16:13 -0800370 def CASE23( self, main ):
shahshreyae6c7cf42014-11-26 16:39:01 -0800371 import time
shahshreyafac62b12015-01-20 16:16:13 -0800372 """
373 Add bidirectional point intents between 2 packet layer( mininet )
374 devices and
shahshreyae6c7cf42014-11-26 16:39:01 -0800375 ping mininet hosts
shahshreyafac62b12015-01-20 16:16:13 -0800376 """
377 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800378 "This testcase adds bidirectional point intents between 2 " +
379 "packet layer( mininet ) devices and ping mininet hosts" )
shahshreyafac62b12015-01-20 16:16:13 -0800380 main.case( "Topology comparision" )
381 main.step( "Adding point intents" )
382 ptpIntentResult = main.ONOS3.addPointIntent(
383 "of:0000ffffffff0001/1",
shahshreya1937ec12015-04-03 15:35:48 -0700384 "of:0000ffffffff0005/1" )
shahshreyafac62b12015-01-20 16:16:13 -0800385 if ptpIntentResult == main.TRUE:
386 main.ONOS3.intents( jsonFormat=False )
387 main.log.info( "Point to point intent install successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800388
shahshreyafac62b12015-01-20 16:16:13 -0800389 ptpIntentResult = main.ONOS3.addPointIntent(
shahshreya1937ec12015-04-03 15:35:48 -0700390 "of:0000ffffffff0005/1",
shahshreyafac62b12015-01-20 16:16:13 -0800391 "of:0000ffffffff0001/1" )
392 if ptpIntentResult == main.TRUE:
393 main.ONOS3.intents( jsonFormat=False )
394 main.log.info( "Point to point intent install successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800395
shahshreya1937ec12015-04-03 15:35:48 -0700396 time.sleep( 30 )
shahshreyae6c7cf42014-11-26 16:39:01 -0800397 flowHandle = main.ONOS3.flows()
shahshreyafac62b12015-01-20 16:16:13 -0800398 main.log.info( "flows :" + flowHandle )
shahshreyae6c7cf42014-11-26 16:39:01 -0800399
400 # Sleep for 30 seconds to provide time for the intent state to change
shahshreya1937ec12015-04-03 15:35:48 -0700401 time.sleep( 60 )
shahshreyafac62b12015-01-20 16:16:13 -0800402 intentHandle = main.ONOS3.intents( jsonFormat=False )
403 main.log.info( "intents :" + intentHandle )
404
405 PingResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800406 count = 1
shahshreya1937ec12015-04-03 15:35:48 -0700407 main.log.info( "\n\nh1 is Pinging h5" )
408 ping = main.LincOE2.pingHostOptical( src="h1", target="h5" )
shahshreyafac62b12015-01-20 16:16:13 -0800409 # ping = main.LincOE2.pinghost()
410 if ping == main.FALSE and count < 5:
411 count += 1
412 PingResult = main.FALSE
413 main.log.info(
shahshreya1937ec12015-04-03 15:35:48 -0700414 "Ping between h1 and h5 failed. Making attempt number " +
shahshreyafac62b12015-01-20 16:16:13 -0800415 str( count ) +
416 " in 2 seconds" )
417 time.sleep( 2 )
418 elif ping == main.FALSE:
shahshreya1937ec12015-04-03 15:35:48 -0700419 main.log.info( "All ping attempts between h1 and h5 have failed" )
shahshreyafac62b12015-01-20 16:16:13 -0800420 PingResult = main.FALSE
421 elif ping == main.TRUE:
shahshreya1937ec12015-04-03 15:35:48 -0700422 main.log.info( "Ping test between h1 and h5 passed!" )
shahshreyafac62b12015-01-20 16:16:13 -0800423 PingResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800424 else:
shahshreyafac62b12015-01-20 16:16:13 -0800425 main.log.info( "Unknown error" )
426 PingResult = main.ERROR
shahshreyae6c7cf42014-11-26 16:39:01 -0800427
shahshreyafac62b12015-01-20 16:16:13 -0800428 if PingResult == main.FALSE:
429 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800430 "Point intents for packet optical have not ben installed" +
431 " correctly. Cleaning up" )
shahshreyafac62b12015-01-20 16:16:13 -0800432 if PingResult == main.TRUE:
433 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800434 "Point Intents for packet optical have been " +
435 "installed correctly" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800436
shahshreyafac62b12015-01-20 16:16:13 -0800437 case23Result = PingResult
438 utilities.assert_equals(
439 expect=main.TRUE,
440 actual=case23Result,
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800441 onpass= "Point intents addition for packet optical and" +
442 "Pingall Test successful",
443 onfail= "Point intents addition for packet optical and" +
444 "Pingall Test NOT successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800445
shahshreyafac62b12015-01-20 16:16:13 -0800446 def CASE24( self, main ):
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800447 import time
448 import json
shahshreyafac62b12015-01-20 16:16:13 -0800449 """
shahshreya1937ec12015-04-03 15:35:48 -0700450 LINC uses its own switch IDs. You can use the following
451 command on the LINC console to find the mapping between
452 DPIDs and LINC IDs.
453 rp(application:get_all_key(linc)).
454
shahshreyafac62b12015-01-20 16:16:13 -0800455 Test Rerouting of Packet Optical by bringing a port down
shahshreya1937ec12015-04-03 15:35:48 -0700456 ( port 20 ) of a switch( switchID=1, or LincOE switchID =9 ),
457 so that link
458 ( between switch1 port20 - switch5 port50 ) is inactive
shahshreyafac62b12015-01-20 16:16:13 -0800459 and do a ping test. If rerouting is successful,
460 ping should pass. also check the flows
461 """
462 main.log.report(
463 "This testcase tests rerouting and pings mininet hosts" )
464 main.case( "Test rerouting and pings mininet hosts" )
shahshreya1937ec12015-04-03 15:35:48 -0700465 main.step( "Attach to the Linc-OE session" )
466 attachConsole = main.LincOE1.attachLincOESession()
467 print "attachConsole = ", attachConsole
468
shahshreyafac62b12015-01-20 16:16:13 -0800469 main.step( "Bring a port down and verify the link state" )
shahshreya1937ec12015-04-03 15:35:48 -0700470 main.LincOE1.portDown( swId="9", ptId="20" )
shahshreyafac62b12015-01-20 16:16:13 -0800471 linksNonjson = main.ONOS3.links( jsonFormat=False )
472 main.log.info( "links = " + linksNonjson )
shahshreyae6c7cf42014-11-26 16:39:01 -0800473
shahshreya1937ec12015-04-03 15:35:48 -0700474 linkInactiveCount = linksNonjson.count("state=INACTIVE")
475 main.log.info( "linkInactiveCount = " + str( linkInactiveCount ))
476 if linkInactiveCount == 2:
477 main.log.info(
478 "Number of links in INACTIVE state are correct")
479 else:
480 main.log.info(
481 "Number of links in INACTIVE state are wrong")
482
shahshreya0e81ed92014-12-08 16:57:17 -0800483 links = main.ONOS3.links()
shahshreyafac62b12015-01-20 16:16:13 -0800484 main.log.info( "links = " + links )
485
486 linksResult = json.loads( links )
487 linksStateResult = main.FALSE
488 for item in linksResult:
489 if item[ 'src' ][ 'device' ] == "of:0000ffffffffff01" and item[
shahshreya1937ec12015-04-03 15:35:48 -0700490 'src' ][ 'port' ] == "20":
491 if item[ 'dst' ][ 'device' ] == "of:0000ffffffffff05" and item[
492 'dst' ][ 'port' ] == "50":
shahshreyafac62b12015-01-20 16:16:13 -0800493 linksState = item[ 'state' ]
494 if linksState == "INACTIVE":
495 main.log.info(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800496 "Links state is inactive as expected due to one" +
497 " of the ports being down" )
shahshreyafac62b12015-01-20 16:16:13 -0800498 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800499 "Links state is inactive as expected due to one" +
500 " of the ports being down" )
shahshreyafac62b12015-01-20 16:16:13 -0800501 linksStateResult = main.TRUE
shahshreya0e81ed92014-12-08 16:57:17 -0800502 break
503 else:
shahshreyafac62b12015-01-20 16:16:13 -0800504 main.log.info(
505 "Links state is not inactive as expected" )
506 main.log.report(
507 "Links state is not inactive as expected" )
508 linksStateResult = main.FALSE
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800509
shahshreyafac62b12015-01-20 16:16:13 -0800510 print "links_state_result = ", linksStateResult
511 time.sleep( 10 )
shahshreya0e81ed92014-12-08 16:57:17 -0800512 flowHandle = main.ONOS3.flows()
shahshreyafac62b12015-01-20 16:16:13 -0800513 main.log.info( "flows :" + flowHandle )
shahshreya0e81ed92014-12-08 16:57:17 -0800514
shahshreyafac62b12015-01-20 16:16:13 -0800515 main.step( "Verify Rerouting by a ping test" )
516 PingResult = main.TRUE
517 count = 1
shahshreya1937ec12015-04-03 15:35:48 -0700518 main.log.info( "\n\nh1 is Pinging h5" )
519 ping = main.LincOE2.pingHostOptical( src="h1", target="h5" )
shahshreyafac62b12015-01-20 16:16:13 -0800520 # ping = main.LincOE2.pinghost()
521 if ping == main.FALSE and count < 5:
522 count += 1
523 PingResult = main.FALSE
524 main.log.info(
shahshreya1937ec12015-04-03 15:35:48 -0700525 "Ping between h1 and h5 failed. Making attempt number " +
shahshreyafac62b12015-01-20 16:16:13 -0800526 str( count ) +
527 " in 2 seconds" )
528 time.sleep( 2 )
529 elif ping == main.FALSE:
shahshreya1937ec12015-04-03 15:35:48 -0700530 main.log.info( "All ping attempts between h1 and h5 have failed" )
shahshreyafac62b12015-01-20 16:16:13 -0800531 PingResult = main.FALSE
532 elif ping == main.TRUE:
shahshreya1937ec12015-04-03 15:35:48 -0700533 main.log.info( "Ping test between h1 and h5 passed!" )
shahshreyafac62b12015-01-20 16:16:13 -0800534 PingResult = main.TRUE
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800535 else:
shahshreyafac62b12015-01-20 16:16:13 -0800536 main.log.info( "Unknown error" )
537 PingResult = main.ERROR
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800538
shahshreyafac62b12015-01-20 16:16:13 -0800539 if PingResult == main.TRUE:
540 main.log.report( "Ping test successful " )
541 if PingResult == main.FALSE:
542 main.log.report( "Ping test failed" )
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800543
shahshreyafac62b12015-01-20 16:16:13 -0800544 case24Result = PingResult and linksStateResult
545 utilities.assert_equals( expect=main.TRUE, actual=case24Result,
shahshreya9294c8d2015-01-21 15:54:16 -0800546 onpass="Packet optical rerouting successful",
547 onfail="Packet optical rerouting failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800548
shahshreyafac62b12015-01-20 16:16:13 -0800549 def CASE4( self, main ):
shahshreya4e13a062014-11-11 16:46:18 -0800550 import re
551 import time
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800552 main.log.report( "This testcase is testing the assignment of" +
553 " all the switches to all the controllers and" +
shahshreyadcb08e82015-02-25 10:16:42 -0800554 " discovering the hosts in reactive mode" )
shahshreyafac62b12015-01-20 16:16:13 -0800555 main.log.report( "__________________________________" )
556 main.case( "Pingall Test" )
557 main.step( "Assigning switches to controllers" )
558 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
559 ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
560 for i in range( 1, 29 ):
561 if i == 1:
562 main.Mininet1.assignSwController(
563 sw=str( i ),
564 ip1=ONOS1Ip,
565 port1=ONOS1Port )
566 elif i >= 2 and i < 5:
567 main.Mininet1.assignSwController(
568 sw=str( i ),
569 ip1=ONOS1Ip,
570 port1=ONOS1Port )
571 elif i >= 5 and i < 8:
572 main.Mininet1.assignSwController(
573 sw=str( i ),
574 ip1=ONOS1Ip,
575 port1=ONOS1Port )
576 elif i >= 8 and i < 18:
577 main.Mininet1.assignSwController(
578 sw=str( i ),
579 ip1=ONOS1Ip,
580 port1=ONOS1Port )
581 elif i >= 18 and i < 28:
582 main.Mininet1.assignSwController(
583 sw=str( i ),
584 ip1=ONOS1Ip,
585 port1=ONOS1Port )
shahshreya4e13a062014-11-11 16:46:18 -0800586 else:
shahshreyafac62b12015-01-20 16:16:13 -0800587 main.Mininet1.assignSwController(
588 sw=str( i ),
589 ip1=ONOS1Ip,
590 port1=ONOS1Port )
591 SwitchMastership = main.TRUE
592 for i in range( 1, 29 ):
593 if i == 1:
594 response = main.Mininet1.getSwController( "s" + str( i ) )
595 print( "Response is " + str( response ) )
596 if re.search( "tcp:" + ONOS1Ip, response ):
597 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800598 else:
shahshreyafac62b12015-01-20 16:16:13 -0800599 SwitchMastership = main.FALSE
600 elif i >= 2 and i < 5:
601 response = main.Mininet1.getSwController( "s" + str( i ) )
602 print( "Response is " + str( response ) )
603 if re.search( "tcp:" + ONOS1Ip, response ):
604 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800605 else:
shahshreyafac62b12015-01-20 16:16:13 -0800606 SwitchMastership = main.FALSE
607 elif i >= 5 and i < 8:
608 response = main.Mininet1.getSwController( "s" + str( i ) )
609 print( "Response is " + str( response ) )
610 if re.search( "tcp:" + ONOS1Ip, response ):
611 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800612 else:
shahshreyafac62b12015-01-20 16:16:13 -0800613 SwitchMastership = main.FALSE
614 elif i >= 8 and i < 18:
615 response = main.Mininet1.getSwController( "s" + str( i ) )
616 print( "Response is " + str( response ) )
617 if re.search( "tcp:" + ONOS1Ip, response ):
618 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800619 else:
shahshreyafac62b12015-01-20 16:16:13 -0800620 SwitchMastership = main.FALSE
621 elif i >= 18 and i < 28:
622 response = main.Mininet1.getSwController( "s" + str( i ) )
623 print( "Response is " + str( response ) )
624 if re.search( "tcp:" + ONOS1Ip, response ):
625 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800626 else:
shahshreyafac62b12015-01-20 16:16:13 -0800627 SwitchMastership = main.FALSE
shahshreya4e13a062014-11-11 16:46:18 -0800628 else:
shahshreyafac62b12015-01-20 16:16:13 -0800629 response = main.Mininet1.getSwController( "s" + str( i ) )
630 print( "Response is" + str( response ) )
631 if re.search( "tcp:" + ONOS1Ip, response ):
632 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800633 else:
shahshreyafac62b12015-01-20 16:16:13 -0800634 SwitchMastership = main.FALSE
shahshreya4e13a062014-11-11 16:46:18 -0800635
shahshreyafac62b12015-01-20 16:16:13 -0800636 if SwitchMastership == main.TRUE:
637 main.log.report( "Controller assignmnet successful" )
shahshreya4e13a062014-11-11 16:46:18 -0800638 else:
shahshreyafac62b12015-01-20 16:16:13 -0800639 main.log.report( "Controller assignmnet failed" )
640 utilities.assert_equals(
641 expect=main.TRUE,
642 actual=SwitchMastership,
643 onpass="MasterControllers assigned correctly" )
644 """
645 for i in range ( 1,29 ):
646 main.Mininet1.assignSwController( sw=str( i ),count=5,
647 ip1=ONOS1Ip,port1=ONOS1Port,
648 ip2=ONOS2Ip,port2=ONOS2Port,
649 ip3=ONOS3Ip,port3=ONOS3Port,
650 ip4=ONOS4Ip,port4=ONOS4Port,
651 ip5=ONOS5Ip,port5=ONOS5Port )
652 """
653 # REACTIVE FWD test
shahshreya4e13a062014-11-11 16:46:18 -0800654
shahshreyafac62b12015-01-20 16:16:13 -0800655 main.step( "Get list of hosts from Mininet" )
656 hostList = main.Mininet1.getHosts()
657 main.log.info( hostList )
shahshreya4e13a062014-11-11 16:46:18 -0800658
shahshreyafac62b12015-01-20 16:16:13 -0800659 main.step( "Get host list in ONOS format" )
660 hostOnosList = main.ONOS2.getHostsId( hostList )
661 main.log.info( hostOnosList )
662 # time.sleep( 5 )
663
664 main.step( "Pingall" )
665 pingResult = main.FALSE
shahshreya82ecd282015-02-05 16:48:03 -0800666 time1 = time.time()
667 pingResult = main.Mininet1.pingall()
668 time2 = time.time()
669 print "Time for pingall: %2f seconds" % ( time2 - time1 )
shahshreya4e13a062014-11-11 16:46:18 -0800670
shahshreyafac62b12015-01-20 16:16:13 -0800671 # Start onos cli again because u might have dropped out of
672 # onos prompt to the shell prompt
673 # if there was no activity
674 main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
675
676 case4Result = SwitchMastership and pingResult
677 if pingResult == main.TRUE:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800678 main.log.report( "Pingall Test in reactive mode to" +
679 " discover the hosts successful" )
shahshreya4e13a062014-11-11 16:46:18 -0800680 else:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800681 main.log.report( "Pingall Test in reactive mode to" +
682 " discover the hosts failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800683
shahshreyafac62b12015-01-20 16:16:13 -0800684 utilities.assert_equals(
685 expect=main.TRUE,
686 actual=case4Result,
687 onpass="Controller assignment and Pingall Test successful",
688 onfail="Controller assignment and Pingall Test NOT successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800689
shahshreyafac62b12015-01-20 16:16:13 -0800690 def CASE10( self ):
691 main.log.report(
692 "This testcase uninstalls the reactive forwarding app" )
693 main.log.report( "__________________________________" )
694 main.case( "Uninstalling reactive forwarding app" )
695 # Unistall onos-app-fwd app to disable reactive forwarding
696 appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
697 main.log.info( "onos-app-fwd uninstalled" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800698
shahshreyafac62b12015-01-20 16:16:13 -0800699 # After reactive forwarding is disabled, the reactive flows on
700 # switches timeout in 10-15s
701 # So sleep for 15s
702 time.sleep( 15 )
shahshreyae6c7cf42014-11-26 16:39:01 -0800703
704 flows = main.ONOS2.flows()
shahshreyafac62b12015-01-20 16:16:13 -0800705 main.log.info( flows )
shahshreyae6c7cf42014-11-26 16:39:01 -0800706
shahshreyafac62b12015-01-20 16:16:13 -0800707 case10Result = appUninstallResult
708 utilities.assert_equals(
709 expect=main.TRUE,
710 actual=case10Result,
711 onpass="Reactive forwarding app uninstallation successful",
712 onfail="Reactive forwarding app uninstallation failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800713
shahshreyadcb08e82015-02-25 10:16:42 -0800714
715 def CASE11( self ):
716 # NOTE: This testcase require reactive forwarding mode enabled
717 # NOTE: in the beginning and then uninstall it before adding
718 # NOTE: point intents. Again the app is installed so that
719 # NOTE: testcase 10 can be ran successively
720 import time
721 main.log.report(
722 "This testcase moves a host from one switch to another to add" +
723 "point intents between them and then perform ping" )
724 main.log.report( "__________________________________" )
725 main.log.info( "Moving host from one switch to another" )
726 main.case( "Moving host from a device and attach it to another device" )
727 main.step( "Moving host h9 from device s9 and attach it to s8" )
728 main.Mininet1.moveHost(host = 'h9', oldSw = 's9', newSw = 's8')
729
730 time.sleep(15) #Time delay to have all the flows ready
731 main.step( "Pingall" )
732 pingResult = main.FALSE
733 time1 = time.time()
734 pingResult = main.Mininet1.pingall()
735 time2 = time.time()
736 print "Time for pingall: %2f seconds" % ( time2 - time1 )
737
738 hosts = main.ONOS2.hosts( jsonFormat = False )
739 main.log.info( hosts )
740
741 main.case( "Uninstalling reactive forwarding app" )
742 # Unistall onos-app-fwd app to disable reactive forwarding
743 appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
744 main.log.info( "onos-app-fwd uninstalled" )
745
746 main.step( "Add point intents between hosts on the same device")
747 ptpIntentResult = main.ONOS2.addPointIntent(
748 "of:0000000000003008/1",
749 "of:0000000000003008/3" )
750 if ptpIntentResult == main.TRUE:
751 getIntentResult = main.ONOS2.intents()
752 main.log.info( "Point to point intent install successful" )
753 # main.log.info( getIntentResult )
754
755 ptpIntentResult = main.ONOS2.addPointIntent(
756 "of:0000000000003008/3",
757 "of:0000000000003008/1" )
758 if ptpIntentResult == main.TRUE:
759 getIntentResult = main.ONOS2.intents()
760 main.log.info( "Point to point intent install successful" )
761 # main.log.info( getIntentResult )
762
763 main.case( "Ping hosts on the same devices" )
764 ping = main.Mininet1.pingHost( src = 'h8', target = 'h9' )
765
766 '''
767 main.case( "Installing reactive forwarding app" )
768 # Install onos-app-fwd app to enable reactive forwarding
769 appUninstallResult = main.ONOS2.featureInstall( "onos-app-fwd" )
770 main.log.info( "onos-app-fwd installed" )
771 '''
772
773 if ping == main.FALSE:
774 main.log.report(
775 "Point intents for hosts on same devices haven't" +
776 " been installed correctly. Cleaning up" )
777 if ping == main.TRUE:
778 main.log.report(
779 "Point intents for hosts on same devices" +
780 "installed correctly. Cleaning up" )
781
782 case11Result = ping and pingResult
783 utilities.assert_equals(
shahshreya74cca802015-02-26 12:24:01 -0800784 expect = main.TRUE,
785 actual = case11Result,
786 onpass = "Point intents for hosts on same devices" +
shahshreyadcb08e82015-02-25 10:16:42 -0800787 "Ping Test successful",
shahshreya74cca802015-02-26 12:24:01 -0800788 onfail = "Point intents for hosts on same devices" +
shahshreyadcb08e82015-02-25 10:16:42 -0800789 "Ping Test NOT successful" )
shahshreya74cca802015-02-26 12:24:01 -0800790
791
792 def CASE12( self ):
793 """
shahshreya1937ec12015-04-03 15:35:48 -0700794 Verify the default flows on each switch in proactive mode
shahshreya74cca802015-02-26 12:24:01 -0800795 """
796 main.log.report( "This testcase is verifying num of default" +
797 " flows on each switch" )
798 main.log.report( "__________________________________" )
799 main.case( "Verify num of default flows on each switch" )
800 main.step( "Obtaining the device id's and flowrule count on them" )
801
802 case12Result = main.TRUE
803 idList = main.ONOS2.getAllDevicesId()
804 for id in idList:
805 count = main.ONOS2.FlowAddedCount( id )
shahshreya531e2b52015-02-26 12:40:46 -0800806 main.log.info("count = " +count)
807 if int(count) != 3:
shahshreya74cca802015-02-26 12:24:01 -0800808 case12Result = main.FALSE
809 break
shahshreya74cca802015-02-26 12:24:01 -0800810 utilities.assert_equals(
811 expect=main.TRUE,
812 actual=case12Result,
813 onpass = "Expected default num of flows exist",
814 onfail = "Expected default num of flows do not exist")
815
816
shahshreyadcb08e82015-02-25 10:16:42 -0800817
818
shahshreyafac62b12015-01-20 16:16:13 -0800819 def CASE6( self ):
shahshreyadcb08e82015-02-25 10:16:42 -0800820 import time
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800821 main.log.report( "This testcase is testing the addition of" +
822 " host intents and then does pingall" )
shahshreyafac62b12015-01-20 16:16:13 -0800823 main.log.report( "__________________________________" )
824 main.case( "Obtaining host id's" )
825 main.step( "Get hosts" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800826 hosts = main.ONOS2.hosts()
shahshreyafac62b12015-01-20 16:16:13 -0800827 main.log.info( hosts )
shahshreya4e13a062014-11-11 16:46:18 -0800828
shahshreyafac62b12015-01-20 16:16:13 -0800829 main.step( "Get all devices id" )
830 devicesIdList = main.ONOS2.getAllDevicesId()
831 main.log.info( devicesIdList )
shahshreya4e13a062014-11-11 16:46:18 -0800832
shahshreyafac62b12015-01-20 16:16:13 -0800833 # ONOS displays the hosts in hex format unlike mininet which does
834 # in decimal format
835 # So take care while adding intents
836 """
837 main.step( "Add host-to-host intents for mininet hosts h8 and h18 or
838 ONOS hosts h8 and h12" )
839 hthIntentResult = main.ONOS2.addHostIntent(
840 "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
841 hthIntentResult = main.ONOS2.addHostIntent(
842 "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
843 hthIntentResult = main.ONOS2.addHostIntent(
844 "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
845 hthIntentResult = main.ONOS2.addHostIntent(
846 "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
847 hthIntentResult = main.ONOS2.addHostIntent(
848 "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
849 hthIntentResult = main.ONOS2.addHostIntent(
850 "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
851 hthIntentResult = main.ONOS2.addHostIntent(
852 "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
853 hthIntentResult = main.ONOS2.addHostIntent(
854 "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
855 hthIntentResult = main.ONOS2.addHostIntent(
856 "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
857 hthIntentResult = main.ONOS2.addHostIntent(
858 "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
859 print "______________________________________________________"
860 """
861 for i in range( 8, 18 ):
862 main.log.info(
863 "Adding host intent between h" + str( i ) +
864 " and h" + str( i + 10 ) )
865 host1 = "00:00:00:00:00:" + \
866 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
867 host2 = "00:00:00:00:00:" + \
868 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
869 # NOTE: get host can return None
shahshreya1937ec12015-04-03 15:35:48 -0700870 if host1:
871 host1Id = main.ONOS2.getHost( host1 )[ 'id' ]
872 if host2:
873 host2Id = main.ONOS2.getHost( host2 )[ 'id' ]
874 if host1Id and host2Id:
875 main.ONOS2.addHostIntent( host1Id, host2Id )
shahshreyafac62b12015-01-20 16:16:13 -0800876
877 time.sleep( 10 )
878 hIntents = main.ONOS2.intents( jsonFormat=False )
879 main.log.info( "intents:" + hIntents )
shahshreyadcb08e82015-02-25 10:16:42 -0800880 flows = main.ONOS2.flows()
881 main.log.info( "flows:" + flows )
shahshreya4e13a062014-11-11 16:46:18 -0800882
883 count = 1
884 i = 8
shahshreyafac62b12015-01-20 16:16:13 -0800885 PingResult = main.TRUE
886 # while i<10:
887 while i < 18:
888 main.log.info(
889 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
890 ping = main.Mininet1.pingHost(
891 src="h" + str( i ), target="h" + str( i + 10 ) )
892 if ping == main.FALSE and count < 5:
893 count += 1
894 # i = 8
895 PingResult = main.FALSE
896 main.log.report( "Ping between h" +
897 str( i ) +
898 " and h" +
899 str( i +
900 10 ) +
901 " failed. Making attempt number " +
902 str( count ) +
903 " in 2 seconds" )
904 time.sleep( 2 )
905 elif ping == main.FALSE:
906 main.log.report( "All ping attempts between h" +
907 str( i ) +
908 " and h" +
909 str( i +
910 10 ) +
911 "have failed" )
912 i = 19
913 PingResult = main.FALSE
914 elif ping == main.TRUE:
915 main.log.info( "Ping test between h" +
916 str( i ) +
917 " and h" +
918 str( i +
919 10 ) +
920 "passed!" )
921 i += 1
922 PingResult = main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800923 else:
shahshreyafac62b12015-01-20 16:16:13 -0800924 main.log.info( "Unknown error" )
925 PingResult = main.ERROR
926 if PingResult == main.FALSE:
927 main.log.report(
shahshreya9294c8d2015-01-21 15:54:16 -0800928 "Ping all test after Host intent addition failed.Cleaning up" )
shahshreyafac62b12015-01-20 16:16:13 -0800929 # main.cleanup()
930 # main.exit()
931 if PingResult == main.TRUE:
932 main.log.report(
933 "Ping all test after Host intent addition successful" )
shahshreya4e13a062014-11-11 16:46:18 -0800934
shahshreyafac62b12015-01-20 16:16:13 -0800935 case6Result = PingResult
936 utilities.assert_equals(
937 expect=main.TRUE,
938 actual=case6Result,
939 onpass="Pingall Test after Host intents addition successful",
940 onfail="Pingall Test after Host intents addition failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800941
shahshreyafac62b12015-01-20 16:16:13 -0800942 def CASE5( self, main ):
shahshreya4e13a062014-11-11 16:46:18 -0800943 import json
shahshreyafac62b12015-01-20 16:16:13 -0800944 # assumes that sts is already in you PYTHONPATH
shahshreya9294c8d2015-01-21 15:54:16 -0800945 from sts.topology.teston_topology import TestONTopology
shahshreyafac62b12015-01-20 16:16:13 -0800946 # main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800947 main.log.report( "This testcase is testing if all ONOS nodes" +
948 " are in topology sync with mininet" )
shahshreyafac62b12015-01-20 16:16:13 -0800949 main.log.report( "__________________________________" )
950 main.case( "Comparing Mininet topology with the topology of ONOS" )
951 main.step( "Start continuous pings" )
952 main.Mininet2.pingLong(
953 src=main.params[ 'PING' ][ 'source1' ],
954 target=main.params[ 'PING' ][ 'target1' ],
955 pingTime=500 )
956 main.Mininet2.pingLong(
957 src=main.params[ 'PING' ][ 'source2' ],
958 target=main.params[ 'PING' ][ 'target2' ],
959 pingTime=500 )
960 main.Mininet2.pingLong(
961 src=main.params[ 'PING' ][ 'source3' ],
962 target=main.params[ 'PING' ][ 'target3' ],
963 pingTime=500 )
964 main.Mininet2.pingLong(
965 src=main.params[ 'PING' ][ 'source4' ],
966 target=main.params[ 'PING' ][ 'target4' ],
967 pingTime=500 )
968 main.Mininet2.pingLong(
969 src=main.params[ 'PING' ][ 'source5' ],
970 target=main.params[ 'PING' ][ 'target5' ],
971 pingTime=500 )
972 main.Mininet2.pingLong(
973 src=main.params[ 'PING' ][ 'source6' ],
974 target=main.params[ 'PING' ][ 'target6' ],
975 pingTime=500 )
976 main.Mininet2.pingLong(
977 src=main.params[ 'PING' ][ 'source7' ],
978 target=main.params[ 'PING' ][ 'target7' ],
979 pingTime=500 )
980 main.Mininet2.pingLong(
981 src=main.params[ 'PING' ][ 'source8' ],
982 target=main.params[ 'PING' ][ 'target8' ],
983 pingTime=500 )
984 main.Mininet2.pingLong(
985 src=main.params[ 'PING' ][ 'source9' ],
986 target=main.params[ 'PING' ][ 'target9' ],
987 pingTime=500 )
988 main.Mininet2.pingLong(
989 src=main.params[ 'PING' ][ 'source10' ],
990 target=main.params[ 'PING' ][ 'target10' ],
991 pingTime=500 )
shahshreya4e13a062014-11-11 16:46:18 -0800992
shahshreyafac62b12015-01-20 16:16:13 -0800993 main.step( "Create TestONTopology object" )
shahshreya4e13a062014-11-11 16:46:18 -0800994 global ctrls
995 ctrls = []
996 count = 1
997 while True:
998 temp = ()
shahshreyafac62b12015-01-20 16:16:13 -0800999 if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
1000 temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
1001 temp = temp + ( "ONOS" + str( count ), )
1002 temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
1003 temp = temp + \
1004 ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
1005 ctrls.append( temp )
shahshreya4e13a062014-11-11 16:46:18 -08001006 count = count + 1
1007 else:
1008 break
1009 global MNTopo
shahshreyafac62b12015-01-20 16:16:13 -08001010 Topo = TestONTopology(
1011 main.Mininet1,
1012 ctrls ) # can also add Intent API info for intent operations
shahshreya4e13a062014-11-11 16:46:18 -08001013 MNTopo = Topo
1014
shahshreyafac62b12015-01-20 16:16:13 -08001015 TopologyCheck = main.TRUE
1016 main.step( "Compare ONOS Topology to MN Topology" )
1017 devicesJson = main.ONOS2.devices()
1018 linksJson = main.ONOS2.links()
1019 # portsJson = main.ONOS2.ports()
1020
1021 result1 = main.Mininet1.compareSwitches(
1022 MNTopo,
1023 json.loads( devicesJson ) )
1024 result2 = main.Mininet1.compareLinks(
1025 MNTopo,
1026 json.loads( linksJson ) )
1027 # result3 = main.Mininet1.comparePorts(
1028 # MNTopo, json.loads( portsJson ) )
1029
1030 # result = result1 and result2 and result3
shahshreya4e13a062014-11-11 16:46:18 -08001031 result = result1 and result2
shahshreyafac62b12015-01-20 16:16:13 -08001032
shahshreya4e13a062014-11-11 16:46:18 -08001033 print "***********************"
1034 if result == main.TRUE:
shahshreyafac62b12015-01-20 16:16:13 -08001035 main.log.report( "ONOS" + " Topology matches MN Topology" )
shahshreya4e13a062014-11-11 16:46:18 -08001036 else:
shahshreyafac62b12015-01-20 16:16:13 -08001037 main.log.report( "ONOS" + " Topology does not match MN Topology" )
shahshreya4e13a062014-11-11 16:46:18 -08001038
shahshreyafac62b12015-01-20 16:16:13 -08001039 utilities.assert_equals(
1040 expect=main.TRUE,
1041 actual=result,
1042 onpass="ONOS" +
1043 " Topology matches MN Topology",
1044 onfail="ONOS" +
1045 " Topology does not match MN Topology" )
shahshreya4e13a062014-11-11 16:46:18 -08001046
shahshreyafac62b12015-01-20 16:16:13 -08001047 TopologyCheck = TopologyCheck and result
1048 utilities.assert_equals(
1049 expect=main.TRUE,
1050 actual=TopologyCheck,
1051 onpass="Topology checks passed",
1052 onfail="Topology checks failed" )
shahshreya4e13a062014-11-11 16:46:18 -08001053
shahshreyafac62b12015-01-20 16:16:13 -08001054 def CASE7( self, main ):
shahshreya9294c8d2015-01-21 15:54:16 -08001055 from sts.topology.teston_topology import TestONTopology
shahshreya4e13a062014-11-11 16:46:18 -08001056
shahshreyafac62b12015-01-20 16:16:13 -08001057 linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
shahshreya4e13a062014-11-11 16:46:18 -08001058
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001059 main.log.report( "This testscase is killing a link to ensure that" +
1060 " link discovery is consistent" )
shahshreyafac62b12015-01-20 16:16:13 -08001061 main.log.report( "__________________________________" )
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001062 main.log.report( "Killing a link to ensure that link discovery" +
1063 " is consistent" )
1064 main.case( "Killing a link to Ensure that Link Discovery" +
1065 "is Working Properly" )
shahshreyafac62b12015-01-20 16:16:13 -08001066 """
1067 main.step( "Start continuous pings" )
shahshreya4e13a062014-11-11 16:46:18 -08001068
shahshreyafac62b12015-01-20 16:16:13 -08001069 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source1' ],
1070 target=main.params[ 'PING' ][ 'target1' ],
1071 pingTime=500 )
1072 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source2' ],
1073 target=main.params[ 'PING' ][ 'target2' ],
1074 pingTime=500 )
1075 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source3' ],
1076 target=main.params[ 'PING' ][ 'target3' ],
1077 pingTime=500 )
1078 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source4' ],
1079 target=main.params[ 'PING' ][ 'target4' ],
1080 pingTime=500 )
1081 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source5' ],
1082 target=main.params[ 'PING' ][ 'target5' ],
1083 pingTime=500 )
1084 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source6' ],
1085 target=main.params[ 'PING' ][ 'target6' ],
1086 pingTime=500 )
1087 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source7' ],
1088 target=main.params[ 'PING' ][ 'target7' ],
1089 pingTime=500 )
1090 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source8' ],
1091 target=main.params[ 'PING' ][ 'target8' ],
1092 pingTime=500 )
1093 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source9' ],
1094 target=main.params[ 'PING' ][ 'target9' ],
1095 pingTime=500 )
1096 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source10' ],
1097 target=main.params[ 'PING' ][ 'target10' ],
1098 pingTime=500 )
1099 """
1100 main.step( "Determine the current number of switches and links" )
1101 topologyOutput = main.ONOS2.topology()
1102 topologyResult = main.ONOS1.getTopology( topologyOutput )
shahshreya1937ec12015-04-03 15:35:48 -07001103 activeSwitches = topologyResult[ 'deviceCount' ]
1104 links = topologyResult[ 'linkCount' ]
shahshreyafac62b12015-01-20 16:16:13 -08001105 print "activeSwitches = ", type( activeSwitches )
1106 print "links = ", type( links )
1107 main.log.info(
1108 "Currently there are %s switches and %s links" %
1109 ( str( activeSwitches ), str( links ) ) )
1110
1111 main.step( "Kill Link between s3 and s28" )
1112 main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
1113 time.sleep( linkSleep )
1114 topologyOutput = main.ONOS2.topology()
1115 LinkDown = main.ONOS1.checkStatus(
1116 topologyOutput, activeSwitches, str(
1117 int( links ) - 2 ) )
1118 if LinkDown == main.TRUE:
1119 main.log.report( "Link Down discovered properly" )
1120 utilities.assert_equals(
1121 expect=main.TRUE,
1122 actual=LinkDown,
1123 onpass="Link Down discovered properly",
1124 onfail="Link down was not discovered in " +
1125 str( linkSleep ) +
1126 " seconds" )
1127
1128 # Check ping result here..add code for it
1129
1130 main.step( "Bring link between s3 and s28 back up" )
1131 LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
1132 time.sleep( linkSleep )
1133 topologyOutput = main.ONOS2.topology()
1134 LinkUp = main.ONOS1.checkStatus(
1135 topologyOutput,
1136 activeSwitches,
1137 str( links ) )
1138 if LinkUp == main.TRUE:
1139 main.log.report( "Link up discovered properly" )
1140 utilities.assert_equals(
1141 expect=main.TRUE,
1142 actual=LinkUp,
1143 onpass="Link up discovered properly",
1144 onfail="Link up was not discovered in " +
1145 str( linkSleep ) +
1146 " seconds" )
1147
1148 # NOTE Check ping result here..add code for it
1149
1150 main.step( "Compare ONOS Topology to MN Topology" )
1151 Topo = TestONTopology(
1152 main.Mininet1,
1153 ctrls ) # can also add Intent API info for intent operations
shahshreya4e13a062014-11-11 16:46:18 -08001154 MNTopo = Topo
shahshreyafac62b12015-01-20 16:16:13 -08001155 TopologyCheck = main.TRUE
1156
1157 devicesJson = main.ONOS2.devices()
1158 linksJson = main.ONOS2.links()
1159 portsJson = main.ONOS2.ports()
1160
1161 result1 = main.Mininet1.compareSwitches(
1162 MNTopo,
1163 json.loads( devicesJson ) )
1164 result2 = main.Mininet1.compareLinks(
1165 MNTopo,
1166 json.loads( linksJson ) )
1167 # result3 = main.Mininet1.comparePorts(
1168 # MNTopo, json.loads( portsJson ) )
1169
1170 # result = result1 and result2 and result3
shahshreya4e13a062014-11-11 16:46:18 -08001171 result = result1 and result2
1172 print "***********************"
shahshreyafac62b12015-01-20 16:16:13 -08001173
shahshreya4e13a062014-11-11 16:46:18 -08001174 if result == main.TRUE:
shahshreyafac62b12015-01-20 16:16:13 -08001175 main.log.report( "ONOS" + " Topology matches MN Topology" )
1176 utilities.assert_equals(
1177 expect=main.TRUE,
1178 actual=result,
1179 onpass="ONOS" +
1180 " Topology matches MN Topology",
1181 onfail="ONOS" +
1182 " Topology does not match MN Topology" )
shahshreya4e13a062014-11-11 16:46:18 -08001183
shahshreyafac62b12015-01-20 16:16:13 -08001184 TopologyCheck = TopologyCheck and result
1185 utilities.assert_equals(
1186 expect=main.TRUE,
1187 actual=TopologyCheck,
1188 onpass="Topology checks passed",
1189 onfail="Topology checks failed" )
shahshreya4e13a062014-11-11 16:46:18 -08001190
shahshreyafac62b12015-01-20 16:16:13 -08001191 result = LinkDown and LinkUp and TopologyCheck
1192 utilities.assert_equals( expect=main.TRUE, actual=result,
shahshreya9294c8d2015-01-21 15:54:16 -08001193 onpass="Link failure is discovered correctly",
1194 onfail="Link Discovery failed" )
shahshreyafac62b12015-01-20 16:16:13 -08001195
1196 def CASE8( self ):
1197 """
shahshreya82ecd282015-02-05 16:48:03 -08001198 Intent removal
shahshreyafac62b12015-01-20 16:16:13 -08001199 """
shahshreya82ecd282015-02-05 16:48:03 -08001200 import time
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001201 main.log.report( "This testcase removes any previously added intents" +
shahshreya82ecd282015-02-05 16:48:03 -08001202 " before adding any new set of intents" )
shahshreyafac62b12015-01-20 16:16:13 -08001203 main.log.report( "__________________________________" )
shahshreya82ecd282015-02-05 16:48:03 -08001204 main.log.info( "intent removal" )
1205 main.case( "Removing installed intents" )
shahshreyafac62b12015-01-20 16:16:13 -08001206 main.step( "Obtain the intent id's" )
1207 intentResult = main.ONOS2.intents( jsonFormat=False )
1208 main.log.info( "intent_result = " + intentResult )
shahshreyafac62b12015-01-20 16:16:13 -08001209 intentLinewise = intentResult.split( "\n" )
shahshreyafac62b12015-01-20 16:16:13 -08001210
shahshreyadcb08e82015-02-25 10:16:42 -08001211 intentList = [line for line in intentLinewise \
1212 if line.startswith( "id=")]
1213 intentids = [line.split( "," )[ 0 ].split( "=" )[ 1 ] for line in \
1214 intentList]
shahshreya4e13a062014-11-11 16:46:18 -08001215 for id in intentids:
1216 print "id = ", id
shahshreyafac62b12015-01-20 16:16:13 -08001217
1218 main.step(
1219 "Iterate through the intentids list and remove each intent" )
shahshreya4e13a062014-11-11 16:46:18 -08001220 for id in intentids:
shahshreyafac62b12015-01-20 16:16:13 -08001221 main.ONOS2.removeIntent( intentId=id )
shahshreyae6c7cf42014-11-26 16:39:01 -08001222
shahshreyafac62b12015-01-20 16:16:13 -08001223 intentResult = main.ONOS2.intents( jsonFormat=False )
1224 main.log.info( "intent_result = " + intentResult )
shahshreyadcb08e82015-02-25 10:16:42 -08001225
1226 intentList = [line for line in intentResult.split( "\n" ) \
1227 if line.startswith( "id=")]
1228 intentState = [line.split( "," )[ 1 ].split( "=" )[ 1 ] for line in \
1229 intentList]
1230 for state in intentState:
1231 print state
1232
1233 case8Result = main.TRUE
1234 for state in intentState:
1235 if state != 'WITHDRAWN':
1236 case8Result = main.FALSE
1237 break
1238
shahshreyafac62b12015-01-20 16:16:13 -08001239 if case8Result == main.TRUE:
1240 main.log.report( "Intent removal successful" )
shahshreya4e13a062014-11-11 16:46:18 -08001241 else:
shahshreyafac62b12015-01-20 16:16:13 -08001242 main.log.report( "Intent removal failed" )
1243
1244 PingResult = main.TRUE
1245 if case8Result == main.TRUE:
shahshreyae6c7cf42014-11-26 16:39:01 -08001246 i = 8
shahshreyafac62b12015-01-20 16:16:13 -08001247 while i < 18:
1248 main.log.info(
1249 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
1250 ping = main.Mininet1.pingHost(
1251 src="h" + str( i ), target="h" + str( i + 10 ) )
1252 if ping == main.TRUE:
shahshreyae6c7cf42014-11-26 16:39:01 -08001253 i = 19
shahshreyafac62b12015-01-20 16:16:13 -08001254 PingResult = PingResult and main.TRUE
1255 elif ping == main.FALSE:
1256 i += 1
1257 PingResult = PingResult and main.FALSE
shahshreyae6c7cf42014-11-26 16:39:01 -08001258 else:
shahshreyafac62b12015-01-20 16:16:13 -08001259 main.log.info( "Unknown error" )
1260 PingResult = main.ERROR
shahshreya4e13a062014-11-11 16:46:18 -08001261
shahshreyafac62b12015-01-20 16:16:13 -08001262 # Note: If the ping result failed, that means the intents have been
1263 # withdrawn correctly.
1264 if PingResult == main.TRUE:
shahshreya82ecd282015-02-05 16:48:03 -08001265 main.log.report( "Installed intents have not been withdrawn correctly" )
shahshreyafac62b12015-01-20 16:16:13 -08001266 # main.cleanup()
1267 # main.exit()
1268 if PingResult == main.FALSE:
shahshreya82ecd282015-02-05 16:48:03 -08001269 main.log.report( "Installed intents have been withdrawn correctly" )
shahshreya4e13a062014-11-11 16:46:18 -08001270
shahshreyafac62b12015-01-20 16:16:13 -08001271 case8Result = case8Result and PingResult
shahshreyae6c7cf42014-11-26 16:39:01 -08001272
shahshreyafac62b12015-01-20 16:16:13 -08001273 if case8Result == main.FALSE:
1274 main.log.report( "Intent removal successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -08001275 else:
shahshreyafac62b12015-01-20 16:16:13 -08001276 main.log.report( "Intent removal failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -08001277
shahshreyafac62b12015-01-20 16:16:13 -08001278 utilities.assert_equals( expect=main.FALSE, actual=case8Result,
shahshreya9294c8d2015-01-21 15:54:16 -08001279 onpass="Intent removal test passed",
1280 onfail="Intent removal test failed" )
shahshreya4e13a062014-11-11 16:46:18 -08001281
shahshreyafac62b12015-01-20 16:16:13 -08001282 def CASE9( self ):
1283 main.log.report(
1284 "This testcase adds point intents and then does pingall" )
1285 main.log.report( "__________________________________" )
1286 main.log.info( "Adding point intents" )
1287 main.case(
shahshreya71162c62015-01-23 15:31:16 -08001288 "Adding bidirectional point for mn hosts" +
1289 "( h8-h18, h9-h19, h10-h20, h11-h21, h12-h22, " +
1290 "h13-h23, h14-h24, h15-h25, h16-h26, h17-h27 )" )
shahshreya3dc3ce62015-01-22 13:31:59 -08001291
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001292 main.step( "Add point intents for mn hosts h8 and h18 or" +
1293 "ONOS hosts h8 and h12" )
shahshreya3dc3ce62015-01-22 13:31:59 -08001294 # main.step(var1)
shahshreyafac62b12015-01-20 16:16:13 -08001295 ptpIntentResult = main.ONOS2.addPointIntent(
1296 "of:0000000000003008/1",
1297 "of:0000000000006018/1" )
1298 if ptpIntentResult == main.TRUE:
1299 getIntentResult = main.ONOS2.intents()
1300 main.log.info( "Point to point intent install successful" )
1301 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001302
shahshreyafac62b12015-01-20 16:16:13 -08001303 ptpIntentResult = main.ONOS2.addPointIntent(
1304 "of:0000000000006018/1",
1305 "of:0000000000003008/1" )
1306 if ptpIntentResult == main.TRUE:
1307 getIntentResult = main.ONOS2.intents()
1308 main.log.info( "Point to point intent install successful" )
1309 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001310
shahshreya9294c8d2015-01-21 15:54:16 -08001311 var2 = "Add point intents for mn hosts h9&h19 or ONOS hosts h9&h13"
1312 main.step(var2)
shahshreyafac62b12015-01-20 16:16:13 -08001313 ptpIntentResult = main.ONOS2.addPointIntent(
1314 "of:0000000000003009/1",
1315 "of:0000000000006019/1" )
1316 if ptpIntentResult == main.TRUE:
1317 getIntentResult = main.ONOS2.intents()
1318 main.log.info( "Point to point intent install successful" )
1319 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001320
shahshreyafac62b12015-01-20 16:16:13 -08001321 ptpIntentResult = main.ONOS2.addPointIntent(
1322 "of:0000000000006019/1",
1323 "of:0000000000003009/1" )
1324 if ptpIntentResult == main.TRUE:
1325 getIntentResult = main.ONOS2.intents()
1326 main.log.info( "Point to point intent install successful" )
1327 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001328
shahshreya9294c8d2015-01-21 15:54:16 -08001329 var3 = "Add point intents for MN hosts h10&h20 or ONOS hosts hA&h14"
1330 main.step(var3)
shahshreyafac62b12015-01-20 16:16:13 -08001331 ptpIntentResult = main.ONOS2.addPointIntent(
1332 "of:0000000000003010/1",
1333 "of:0000000000006020/1" )
1334 if ptpIntentResult == main.TRUE:
1335 getIntentResult = main.ONOS2.intents()
1336 main.log.info( "Point to point intent install successful" )
1337 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001338
shahshreyafac62b12015-01-20 16:16:13 -08001339 ptpIntentResult = main.ONOS2.addPointIntent(
1340 "of:0000000000006020/1",
1341 "of:0000000000003010/1" )
1342 if ptpIntentResult == main.TRUE:
1343 getIntentResult = main.ONOS2.intents()
1344 main.log.info( "Point to point intent install successful" )
1345 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001346
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001347 var4 = "Add point intents for mininet hosts h11 and h21 or" +\
1348 " ONOS hosts hB and h15"
shahshreya9294c8d2015-01-21 15:54:16 -08001349 main.case(var4)
shahshreyafac62b12015-01-20 16:16:13 -08001350 ptpIntentResult = main.ONOS2.addPointIntent(
1351 "of:0000000000003011/1",
1352 "of:0000000000006021/1" )
1353 if ptpIntentResult == main.TRUE:
1354 getIntentResult = main.ONOS2.intents()
1355 main.log.info( "Point to point intent install successful" )
1356 # main.log.info( getIntentResult )
1357
1358 ptpIntentResult = main.ONOS2.addPointIntent(
1359 "of:0000000000006021/1",
1360 "of:0000000000003011/1" )
1361 if ptpIntentResult == main.TRUE:
1362 getIntentResult = main.ONOS2.intents()
1363 main.log.info( "Point to point intent install successful" )
1364 # main.log.info( getIntentResult )
1365
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001366 var5 = "Add point intents for mininet hosts h12 and h22 " +\
1367 "ONOS hosts hC and h16"
shahshreya9294c8d2015-01-21 15:54:16 -08001368 main.case(var5)
shahshreyafac62b12015-01-20 16:16:13 -08001369 ptpIntentResult = main.ONOS2.addPointIntent(
1370 "of:0000000000003012/1",
1371 "of:0000000000006022/1" )
1372 if ptpIntentResult == main.TRUE:
1373 getIntentResult = main.ONOS2.intents()
1374 main.log.info( "Point to point intent install successful" )
1375 # main.log.info( getIntentResult )
1376
1377 ptpIntentResult = main.ONOS2.addPointIntent(
1378 "of:0000000000006022/1",
1379 "of:0000000000003012/1" )
1380 if ptpIntentResult == main.TRUE:
1381 getIntentResult = main.ONOS2.intents()
1382 main.log.info( "Point to point intent install successful" )
1383 # main.log.info( getIntentResult )
1384
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001385 var6 = "Add point intents for mininet hosts h13 and h23 or" +\
1386 " ONOS hosts hD and h17"
shahshreya9294c8d2015-01-21 15:54:16 -08001387 main.case(var6)
shahshreyafac62b12015-01-20 16:16:13 -08001388 ptpIntentResult = main.ONOS2.addPointIntent(
1389 "of:0000000000003013/1",
1390 "of:0000000000006023/1" )
1391 if ptpIntentResult == main.TRUE:
1392 getIntentResult = main.ONOS2.intents()
1393 main.log.info( "Point to point intent install successful" )
1394 # main.log.info( getIntentResult )
1395
1396 ptpIntentResult = main.ONOS2.addPointIntent(
1397 "of:0000000000006023/1",
1398 "of:0000000000003013/1" )
1399 if ptpIntentResult == main.TRUE:
1400 getIntentResult = main.ONOS2.intents()
1401 main.log.info( "Point to point intent install successful" )
1402 # main.log.info( getIntentResult )
1403
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001404 var7 = "Add point intents for mininet hosts h14 and h24 or" +\
1405 " ONOS hosts hE and h18"
shahshreya9294c8d2015-01-21 15:54:16 -08001406 main.case(var7)
shahshreyafac62b12015-01-20 16:16:13 -08001407 ptpIntentResult = main.ONOS2.addPointIntent(
1408 "of:0000000000003014/1",
1409 "of:0000000000006024/1" )
1410 if ptpIntentResult == main.TRUE:
1411 getIntentResult = main.ONOS2.intents()
1412 main.log.info( "Point to point intent install successful" )
1413 # main.log.info( getIntentResult )
1414
1415 ptpIntentResult = main.ONOS2.addPointIntent(
1416 "of:0000000000006024/1",
1417 "of:0000000000003014/1" )
1418 if ptpIntentResult == main.TRUE:
1419 getIntentResult = main.ONOS2.intents()
1420 main.log.info( "Point to point intent install successful" )
1421 # main.log.info( getIntentResult )
1422
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001423 var8 = "Add point intents for mininet hosts h15 and h25 or" +\
1424 " ONOS hosts hF and h19"
shahshreya9294c8d2015-01-21 15:54:16 -08001425 main.case(var8)
shahshreyafac62b12015-01-20 16:16:13 -08001426 ptpIntentResult = main.ONOS2.addPointIntent(
1427 "of:0000000000003015/1",
1428 "of:0000000000006025/1" )
1429 if ptpIntentResult == main.TRUE:
1430 getIntentResult = main.ONOS2.intents()
1431 main.log.info( "Point to point intent install successful" )
1432 # main.log.info( getIntentResult )
1433
1434 ptpIntentResult = main.ONOS2.addPointIntent(
1435 "of:0000000000006025/1",
1436 "of:0000000000003015/1" )
1437 if ptpIntentResult == main.TRUE:
1438 getIntentResult = main.ONOS2.intents()
1439 main.log.info( "Point to point intent install successful" )
1440 # main.log.info( getIntentResult )
1441
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001442 var9 = "Add intents for mininet hosts h16 and h26 or" +\
1443 " ONOS hosts h10 and h1A"
shahshreya9294c8d2015-01-21 15:54:16 -08001444 main.case(var9)
shahshreyafac62b12015-01-20 16:16:13 -08001445 ptpIntentResult = main.ONOS2.addPointIntent(
1446 "of:0000000000003016/1",
1447 "of:0000000000006026/1" )
1448 if ptpIntentResult == main.TRUE:
1449 getIntentResult = main.ONOS2.intents()
1450 main.log.info( "Point to point intent install successful" )
1451 # main.log.info( getIntentResult )
1452
1453 ptpIntentResult = main.ONOS2.addPointIntent(
1454 "of:0000000000006026/1",
1455 "of:0000000000003016/1" )
1456 if ptpIntentResult == main.TRUE:
1457 getIntentResult = main.ONOS2.intents()
1458 main.log.info( "Point to point intent install successful" )
1459 # main.log.info( getIntentResult )
1460
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001461 var10 = "Add point intents for mininet hosts h17 and h27 or" +\
1462 " ONOS hosts h11 and h1B"
shahshreya9294c8d2015-01-21 15:54:16 -08001463 main.case(var10)
shahshreyafac62b12015-01-20 16:16:13 -08001464 ptpIntentResult = main.ONOS2.addPointIntent(
1465 "of:0000000000003017/1",
1466 "of:0000000000006027/1" )
1467 if ptpIntentResult == main.TRUE:
1468 getIntentResult = main.ONOS2.intents()
1469 main.log.info( "Point to point intent install successful" )
shahshreyadcb08e82015-02-25 10:16:42 -08001470 #main.log.info( getIntentResult )
shahshreyafac62b12015-01-20 16:16:13 -08001471
1472 ptpIntentResult = main.ONOS2.addPointIntent(
1473 "of:0000000000006027/1",
1474 "of:0000000000003017/1" )
1475 if ptpIntentResult == main.TRUE:
1476 getIntentResult = main.ONOS2.intents()
1477 main.log.info( "Point to point intent install successful" )
shahshreyadcb08e82015-02-25 10:16:42 -08001478 #main.log.info( getIntentResult )
shahshreyafac62b12015-01-20 16:16:13 -08001479
1480 print(
1481 "___________________________________________________________" )
shahshreya4e13a062014-11-11 16:46:18 -08001482
1483 flowHandle = main.ONOS2.flows()
shahshreya82ecd282015-02-05 16:48:03 -08001484 #main.log.info( "flows :" + flowHandle )
shahshreya4e13a062014-11-11 16:46:18 -08001485
1486 count = 1
1487 i = 8
shahshreyafac62b12015-01-20 16:16:13 -08001488 PingResult = main.TRUE
1489 while i < 18:
1490 main.log.info(
1491 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
1492 ping = main.Mininet1.pingHost(
1493 src="h" + str( i ), target="h" + str( i + 10 ) )
1494 if ping == main.FALSE and count < 5:
1495 count += 1
1496 # i = 8
1497 PingResult = main.FALSE
1498 main.log.report( "Ping between h" +
1499 str( i ) +
1500 " and h" +
1501 str( i +
1502 10 ) +
1503 " failed. Making attempt number " +
1504 str( count ) +
1505 " in 2 seconds" )
1506 time.sleep( 2 )
1507 elif ping == main.FALSE:
1508 main.log.report( "All ping attempts between h" +
1509 str( i ) +
1510 " and h" +
1511 str( i +
1512 10 ) +
1513 "have failed" )
1514 i = 19
1515 PingResult = main.FALSE
1516 elif ping == main.TRUE:
1517 main.log.info( "Ping test between h" +
1518 str( i ) +
1519 " and h" +
1520 str( i +
1521 10 ) +
1522 "passed!" )
1523 i += 1
1524 PingResult = main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -08001525 else:
shahshreyafac62b12015-01-20 16:16:13 -08001526 main.log.info( "Unknown error" )
1527 PingResult = main.ERROR
shahshreya4e13a062014-11-11 16:46:18 -08001528
shahshreyafac62b12015-01-20 16:16:13 -08001529 if PingResult == main.FALSE:
1530 main.log.report(
1531 "Point intents have not ben installed correctly. Cleaning up" )
1532 # main.cleanup()
1533 # main.exit()
1534 if PingResult == main.TRUE:
1535 main.log.report( "Point Intents have been installed correctly" )
shahshreya4e13a062014-11-11 16:46:18 -08001536
shahshreyafac62b12015-01-20 16:16:13 -08001537 case9Result = PingResult
1538 utilities.assert_equals(
1539 expect=main.TRUE,
1540 actual=case9Result,
1541 onpass="Point intents addition and Pingall Test successful",
1542 onfail="Point intents addition and Pingall Test NOT successful" )