blob: afa538fb6bdf18f7a4c7be8de8a6be8fe635304d [file] [log] [blame]
shahshreya4e13a062014-11-11 16:46:18 -08001
kelvin-onlab8a832582015-01-16 17:06:11 -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
shahshreya9294c8d2015-01-21 15:54:16 -08006# import sys
7# import os
8# import re
shahshreya4e13a062014-11-11 16:46:18 -08009import json
10
kelvin-onlab8a832582015-01-16 17:06:11 -080011time.sleep( 1 )
12
13
shahshreya4e13a062014-11-11 16:46:18 -080014class ProdFunc13:
kelvin-onlab8a832582015-01-16 17:06:11 -080015
16 def __init__( self ):
shahshreya4e13a062014-11-11 16:46:18 -080017 self.default = ''
18
kelvin-onlab8a832582015-01-16 17:06:11 -080019 def CASE1( self, main ):
shahshreya82ecd282015-02-05 16:48:03 -080020 import time
kelvin-onlab8a832582015-01-16 17:06:11 -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
kelvin-onlab8a832582015-01-16 17:06:11 -080031 """
shahshreya9294c8d2015-01-21 15:54:16 -080032 cellName = main.params[ 'ENV' ][ 'cellName' ]
33 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
shahshreyae6c7cf42014-11-26 16:39:01 -080034
kelvin-onlab8a832582015-01-16 17:06:11 -080035 main.case( "Setting up test environment" )
36 main.log.report(
37 "This testcase is testing setting up test environment" )
38 main.log.report( "__________________________________" )
39
40 main.step( "Applying cell variable to environment" )
shahshreya9294c8d2015-01-21 15:54:16 -080041 cellResult = main.ONOSbench.setCell( cellName )
42 verifyResult = main.ONOSbench.verifyCell()
kelvin-onlab8a832582015-01-16 17:06:11 -080043
44 main.step( "Removing raft logs before a clen installation of ONOS" )
shahshreya9294c8d2015-01-21 15:54:16 -080045 main.ONOSbench.onosRemoveRaftLogs()
shahshreyae6c7cf42014-11-26 16:39:01 -080046
shahshreya82ecd282015-02-05 16:48:03 -080047 main.step( "Git checkout and get version" )
shahshreyab512cd02015-01-27 17:01:47 -080048 #main.ONOSbench.gitCheckout( "master" )
shahshreya9294c8d2015-01-21 15:54:16 -080049 gitPullResult = main.ONOSbench.gitPull()
shahshreya82ecd282015-02-05 16:48:03 -080050 main.log.info( "git_pull_result = " + str( gitPullResult ))
shahshreya9294c8d2015-01-21 15:54:16 -080051 main.ONOSbench.getVersion( report=True )
kelvin-onlab8a832582015-01-16 17:06:11 -080052
shahshreya9294c8d2015-01-21 15:54:16 -080053 if gitPullResult == 1:
kelvin-onlab8a832582015-01-16 17:06:11 -080054 main.step( "Using mvn clean & install" )
shahshreya9294c8d2015-01-21 15:54:16 -080055 main.ONOSbench.cleanInstall()
56 elif gitPullResult == 0:
kelvin-onlab8a832582015-01-16 17:06:11 -080057 main.log.report(
58 "Git Pull Failed, look into logs for detailed reason" )
shahshreyaa22f8f82014-12-08 16:59:21 -080059 main.cleanup()
kelvin-onlab8a832582015-01-16 17:06:11 -080060 main.exit()
61
62 main.step( "Creating ONOS package" )
shahshreya9294c8d2015-01-21 15:54:16 -080063 packageResult = main.ONOSbench.onosPackage()
shahshreya4e13a062014-11-11 16:46:18 -080064
kelvin-onlab8a832582015-01-16 17:06:11 -080065 main.step( "Installing ONOS package" )
shahshreya9294c8d2015-01-21 15:54:16 -080066 onosInstallResult = main.ONOSbench.onosInstall()
67 if onosInstallResult == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -080068 main.log.report( "Installing ONOS package successful" )
shahshreya4e13a062014-11-11 16:46:18 -080069 else:
kelvin-onlab8a832582015-01-16 17:06:11 -080070 main.log.report( "Installing ONOS package failed" )
shahshreya4e13a062014-11-11 16:46:18 -080071
shahshreya9294c8d2015-01-21 15:54:16 -080072 onos1Isup = main.ONOSbench.isup()
73 if onos1Isup == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -080074 main.log.report( "ONOS instance is up and ready" )
shahshreya4e13a062014-11-11 16:46:18 -080075 else:
kelvin-onlab8a832582015-01-16 17:06:11 -080076 main.log.report( "ONOS instance may not be up" )
shahshreya4e13a062014-11-11 16:46:18 -080077
kelvin-onlab8a832582015-01-16 17:06:11 -080078 main.step( "Starting ONOS service" )
shahshreya9294c8d2015-01-21 15:54:16 -080079 startResult = main.ONOSbench.onosStart( ONOS1Ip )
shahshreya4e13a062014-11-11 16:46:18 -080080
shahshreya9294c8d2015-01-21 15:54:16 -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
shahshreya9294c8d2015-01-21 15:54:16 -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,
kelvin-onlab8a832582015-01-16 17:06:11 -080095 onpass="Test startup successful",
96 onfail="Test startup NOT successful" )
97
98 def CASE2( self, main ):
99 """
shahshreyaa22f8f82014-12-08 16:59:21 -0800100 Switch Down
kelvin-onlab8a832582015-01-16 17:06:11 -0800101 """
102 # NOTE: You should probably run a topology check after this
103 import time
shahshreyaa22f8f82014-12-08 16:59:21 -0800104
kelvin-onlab8a832582015-01-16 17:06:11 -0800105 main.case( "Switch down discovery" )
106 main.log.report( "This testcase is testing a switch down discovery" )
107 main.log.report( "__________________________________" )
108
shahshreya9294c8d2015-01-21 15:54:16 -0800109 switchSleep = int( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
shahshreyaa22f8f82014-12-08 16:59:21 -0800110
111 description = "Killing a switch to ensure it is discovered correctly"
kelvin-onlab8a832582015-01-16 17:06:11 -0800112 main.log.report( description )
113 main.case( description )
shahshreyaa22f8f82014-12-08 16:59:21 -0800114
kelvin-onlab8a832582015-01-16 17:06:11 -0800115 # TODO: Make this switch parameterizable
116 main.step( "Kill s28 " )
117 main.log.report( "Deleting s28" )
118 # FIXME: use new dynamic topo functions
shahshreya9294c8d2015-01-21 15:54:16 -0800119 main.Mininet1.delSwitch( "s28" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800120 main.log.info(
121 "Waiting " +
shahshreya9294c8d2015-01-21 15:54:16 -0800122 str( switchSleep ) +
kelvin-onlab8a832582015-01-16 17:06:11 -0800123 " seconds for switch down to be discovered" )
shahshreya9294c8d2015-01-21 15:54:16 -0800124 time.sleep( switchSleep )
kelvin-onlab8a832582015-01-16 17:06:11 -0800125 # Peek at the deleted switch
shahshreya9294c8d2015-01-21 15:54:16 -0800126 device = main.ONOS2.getDevice( dpid="0028" )
shahshreyaa22f8f82014-12-08 16:59:21 -0800127 print "device = ", device
kelvin-onlab8a832582015-01-16 17:06:11 -0800128 if device[ u'available' ] == 'False':
shahshreya9294c8d2015-01-21 15:54:16 -0800129 case2Result = main.FALSE
shahshreyaa22f8f82014-12-08 16:59:21 -0800130 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800131 case2Result = main.TRUE
132 utilities.assert_equals( expect=main.TRUE, actual=case2Result,
kelvin-onlab8a832582015-01-16 17:06:11 -0800133 onpass="Switch down discovery successful",
134 onfail="Switch down discovery failed" )
shahshreyaa22f8f82014-12-08 16:59:21 -0800135
shahshreyab189da22015-02-25 10:18:26 -0800136 def CASE101( self, main ):
kelvin-onlab8a832582015-01-16 17:06:11 -0800137 """
shahshreya4e13a062014-11-11 16:46:18 -0800138 Cleanup sequence:
shahshreya9294c8d2015-01-21 15:54:16 -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
kelvin-onlab8a832582015-01-16 17:06:11 -0800144 """
shahshreya9294c8d2015-01-21 15:54:16 -0800145 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
shahshreya4e13a062014-11-11 16:46:18 -0800146
kelvin-onlab8a832582015-01-16 17:06:11 -0800147 main.case( "Cleaning up test environment" )
shahshreya4e13a062014-11-11 16:46:18 -0800148
kelvin-onlab8a832582015-01-16 17:06:11 -0800149 main.step( "Testing ONOS kill function" )
shahshreya9294c8d2015-01-21 15:54:16 -0800150 killResult = main.ONOSbench.onosKill( ONOS1Ip )
shahshreya4e13a062014-11-11 16:46:18 -0800151
kelvin-onlab8a832582015-01-16 17:06:11 -0800152 main.step( "Stopping ONOS service" )
shahshreya9294c8d2015-01-21 15:54:16 -0800153 stopResult = main.ONOSbench.onosStop( ONOS1Ip )
shahshreya4e13a062014-11-11 16:46:18 -0800154
kelvin-onlab8a832582015-01-16 17:06:11 -0800155 main.step( "Uninstalling ONOS service" )
shahshreya9294c8d2015-01-21 15:54:16 -0800156 uninstallResult = main.ONOSbench.onosUninstall()
157
158 case11Result = killResult and stopResult and uninstallResult
159 utilities.assert_equals( expect=main.TRUE, actual=case11Result,
160 onpass="Cleanup successful",
161 onfail="Cleanup failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800162
kelvin-onlab8a832582015-01-16 17:06:11 -0800163 def CASE3( self, main ):
164 """
shahshreya4e13a062014-11-11 16:46:18 -0800165 Test 'onos' command and its functionality in driver
kelvin-onlab8a832582015-01-16 17:06:11 -0800166 """
shahshreya9294c8d2015-01-21 15:54:16 -0800167 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
shahshreya4e13a062014-11-11 16:46:18 -0800168
kelvin-onlab8a832582015-01-16 17:06:11 -0800169 main.case( "Testing 'onos' command" )
shahshreya4e13a062014-11-11 16:46:18 -0800170
kelvin-onlab8a832582015-01-16 17:06:11 -0800171 main.step( "Sending command 'onos -w <onos-ip> system:name'" )
shahshreya4e13a062014-11-11 16:46:18 -0800172 cmdstr1 = "system:name"
shahshreya9294c8d2015-01-21 15:54:16 -0800173 cmdResult1 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr1 )
174 main.log.info( "onos command returned: " + cmdResult1 )
shahshreya4e13a062014-11-11 16:46:18 -0800175
kelvin-onlab8a832582015-01-16 17:06:11 -0800176 main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
shahshreya4e13a062014-11-11 16:46:18 -0800177 cmdstr2 = "onos:topology"
shahshreya9294c8d2015-01-21 15:54:16 -0800178 cmdResult2 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr2 )
179 main.log.info( "onos command returned: " + cmdResult2 )
shahshreya4e13a062014-11-11 16:46:18 -0800180
kelvin-onlab8a832582015-01-16 17:06:11 -0800181 def CASE20( self ):
182 """
shahshreyae6c7cf42014-11-26 16:39:01 -0800183 Exit from mininet cli
184 reinstall ONOS
kelvin-onlab8a832582015-01-16 17:06:11 -0800185 """
shahshreya9294c8d2015-01-21 15:54:16 -0800186 cellName = main.params[ 'ENV' ][ 'cellName' ]
187 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
kelvin-onlab8a832582015-01-16 17:06:11 -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" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800191 main.log.report( "_____________________________________________" )
192 main.case( "Disconnecting mininet and restarting ONOS" )
193 main.step( "Disconnecting mininet and restarting ONOS" )
shahshreya9294c8d2015-01-21 15:54:16 -0800194 mininetDisconnect = main.Mininet1.disconnect()
shahshreya82ecd282015-02-05 16:48:03 -0800195 print "mininetDisconnect = ", mininetDisconnect
shahshreyae6c7cf42014-11-26 16:39:01 -0800196
kelvin-onlab8a832582015-01-16 17:06:11 -0800197 main.step( "Removing raft logs before a clen installation of ONOS" )
shahshreya9294c8d2015-01-21 15:54:16 -0800198 main.ONOSbench.onosRemoveRaftLogs()
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800199
kelvin-onlab8a832582015-01-16 17:06:11 -0800200 main.step( "Applying cell variable to environment" )
shahshreya9294c8d2015-01-21 15:54:16 -0800201 cellResult = main.ONOSbench.setCell( cellName )
202 verifyResult = main.ONOSbench.verifyCell()
shahshreyae6c7cf42014-11-26 16:39:01 -0800203
shahshreya9294c8d2015-01-21 15:54:16 -0800204 onosInstallResult = main.ONOSbench.onosInstall()
205 if onosInstallResult == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800206 main.log.report( "Installing ONOS package successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800207 else:
kelvin-onlab8a832582015-01-16 17:06:11 -0800208 main.log.report( "Installing ONOS package failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800209
shahshreya9294c8d2015-01-21 15:54:16 -0800210 onos1Isup = main.ONOSbench.isup()
211 if onos1Isup == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800212 main.log.report( "ONOS instance is up and ready" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800213 else:
kelvin-onlab8a832582015-01-16 17:06:11 -0800214 main.log.report( "ONOS instance may not be up" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800215
kelvin-onlab8a832582015-01-16 17:06:11 -0800216 main.step( "Starting ONOS service" )
shahshreya9294c8d2015-01-21 15:54:16 -0800217 startResult = main.ONOSbench.onosStart( ONOS1Ip )
kelvin-onlab8a832582015-01-16 17:06:11 -0800218
shahshreya9294c8d2015-01-21 15:54:16 -0800219 main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
220 case20Result = mininetDisconnect and cellResult and verifyResult \
221 and onosInstallResult and onos1Isup and \
222 startResult
kelvin-onlab8a832582015-01-16 17:06:11 -0800223 utilities.assert_equals(
224 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800225 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" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800230
231 def CASE21( self, main ):
kelvin-onlab8a832582015-01-16 17:06:11 -0800232 """
shahshreya9294c8d2015-01-21 15:54:16 -0800233 On ONOS bench, run this command:
234 ./~/ONOS/tools/test/bin/onos-topo-cfg
235 which starts the rest and copies the links
236 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
kelvin-onlab8a832582015-01-16 17:06:11 -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" )
shahshreya9294c8d2015-01-21 15:54:16 -0800246 startConsoleResult = main.LincOE1.startConsole()
247 opticalMnScript = main.LincOE2.runOpticalMnScript()
248 onosTopoCfgResult = main.ONOSbench.runOnosTopoCfg(
249 instanceName=main.params[ 'CTRL' ][ 'ip1' ],
250 jsonFile=main.params[ 'OPTICAL' ][ 'jsonfile' ] )
kelvin-onlab8a832582015-01-16 17:06:11 -0800251
shahshreya9294c8d2015-01-21 15:54:16 -0800252 print "start_console_result =", startConsoleResult
253 print "optical_mn_script = ", opticalMnScript
254 print "onos_topo_cfg_result =", onosTopoCfgResult
shahshreyae6c7cf42014-11-26 16:39:01 -0800255
shahshreya9294c8d2015-01-21 15:54:16 -0800256 case21Result = startConsoleResult and opticalMnScript and \
257 onosTopoCfgResult
kelvin-onlab8a832582015-01-16 17:06:11 -0800258 utilities.assert_equals(
259 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800260 actual=case21Result,
kelvin-onlab8a832582015-01-16 17:06:11 -0800261 onpass="Packet optical topology spawned successsfully",
262 onfail="Packet optical topology spawning failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800263
kelvin-onlab8a832582015-01-16 17:06:11 -0800264 def CASE22( self, main ):
265 """
shahshreya9294c8d2015-01-21 15:54:16 -0800266 Curretly we use, 4 linear switch optical topology and
267 2 packet layer mininet switches each with one host.
268 Therefore, the roadmCount variable = 4,
269 packetLayerSWCount variable = 2 and hostCount = 2
270 and this is hardcoded in the testcase. If the topology changes,
271 these hardcoded values need to be changed
kelvin-onlab8a832582015-01-16 17:06:11 -0800272 """
273 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800274 "This testcase compares the optical+packet topology against what" +
275 " is expected" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800276 main.case( "Topology comparision" )
277 main.step( "Topology comparision" )
shahshreya9294c8d2015-01-21 15:54:16 -0800278 main.ONOS3.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
279 devicesResult = main.ONOS3.devices( jsonFormat=False )
shahshreyae6c7cf42014-11-26 16:39:01 -0800280
shahshreya9294c8d2015-01-21 15:54:16 -0800281 print "devices_result = ", devicesResult
282 devicesLinewise = devicesResult.split( "\n" )
shahshreya82ecd282015-02-05 16:48:03 -0800283 devicesLinewise = devicesLinewise[ 1: ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800284 roadmCount = 0
285 packetLayerSWCount = 0
shahshreya9294c8d2015-01-21 15:54:16 -0800286 for line in devicesLinewise:
kelvin-onlab8a832582015-01-16 17:06:11 -0800287 components = line.split( "," )
288 availability = components[ 1 ].split( "=" )[ 1 ]
289 type = components[ 3 ].split( "=" )[ 1 ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800290 if availability == 'true' and type == 'ROADM':
291 roadmCount += 1
kelvin-onlab8a832582015-01-16 17:06:11 -0800292 elif availability == 'true' and type == 'SWITCH':
shahshreyae6c7cf42014-11-26 16:39:01 -0800293 packetLayerSWCount += 1
294 if roadmCount == 4:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800295 print "Number of Optical Switches = %d and is" % roadmCount +\
296 " correctly detected"
kelvin-onlab8a832582015-01-16 17:06:11 -0800297 main.log.info(
298 "Number of Optical Switches = " +
299 str( roadmCount ) +
300 " and is correctly detected" )
shahshreya9294c8d2015-01-21 15:54:16 -0800301 opticalSWResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800302 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800303 print "Number of Optical Switches = %d and is wrong" % roadmCount
kelvin-onlab8a832582015-01-16 17:06:11 -0800304 main.log.info(
305 "Number of Optical Switches = " +
306 str( roadmCount ) +
307 " and is wrong" )
shahshreya9294c8d2015-01-21 15:54:16 -0800308 opticalSWResult = main.FALSE
shahshreyae6c7cf42014-11-26 16:39:01 -0800309
310 if packetLayerSWCount == 2:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800311 print "Number of Packet layer or mininet Switches = %d "\
312 % packetLayerSWCount + "and is correctly detected"
kelvin-onlab8a832582015-01-16 17:06:11 -0800313 main.log.info(
314 "Number of Packet layer or mininet Switches = " +
315 str( packetLayerSWCount ) +
316 " and is correctly detected" )
shahshreya9294c8d2015-01-21 15:54:16 -0800317 packetSWResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800318 else:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800319 print "Number of Packet layer or mininet Switches = %d and"\
320 % packetLayerSWCount + " is wrong"
kelvin-onlab8a832582015-01-16 17:06:11 -0800321 main.log.info(
322 "Number of Packet layer or mininet Switches = " +
323 str( packetLayerSWCount ) +
324 " and is wrong" )
shahshreya9294c8d2015-01-21 15:54:16 -0800325 packetSWResult = main.FALSE
shahshreyae6c7cf42014-11-26 16:39:01 -0800326 print "_________________________________"
kelvin-onlab8a832582015-01-16 17:06:11 -0800327
shahshreya9294c8d2015-01-21 15:54:16 -0800328 linksResult = main.ONOS3.links( jsonFormat=False )
329 print "links_result = ", linksResult
shahshreyae6c7cf42014-11-26 16:39:01 -0800330 print "_________________________________"
kelvin-onlab8a832582015-01-16 17:06:11 -0800331
shahshreya9294c8d2015-01-21 15:54:16 -0800332 # NOTE:Since only point intents are added, there is no
333 # requirement to discover the hosts
kelvin-onlab8a832582015-01-16 17:06:11 -0800334 # Therfore, the below portion of the code is commented.
335 """
shahshreyae6c7cf42014-11-26 16:39:01 -0800336 #Discover hosts using pingall
shahshreya9294c8d2015-01-21 15:54:16 -0800337 pingallResult = main.LincOE2.pingall()
kelvin-onlab8a832582015-01-16 17:06:11 -0800338
shahshreya9294c8d2015-01-21 15:54:16 -0800339 hostsResult = main.ONOS3.hosts( jsonFormat=False )
340 main.log.info( "hosts_result = "+hostsResult )
kelvin-onlab8a832582015-01-16 17:06:11 -0800341 main.log.info( "_________________________________" )
shahshreya9294c8d2015-01-21 15:54:16 -0800342 hostsLinewise = hostsResult.split( "\n" )
343 hostsLinewise = hostsLinewise[ 1:-1 ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800344 hostCount = 0
shahshreya9294c8d2015-01-21 15:54:16 -0800345 for line in hostsLinewise:
kelvin-onlab8a832582015-01-16 17:06:11 -0800346 hostid = line.split( "," )[ 0 ].split( "=" )[ 1 ]
shahshreyae6c7cf42014-11-26 16:39:01 -0800347 hostCount +=1
348 if hostCount ==2:
349 print "Number of hosts = %d and is correctly detected" %hostCount
shahshreya9294c8d2015-01-21 15:54:16 -0800350 main.log.info( "Number of hosts = " + str( hostCount ) +" and \
351 is correctly detected" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800352 hostDiscovery = main.TRUE
353 else:
354 print "Number of hosts = %d and is wrong" %hostCount
shahshreya9294c8d2015-01-21 15:54:16 -0800355 main.log.info( "Number of hosts = " + str( hostCount ) +" and \
356 is wrong" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800357 hostDiscovery = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800358 """
shahshreya9294c8d2015-01-21 15:54:16 -0800359 case22Result = opticalSWResult and packetSWResult
kelvin-onlab8a832582015-01-16 17:06:11 -0800360 utilities.assert_equals(
361 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800362 actual=case22Result,
kelvin-onlab8a832582015-01-16 17:06:11 -0800363 onpass="Packet optical topology discovery successful",
364 onfail="Packet optical topology discovery failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800365
kelvin-onlab8a832582015-01-16 17:06:11 -0800366 def CASE23( self, main ):
shahshreyae6c7cf42014-11-26 16:39:01 -0800367 import time
kelvin-onlab8a832582015-01-16 17:06:11 -0800368 """
shahshreya9294c8d2015-01-21 15:54:16 -0800369 Add bidirectional point intents between 2 packet layer( mininet )
370 devices and
shahshreyae6c7cf42014-11-26 16:39:01 -0800371 ping mininet hosts
kelvin-onlab8a832582015-01-16 17:06:11 -0800372 """
373 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800374 "This testcase adds bidirectional point intents between 2 " +
375 "packet layer( mininet ) devices and ping mininet hosts" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800376 main.case( "Topology comparision" )
377 main.step( "Adding point intents" )
shahshreya9294c8d2015-01-21 15:54:16 -0800378 ptpIntentResult = main.ONOS3.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -0800379 "of:0000ffffffff0001/1",
380 "of:0000ffffffff0002/1" )
shahshreya9294c8d2015-01-21 15:54:16 -0800381 if ptpIntentResult == main.TRUE:
382 main.ONOS3.intents( jsonFormat=False )
kelvin-onlab8a832582015-01-16 17:06:11 -0800383 main.log.info( "Point to point intent install successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800384
shahshreya9294c8d2015-01-21 15:54:16 -0800385 ptpIntentResult = main.ONOS3.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -0800386 "of:0000ffffffff0002/1",
387 "of:0000ffffffff0001/1" )
shahshreya9294c8d2015-01-21 15:54:16 -0800388 if ptpIntentResult == main.TRUE:
389 main.ONOS3.intents( jsonFormat=False )
kelvin-onlab8a832582015-01-16 17:06:11 -0800390 main.log.info( "Point to point intent install successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800391
kelvin-onlab8a832582015-01-16 17:06:11 -0800392 time.sleep( 10 )
shahshreyae6c7cf42014-11-26 16:39:01 -0800393 flowHandle = main.ONOS3.flows()
kelvin-onlab8a832582015-01-16 17:06:11 -0800394 main.log.info( "flows :" + flowHandle )
shahshreyae6c7cf42014-11-26 16:39:01 -0800395
396 # Sleep for 30 seconds to provide time for the intent state to change
kelvin-onlab8a832582015-01-16 17:06:11 -0800397 time.sleep( 30 )
shahshreya9294c8d2015-01-21 15:54:16 -0800398 intentHandle = main.ONOS3.intents( jsonFormat=False )
kelvin-onlab8a832582015-01-16 17:06:11 -0800399 main.log.info( "intents :" + intentHandle )
400
shahshreya9294c8d2015-01-21 15:54:16 -0800401 PingResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800402 count = 1
kelvin-onlab8a832582015-01-16 17:06:11 -0800403 main.log.info( "\n\nh1 is Pinging h2" )
404 ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
shahshreya9294c8d2015-01-21 15:54:16 -0800405 # ping = main.LincOE2.pinghost()
kelvin-onlab8a832582015-01-16 17:06:11 -0800406 if ping == main.FALSE and count < 5:
407 count += 1
shahshreya9294c8d2015-01-21 15:54:16 -0800408 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800409 main.log.info(
410 "Ping between h1 and h2 failed. Making attempt number " +
411 str( count ) +
412 " in 2 seconds" )
413 time.sleep( 2 )
414 elif ping == main.FALSE:
415 main.log.info( "All ping attempts between h1 and h2 have failed" )
shahshreya9294c8d2015-01-21 15:54:16 -0800416 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800417 elif ping == main.TRUE:
418 main.log.info( "Ping test between h1 and h2 passed!" )
shahshreya9294c8d2015-01-21 15:54:16 -0800419 PingResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800420 else:
kelvin-onlab8a832582015-01-16 17:06:11 -0800421 main.log.info( "Unknown error" )
shahshreya9294c8d2015-01-21 15:54:16 -0800422 PingResult = main.ERROR
kelvin-onlab8a832582015-01-16 17:06:11 -0800423
shahshreya9294c8d2015-01-21 15:54:16 -0800424 if PingResult == main.FALSE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800425 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800426 "Point intents for packet optical have not ben installed" +
427 " correctly. Cleaning up" )
shahshreya9294c8d2015-01-21 15:54:16 -0800428 if PingResult == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800429 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800430 "Point Intents for packet optical have been " +
431 "installed correctly" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800432
shahshreya9294c8d2015-01-21 15:54:16 -0800433 case23Result = PingResult
kelvin-onlab8a832582015-01-16 17:06:11 -0800434 utilities.assert_equals(
435 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800436 actual=case23Result,
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800437 onpass= "Point intents addition for packet optical and" +
438 "Pingall Test successful",
439 onfail= "Point intents addition for packet optical and" +
440 "Pingall Test NOT successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800441
kelvin-onlab8a832582015-01-16 17:06:11 -0800442 def CASE24( self, main ):
shahshreyae6c7cf42014-11-26 16:39:01 -0800443 import time
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800444 import json
kelvin-onlab8a832582015-01-16 17:06:11 -0800445 """
shahshreya9294c8d2015-01-21 15:54:16 -0800446 Test Rerouting of Packet Optical by bringing a port down
447 ( port 22 ) of a switch( switchID=1 ), so that link
448 ( between switch1 port22 - switch4-port30 ) is inactive
449 and do a ping test. If rerouting is successful,
450 ping should pass. also check the flows
kelvin-onlab8a832582015-01-16 17:06:11 -0800451 """
452 main.log.report(
453 "This testcase tests rerouting and pings mininet hosts" )
454 main.case( "Test rerouting and pings mininet hosts" )
455 main.step( "Bring a port down and verify the link state" )
shahshreya9294c8d2015-01-21 15:54:16 -0800456 main.LincOE1.portDown( swId="1", ptId="22" )
457 linksNonjson = main.ONOS3.links( jsonFormat=False )
458 main.log.info( "links = " + linksNonjson )
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800459
460 links = main.ONOS3.links()
kelvin-onlab8a832582015-01-16 17:06:11 -0800461 main.log.info( "links = " + links )
462
shahshreya9294c8d2015-01-21 15:54:16 -0800463 linksResult = json.loads( links )
464 linksStateResult = main.FALSE
465 for item in linksResult:
kelvin-onlab8a832582015-01-16 17:06:11 -0800466 if item[ 'src' ][ 'device' ] == "of:0000ffffffffff01" and item[
467 'src' ][ 'port' ] == "22":
468 if item[ 'dst' ][ 'device' ] == "of:0000ffffffffff04" and item[
469 'dst' ][ 'port' ] == "30":
shahshreya9294c8d2015-01-21 15:54:16 -0800470 linksState = item[ 'state' ]
471 if linksState == "INACTIVE":
kelvin-onlab8a832582015-01-16 17:06:11 -0800472 main.log.info(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800473 "Links state is inactive as expected due to one" +
474 " of the ports being down" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800475 main.log.report(
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800476 "Links state is inactive as expected due to one" +
477 " of the ports being down" )
shahshreya9294c8d2015-01-21 15:54:16 -0800478 linksStateResult = main.TRUE
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800479 break
480 else:
kelvin-onlab8a832582015-01-16 17:06:11 -0800481 main.log.info(
482 "Links state is not inactive as expected" )
483 main.log.report(
484 "Links state is not inactive as expected" )
shahshreya9294c8d2015-01-21 15:54:16 -0800485 linksStateResult = main.FALSE
shahshreyae6c7cf42014-11-26 16:39:01 -0800486
shahshreya9294c8d2015-01-21 15:54:16 -0800487 print "links_state_result = ", linksStateResult
kelvin-onlab8a832582015-01-16 17:06:11 -0800488 time.sleep( 10 )
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800489 flowHandle = main.ONOS3.flows()
kelvin-onlab8a832582015-01-16 17:06:11 -0800490 main.log.info( "flows :" + flowHandle )
shahshreyaf1b1b9f2014-12-04 16:59:20 -0800491
kelvin-onlab8a832582015-01-16 17:06:11 -0800492 main.step( "Verify Rerouting by a ping test" )
shahshreya9294c8d2015-01-21 15:54:16 -0800493 PingResult = main.TRUE
kelvin-onlab8a832582015-01-16 17:06:11 -0800494 count = 1
495 main.log.info( "\n\nh1 is Pinging h2" )
496 ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
shahshreya9294c8d2015-01-21 15:54:16 -0800497 # ping = main.LincOE2.pinghost()
kelvin-onlab8a832582015-01-16 17:06:11 -0800498 if ping == main.FALSE and count < 5:
499 count += 1
shahshreya9294c8d2015-01-21 15:54:16 -0800500 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800501 main.log.info(
502 "Ping between h1 and h2 failed. Making attempt number " +
503 str( count ) +
504 " in 2 seconds" )
505 time.sleep( 2 )
506 elif ping == main.FALSE:
507 main.log.info( "All ping attempts between h1 and h2 have failed" )
shahshreya9294c8d2015-01-21 15:54:16 -0800508 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800509 elif ping == main.TRUE:
510 main.log.info( "Ping test between h1 and h2 passed!" )
shahshreya9294c8d2015-01-21 15:54:16 -0800511 PingResult = main.TRUE
shahshreyae6c7cf42014-11-26 16:39:01 -0800512 else:
kelvin-onlab8a832582015-01-16 17:06:11 -0800513 main.log.info( "Unknown error" )
shahshreya9294c8d2015-01-21 15:54:16 -0800514 PingResult = main.ERROR
shahshreyae6c7cf42014-11-26 16:39:01 -0800515
shahshreya9294c8d2015-01-21 15:54:16 -0800516 if PingResult == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800517 main.log.report( "Ping test successful " )
shahshreya9294c8d2015-01-21 15:54:16 -0800518 if PingResult == main.FALSE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800519 main.log.report( "Ping test failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800520
shahshreya9294c8d2015-01-21 15:54:16 -0800521 case24Result = PingResult and linksStateResult
522 utilities.assert_equals( expect=main.TRUE, actual=case24Result,
kelvin-onlab8a832582015-01-16 17:06:11 -0800523 onpass="Packet optical rerouting successful",
524 onfail="Packet optical rerouting failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800525
kelvin-onlab8a832582015-01-16 17:06:11 -0800526 def CASE4( self, main ):
shahshreya4e13a062014-11-11 16:46:18 -0800527 import re
528 import time
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800529 main.log.report( "This testcase is testing the assignment of" +
530 " all the switches to all the controllers and" +
shahshreyab189da22015-02-25 10:18:26 -0800531 " discovering the hosts in reactive mode" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800532 main.log.report( "__________________________________" )
533 main.case( "Pingall Test" )
534 main.step( "Assigning switches to controllers" )
shahshreya9294c8d2015-01-21 15:54:16 -0800535 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
536 ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
kelvin-onlab8a832582015-01-16 17:06:11 -0800537 for i in range( 1, 29 ):
538 if i == 1:
shahshreya9294c8d2015-01-21 15:54:16 -0800539 main.Mininet1.assignSwController(
kelvin-onlab8a832582015-01-16 17:06:11 -0800540 sw=str( i ),
shahshreya9294c8d2015-01-21 15:54:16 -0800541 ip1=ONOS1Ip,
542 port1=ONOS1Port )
kelvin-onlab8a832582015-01-16 17:06:11 -0800543 elif i >= 2 and i < 5:
shahshreya9294c8d2015-01-21 15:54:16 -0800544 main.Mininet1.assignSwController(
kelvin-onlab8a832582015-01-16 17:06:11 -0800545 sw=str( i ),
shahshreya9294c8d2015-01-21 15:54:16 -0800546 ip1=ONOS1Ip,
547 port1=ONOS1Port )
kelvin-onlab8a832582015-01-16 17:06:11 -0800548 elif i >= 5 and i < 8:
shahshreya9294c8d2015-01-21 15:54:16 -0800549 main.Mininet1.assignSwController(
kelvin-onlab8a832582015-01-16 17:06:11 -0800550 sw=str( i ),
shahshreya9294c8d2015-01-21 15:54:16 -0800551 ip1=ONOS1Ip,
552 port1=ONOS1Port )
kelvin-onlab8a832582015-01-16 17:06:11 -0800553 elif i >= 8 and i < 18:
shahshreya9294c8d2015-01-21 15:54:16 -0800554 main.Mininet1.assignSwController(
kelvin-onlab8a832582015-01-16 17:06:11 -0800555 sw=str( i ),
shahshreya9294c8d2015-01-21 15:54:16 -0800556 ip1=ONOS1Ip,
557 port1=ONOS1Port )
kelvin-onlab8a832582015-01-16 17:06:11 -0800558 elif i >= 18 and i < 28:
shahshreya9294c8d2015-01-21 15:54:16 -0800559 main.Mininet1.assignSwController(
kelvin-onlab8a832582015-01-16 17:06:11 -0800560 sw=str( i ),
shahshreya9294c8d2015-01-21 15:54:16 -0800561 ip1=ONOS1Ip,
562 port1=ONOS1Port )
shahshreya4e13a062014-11-11 16:46:18 -0800563 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800564 main.Mininet1.assignSwController(
kelvin-onlab8a832582015-01-16 17:06:11 -0800565 sw=str( i ),
shahshreya9294c8d2015-01-21 15:54:16 -0800566 ip1=ONOS1Ip,
567 port1=ONOS1Port )
568 SwitchMastership = main.TRUE
kelvin-onlab8a832582015-01-16 17:06:11 -0800569 for i in range( 1, 29 ):
570 if i == 1:
shahshreya9294c8d2015-01-21 15:54:16 -0800571 response = main.Mininet1.getSwController( "s" + str( i ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800572 print( "Response is " + str( response ) )
shahshreya9294c8d2015-01-21 15:54:16 -0800573 if re.search( "tcp:" + ONOS1Ip, response ):
574 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800575 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800576 SwitchMastership = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800577 elif i >= 2 and i < 5:
shahshreya9294c8d2015-01-21 15:54:16 -0800578 response = main.Mininet1.getSwController( "s" + str( i ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800579 print( "Response is " + str( response ) )
shahshreya9294c8d2015-01-21 15:54:16 -0800580 if re.search( "tcp:" + ONOS1Ip, response ):
581 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800582 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800583 SwitchMastership = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800584 elif i >= 5 and i < 8:
shahshreya9294c8d2015-01-21 15:54:16 -0800585 response = main.Mininet1.getSwController( "s" + str( i ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800586 print( "Response is " + str( response ) )
shahshreya9294c8d2015-01-21 15:54:16 -0800587 if re.search( "tcp:" + ONOS1Ip, response ):
588 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800589 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800590 SwitchMastership = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800591 elif i >= 8 and i < 18:
shahshreya9294c8d2015-01-21 15:54:16 -0800592 response = main.Mininet1.getSwController( "s" + str( i ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800593 print( "Response is " + str( response ) )
shahshreya9294c8d2015-01-21 15:54:16 -0800594 if re.search( "tcp:" + ONOS1Ip, response ):
595 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800596 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800597 SwitchMastership = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800598 elif i >= 18 and i < 28:
shahshreya9294c8d2015-01-21 15:54:16 -0800599 response = main.Mininet1.getSwController( "s" + str( i ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800600 print( "Response is " + str( response ) )
shahshreya9294c8d2015-01-21 15:54:16 -0800601 if re.search( "tcp:" + ONOS1Ip, response ):
602 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800603 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800604 SwitchMastership = main.FALSE
shahshreya4e13a062014-11-11 16:46:18 -0800605 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800606 response = main.Mininet1.getSwController( "s" + str( i ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800607 print( "Response is" + str( response ) )
shahshreya9294c8d2015-01-21 15:54:16 -0800608 if re.search( "tcp:" + ONOS1Ip, response ):
609 SwitchMastership = SwitchMastership and main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800610 else:
shahshreya9294c8d2015-01-21 15:54:16 -0800611 SwitchMastership = main.FALSE
shahshreya4e13a062014-11-11 16:46:18 -0800612
shahshreya9294c8d2015-01-21 15:54:16 -0800613 if SwitchMastership == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800614 main.log.report( "Controller assignmnet successful" )
shahshreya4e13a062014-11-11 16:46:18 -0800615 else:
kelvin-onlab8a832582015-01-16 17:06:11 -0800616 main.log.report( "Controller assignmnet failed" )
617 utilities.assert_equals(
618 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800619 actual=SwitchMastership,
kelvin-onlab8a832582015-01-16 17:06:11 -0800620 onpass="MasterControllers assigned correctly" )
621 """
622 for i in range ( 1,29 ):
shahshreya9294c8d2015-01-21 15:54:16 -0800623 main.Mininet1.assignSwController( sw=str( i ),count=5,
624 ip1=ONOS1Ip,port1=ONOS1Port,
625 ip2=ONOS2Ip,port2=ONOS2Port,
626 ip3=ONOS3Ip,port3=ONOS3Port,
627 ip4=ONOS4Ip,port4=ONOS4Port,
628 ip5=ONOS5Ip,port5=ONOS5Port )
kelvin-onlab8a832582015-01-16 17:06:11 -0800629 """
630 # REACTIVE FWD test
shahshreya4e13a062014-11-11 16:46:18 -0800631
kelvin-onlab8a832582015-01-16 17:06:11 -0800632 main.step( "Get list of hosts from Mininet" )
shahshreya9294c8d2015-01-21 15:54:16 -0800633 hostList = main.Mininet1.getHosts()
634 main.log.info( hostList )
shahshreya4e13a062014-11-11 16:46:18 -0800635
kelvin-onlab8a832582015-01-16 17:06:11 -0800636 main.step( "Get host list in ONOS format" )
shahshreya9294c8d2015-01-21 15:54:16 -0800637 hostOnosList = main.ONOS2.getHostsId( hostList )
638 main.log.info( hostOnosList )
kelvin-onlab8a832582015-01-16 17:06:11 -0800639 # time.sleep( 5 )
640
641 main.step( "Pingall" )
shahshreya9294c8d2015-01-21 15:54:16 -0800642 pingResult = main.FALSE
shahshreya82ecd282015-02-05 16:48:03 -0800643 time1 = time.time()
644 pingResult = main.Mininet1.pingall()
645 time2 = time.time()
646 print "Time for pingall: %2f seconds" % ( time2 - time1 )
kelvin-onlab8a832582015-01-16 17:06:11 -0800647
shahshreya9294c8d2015-01-21 15:54:16 -0800648 # Start onos cli again because u might have dropped out of
649 # onos prompt to the shell prompt
kelvin-onlab8a832582015-01-16 17:06:11 -0800650 # if there was no activity
shahshreya9294c8d2015-01-21 15:54:16 -0800651 main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
shahshreya4e13a062014-11-11 16:46:18 -0800652
shahshreya9294c8d2015-01-21 15:54:16 -0800653 case4Result = SwitchMastership and pingResult
654 if pingResult == main.TRUE:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800655 main.log.report( "Pingall Test in reactive mode to" +
656 " discover the hosts successful" )
shahshreya4e13a062014-11-11 16:46:18 -0800657 else:
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800658 main.log.report( "Pingall Test in reactive mode to" +
659 " discover the hosts failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800660
kelvin-onlab8a832582015-01-16 17:06:11 -0800661 utilities.assert_equals(
662 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800663 actual=case4Result,
kelvin-onlab8a832582015-01-16 17:06:11 -0800664 onpass="Controller assignment and Pingall Test successful",
665 onfail="Controller assignment and Pingall Test NOT successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800666
kelvin-onlab8a832582015-01-16 17:06:11 -0800667 def CASE10( self ):
668 main.log.report(
669 "This testcase uninstalls the reactive forwarding app" )
670 main.log.report( "__________________________________" )
671 main.case( "Uninstalling reactive forwarding app" )
672 # Unistall onos-app-fwd app to disable reactive forwarding
shahshreya9294c8d2015-01-21 15:54:16 -0800673 appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800674 main.log.info( "onos-app-fwd uninstalled" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800675
shahshreya9294c8d2015-01-21 15:54:16 -0800676 # After reactive forwarding is disabled, the reactive flows on
677 # switches timeout in 10-15s
kelvin-onlab8a832582015-01-16 17:06:11 -0800678 # So sleep for 15s
679 time.sleep( 15 )
shahshreyae6c7cf42014-11-26 16:39:01 -0800680
681 flows = main.ONOS2.flows()
kelvin-onlab8a832582015-01-16 17:06:11 -0800682 main.log.info( flows )
shahshreyae6c7cf42014-11-26 16:39:01 -0800683
shahshreya9294c8d2015-01-21 15:54:16 -0800684 case10Result = appUninstallResult
kelvin-onlab8a832582015-01-16 17:06:11 -0800685 utilities.assert_equals(
686 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800687 actual=case10Result,
kelvin-onlab8a832582015-01-16 17:06:11 -0800688 onpass="Reactive forwarding app uninstallation successful",
689 onfail="Reactive forwarding app uninstallation failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800690
shahshreyab189da22015-02-25 10:18:26 -0800691
692 def CASE11( self ):
693 # NOTE: This testcase require reactive forwarding mode enabled
694 # NOTE: in the beginning and then uninstall it before adding
695 # NOTE: point intents. Again the app is installed so that
696 # NOTE: testcase 10 can be ran successively
697 import time
698 main.log.report(
699 "This testcase moves a host from one switch to another to add" +
700 "point intents between them and then perform ping" )
701 main.log.report( "__________________________________" )
702 main.log.info( "Moving host from one switch to another" )
703 main.case( "Moving host from a device and attach it to another device" )
704 main.step( "Moving host h9 from device s9 and attach it to s8" )
705 main.Mininet1.moveHost(host = 'h9', oldSw = 's9', newSw = 's8')
706
707 time.sleep(15) #Time delay to have all the flows ready
708 main.step( "Pingall" )
709 pingResult = main.FALSE
710 time1 = time.time()
711 pingResult = main.Mininet1.pingall()
712 time2 = time.time()
713 print "Time for pingall: %2f seconds" % ( time2 - time1 )
714
715 hosts = main.ONOS2.hosts( jsonFormat = False )
716 main.log.info( hosts )
717
718 main.case( "Uninstalling reactive forwarding app" )
719 # Unistall onos-app-fwd app to disable reactive forwarding
720 appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
721 main.log.info( "onos-app-fwd uninstalled" )
722
723 main.step( "Add point intents between hosts on the same device")
724 ptpIntentResult = main.ONOS2.addPointIntent(
725 "of:0000000000003008/1",
726 "of:0000000000003008/3" )
727 if ptpIntentResult == main.TRUE:
728 getIntentResult = main.ONOS2.intents()
729 main.log.info( "Point to point intent install successful" )
730 # main.log.info( getIntentResult )
731
732 ptpIntentResult = main.ONOS2.addPointIntent(
733 "of:0000000000003008/3",
734 "of:0000000000003008/1" )
735 if ptpIntentResult == main.TRUE:
736 getIntentResult = main.ONOS2.intents()
737 main.log.info( "Point to point intent install successful" )
738 # main.log.info( getIntentResult )
739
740 main.case( "Ping hosts on the same devices" )
741 ping = main.Mininet1.pingHost( src = 'h8', target = 'h9' )
742
743 '''
744 main.case( "Installing reactive forwarding app" )
745 # Install onos-app-fwd app to enable reactive forwarding
746 appUninstallResult = main.ONOS2.featureInstall( "onos-app-fwd" )
747 main.log.info( "onos-app-fwd installed" )
748 '''
749
750 if ping == main.FALSE:
751 main.log.report(
752 "Point intents for hosts on same devices haven't" +
753 " been installed correctly. Cleaning up" )
754 if ping == main.TRUE:
755 main.log.report(
756 "Point intents for hosts on same devices" +
757 "installed correctly. Cleaning up" )
758
759 case11Result = ping and pingResult
760 utilities.assert_equals(
shahshreya74cca802015-02-26 12:24:01 -0800761 expect = main.TRUE,
762 actual = case11Result,
763 onpass = "Point intents for hosts on same devices" +
shahshreyab189da22015-02-25 10:18:26 -0800764 "Ping Test successful",
shahshreya74cca802015-02-26 12:24:01 -0800765 onfail = "Point intents for hosts on same devices" +
shahshreyab189da22015-02-25 10:18:26 -0800766 "Ping Test NOT successful" )
shahshreya74cca802015-02-26 12:24:01 -0800767
768
769 def CASE12( self ):
770 """
771 Verify the default flows on each switch
772 """
773 case12Result = main.TRUE
774 idList = main.ONOS2.getAllDevicesId()
775 for id in idList:
776 count = main.ONOS2.FlowStateCount( id )
777 print "count = ", count
778 if count != 5:
779 case12Result = main.FALSE
780
781 utilities.assert_equals(
782 expect=main.TRUE,
783 actual=case12Result,
784 onpass = "Expected default num of flows exist",
785 onfail = "Expected default num of flows do not exist")
786
787
shahshreyab189da22015-02-25 10:18:26 -0800788
789
kelvin-onlab8a832582015-01-16 17:06:11 -0800790 def CASE6( self ):
shahshreyab189da22015-02-25 10:18:26 -0800791 import time
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800792 main.log.report( "This testcase is testing the addition of" +
793 " host intents and then does pingall" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800794 main.log.report( "__________________________________" )
795 main.case( "Obtaining host id's" )
796 main.step( "Get hosts" )
shahshreyae6c7cf42014-11-26 16:39:01 -0800797 hosts = main.ONOS2.hosts()
shahshreya9294c8d2015-01-21 15:54:16 -0800798 main.log.info( hosts )
shahshreya4e13a062014-11-11 16:46:18 -0800799
kelvin-onlab8a832582015-01-16 17:06:11 -0800800 main.step( "Get all devices id" )
shahshreya9294c8d2015-01-21 15:54:16 -0800801 devicesIdList = main.ONOS2.getAllDevicesId()
802 main.log.info( devicesIdList )
shahshreya4e13a062014-11-11 16:46:18 -0800803
shahshreya9294c8d2015-01-21 15:54:16 -0800804 # ONOS displays the hosts in hex format unlike mininet which does
805 # in decimal format
kelvin-onlab8a832582015-01-16 17:06:11 -0800806 # So take care while adding intents
807 """
shahshreya9294c8d2015-01-21 15:54:16 -0800808 main.step( "Add host-to-host intents for mininet hosts h8 and h18 or
809 ONOS hosts h8 and h12" )
810 hthIntentResult = main.ONOS2.addHostIntent(
811 "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
812 hthIntentResult = main.ONOS2.addHostIntent(
813 "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
814 hthIntentResult = main.ONOS2.addHostIntent(
815 "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
816 hthIntentResult = main.ONOS2.addHostIntent(
817 "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
818 hthIntentResult = main.ONOS2.addHostIntent(
819 "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
820 hthIntentResult = main.ONOS2.addHostIntent(
821 "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
822 hthIntentResult = main.ONOS2.addHostIntent(
823 "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
824 hthIntentResult = main.ONOS2.addHostIntent(
825 "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
826 hthIntentResult = main.ONOS2.addHostIntent(
827 "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
828 hthIntentResult = main.ONOS2.addHostIntent(
829 "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
830 print "______________________________________________________"
kelvin-onlab8a832582015-01-16 17:06:11 -0800831 """
832 for i in range( 8, 18 ):
833 main.log.info(
shahshreya9294c8d2015-01-21 15:54:16 -0800834 "Adding host intent between h" + str( i ) +
835 " and h" + str( i + 10 ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800836 host1 = "00:00:00:00:00:" + \
837 str( hex( i )[ 2: ] ).zfill( 2 ).upper()
838 host2 = "00:00:00:00:00:" + \
839 str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
840 # NOTE: get host can return None
841 # TODO: handle this
shahshreya9294c8d2015-01-21 15:54:16 -0800842 host1Id = main.ONOS2.getHost( host1 )[ 'id' ]
shahshreyab189da22015-02-25 10:18:26 -0800843
shahshreya9294c8d2015-01-21 15:54:16 -0800844 host2Id = main.ONOS2.getHost( host2 )[ 'id' ]
845 main.ONOS2.addHostIntent( host1Id, host2Id )
kelvin-onlab8a832582015-01-16 17:06:11 -0800846
847 time.sleep( 10 )
shahshreya9294c8d2015-01-21 15:54:16 -0800848 hIntents = main.ONOS2.intents( jsonFormat=False )
849 main.log.info( "intents:" + hIntents )
shahshreyab189da22015-02-25 10:18:26 -0800850 flows = main.ONOS2.flows()
851 main.log.info( "flows:" + flows )
shahshreya4e13a062014-11-11 16:46:18 -0800852
853 count = 1
854 i = 8
shahshreya9294c8d2015-01-21 15:54:16 -0800855 PingResult = main.TRUE
kelvin-onlab8a832582015-01-16 17:06:11 -0800856 # while i<10:
857 while i < 18:
858 main.log.info(
859 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
860 ping = main.Mininet1.pingHost(
861 src="h" + str( i ), target="h" + str( i + 10 ) )
862 if ping == main.FALSE and count < 5:
863 count += 1
shahshreya9294c8d2015-01-21 15:54:16 -0800864 # i = 8
865 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800866 main.log.report( "Ping between h" +
867 str( i ) +
868 " and h" +
869 str( i +
870 10 ) +
871 " failed. Making attempt number " +
872 str( count ) +
873 " in 2 seconds" )
874 time.sleep( 2 )
875 elif ping == main.FALSE:
876 main.log.report( "All ping attempts between h" +
877 str( i ) +
878 " and h" +
879 str( i +
880 10 ) +
881 "have failed" )
882 i = 19
shahshreya9294c8d2015-01-21 15:54:16 -0800883 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -0800884 elif ping == main.TRUE:
885 main.log.info( "Ping test between h" +
886 str( i ) +
887 " and h" +
888 str( i +
889 10 ) +
890 "passed!" )
891 i += 1
shahshreya9294c8d2015-01-21 15:54:16 -0800892 PingResult = main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -0800893 else:
kelvin-onlab8a832582015-01-16 17:06:11 -0800894 main.log.info( "Unknown error" )
shahshreya9294c8d2015-01-21 15:54:16 -0800895 PingResult = main.ERROR
896 if PingResult == main.FALSE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800897 main.log.report(
shahshreya9294c8d2015-01-21 15:54:16 -0800898 "Ping all test after Host intent addition failed.Cleaning up" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800899 # main.cleanup()
900 # main.exit()
shahshreya9294c8d2015-01-21 15:54:16 -0800901 if PingResult == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -0800902 main.log.report(
903 "Ping all test after Host intent addition successful" )
904
shahshreya9294c8d2015-01-21 15:54:16 -0800905 case6Result = PingResult
kelvin-onlab8a832582015-01-16 17:06:11 -0800906 utilities.assert_equals(
907 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -0800908 actual=case6Result,
kelvin-onlab8a832582015-01-16 17:06:11 -0800909 onpass="Pingall Test after Host intents addition successful",
910 onfail="Pingall Test after Host intents addition failed" )
shahshreya4e13a062014-11-11 16:46:18 -0800911
kelvin-onlab8a832582015-01-16 17:06:11 -0800912 def CASE5( self, main ):
shahshreya4e13a062014-11-11 16:46:18 -0800913 import json
kelvin-onlab8a832582015-01-16 17:06:11 -0800914 # assumes that sts is already in you PYTHONPATH
915 from sts.topology.teston_topology import TestONTopology
shahshreya9294c8d2015-01-21 15:54:16 -0800916 # main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
kelvin-onlabcf33bda2015-01-23 16:54:17 -0800917 main.log.report( "This testcase is testing if all ONOS nodes" +
918 " are in topology sync with mininet" )
kelvin-onlab8a832582015-01-16 17:06:11 -0800919 main.log.report( "__________________________________" )
920 main.case( "Comparing Mininet topology with the topology of ONOS" )
921 main.step( "Start continuous pings" )
922 main.Mininet2.pingLong(
923 src=main.params[ 'PING' ][ 'source1' ],
924 target=main.params[ 'PING' ][ 'target1' ],
925 pingTime=500 )
926 main.Mininet2.pingLong(
927 src=main.params[ 'PING' ][ 'source2' ],
928 target=main.params[ 'PING' ][ 'target2' ],
929 pingTime=500 )
930 main.Mininet2.pingLong(
931 src=main.params[ 'PING' ][ 'source3' ],
932 target=main.params[ 'PING' ][ 'target3' ],
933 pingTime=500 )
934 main.Mininet2.pingLong(
935 src=main.params[ 'PING' ][ 'source4' ],
936 target=main.params[ 'PING' ][ 'target4' ],
937 pingTime=500 )
938 main.Mininet2.pingLong(
939 src=main.params[ 'PING' ][ 'source5' ],
940 target=main.params[ 'PING' ][ 'target5' ],
941 pingTime=500 )
942 main.Mininet2.pingLong(
943 src=main.params[ 'PING' ][ 'source6' ],
944 target=main.params[ 'PING' ][ 'target6' ],
945 pingTime=500 )
946 main.Mininet2.pingLong(
947 src=main.params[ 'PING' ][ 'source7' ],
948 target=main.params[ 'PING' ][ 'target7' ],
949 pingTime=500 )
950 main.Mininet2.pingLong(
951 src=main.params[ 'PING' ][ 'source8' ],
952 target=main.params[ 'PING' ][ 'target8' ],
953 pingTime=500 )
954 main.Mininet2.pingLong(
955 src=main.params[ 'PING' ][ 'source9' ],
956 target=main.params[ 'PING' ][ 'target9' ],
957 pingTime=500 )
958 main.Mininet2.pingLong(
959 src=main.params[ 'PING' ][ 'source10' ],
960 target=main.params[ 'PING' ][ 'target10' ],
961 pingTime=500 )
shahshreya4e13a062014-11-11 16:46:18 -0800962
kelvin-onlab8a832582015-01-16 17:06:11 -0800963 main.step( "Create TestONTopology object" )
shahshreya4e13a062014-11-11 16:46:18 -0800964 global ctrls
965 ctrls = []
966 count = 1
967 while True:
968 temp = ()
kelvin-onlab8a832582015-01-16 17:06:11 -0800969 if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
970 temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
971 temp = temp + ( "ONOS" + str( count ), )
972 temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
973 temp = temp + \
974 ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
975 ctrls.append( temp )
shahshreya4e13a062014-11-11 16:46:18 -0800976 count = count + 1
977 else:
978 break
979 global MNTopo
kelvin-onlab8a832582015-01-16 17:06:11 -0800980 Topo = TestONTopology(
981 main.Mininet1,
982 ctrls ) # can also add Intent API info for intent operations
shahshreya4e13a062014-11-11 16:46:18 -0800983 MNTopo = Topo
984
shahshreya9294c8d2015-01-21 15:54:16 -0800985 TopologyCheck = main.TRUE
kelvin-onlab8a832582015-01-16 17:06:11 -0800986 main.step( "Compare ONOS Topology to MN Topology" )
shahshreya9294c8d2015-01-21 15:54:16 -0800987 devicesJson = main.ONOS2.devices()
988 linksJson = main.ONOS2.links()
989 # portsJson = main.ONOS2.ports()
kelvin-onlab8a832582015-01-16 17:06:11 -0800990
shahshreya9294c8d2015-01-21 15:54:16 -0800991 result1 = main.Mininet1.compareSwitches(
kelvin-onlab8a832582015-01-16 17:06:11 -0800992 MNTopo,
shahshreya9294c8d2015-01-21 15:54:16 -0800993 json.loads( devicesJson ) )
994 result2 = main.Mininet1.compareLinks(
kelvin-onlab8a832582015-01-16 17:06:11 -0800995 MNTopo,
shahshreya9294c8d2015-01-21 15:54:16 -0800996 json.loads( linksJson ) )
997 # result3 = main.Mininet1.comparePorts(
998 # MNTopo, json.loads( portsJson ) )
kelvin-onlab8a832582015-01-16 17:06:11 -0800999
shahshreya9294c8d2015-01-21 15:54:16 -08001000 # result = result1 and result2 and result3
shahshreya4e13a062014-11-11 16:46:18 -08001001 result = result1 and result2
kelvin-onlab8a832582015-01-16 17:06:11 -08001002
shahshreya4e13a062014-11-11 16:46:18 -08001003 print "***********************"
1004 if result == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001005 main.log.report( "ONOS" + " Topology matches MN Topology" )
shahshreya4e13a062014-11-11 16:46:18 -08001006 else:
kelvin-onlab8a832582015-01-16 17:06:11 -08001007 main.log.report( "ONOS" + " Topology does not match MN Topology" )
shahshreya4e13a062014-11-11 16:46:18 -08001008
kelvin-onlab8a832582015-01-16 17:06:11 -08001009 utilities.assert_equals(
1010 expect=main.TRUE,
1011 actual=result,
1012 onpass="ONOS" +
1013 " Topology matches MN Topology",
1014 onfail="ONOS" +
1015 " Topology does not match MN Topology" )
1016
shahshreya9294c8d2015-01-21 15:54:16 -08001017 TopologyCheck = TopologyCheck and result
kelvin-onlab8a832582015-01-16 17:06:11 -08001018 utilities.assert_equals(
1019 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -08001020 actual=TopologyCheck,
kelvin-onlab8a832582015-01-16 17:06:11 -08001021 onpass="Topology checks passed",
1022 onfail="Topology checks failed" )
shahshreya4e13a062014-11-11 16:46:18 -08001023
kelvin-onlab8a832582015-01-16 17:06:11 -08001024 def CASE7( self, main ):
shahshreya9294c8d2015-01-21 15:54:16 -08001025 from sts.topology.teston_topology import TestONTopology
shahshreya4e13a062014-11-11 16:46:18 -08001026
shahshreya9294c8d2015-01-21 15:54:16 -08001027 linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
shahshreya4e13a062014-11-11 16:46:18 -08001028
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001029 main.log.report( "This testscase is killing a link to ensure that" +
1030 " link discovery is consistent" )
kelvin-onlab8a832582015-01-16 17:06:11 -08001031 main.log.report( "__________________________________" )
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001032 main.log.report( "Killing a link to ensure that link discovery" +
1033 " is consistent" )
1034 main.case( "Killing a link to Ensure that Link Discovery" +
1035 "is Working Properly" )
kelvin-onlab8a832582015-01-16 17:06:11 -08001036 """
1037 main.step( "Start continuous pings" )
1038
1039 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source1' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001040 target=main.params[ 'PING' ][ 'target1' ],
1041 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001042 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source2' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001043 target=main.params[ 'PING' ][ 'target2' ],
1044 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001045 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source3' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001046 target=main.params[ 'PING' ][ 'target3' ],
1047 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001048 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source4' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001049 target=main.params[ 'PING' ][ 'target4' ],
1050 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001051 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source5' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001052 target=main.params[ 'PING' ][ 'target5' ],
1053 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001054 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source6' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001055 target=main.params[ 'PING' ][ 'target6' ],
1056 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001057 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source7' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001058 target=main.params[ 'PING' ][ 'target7' ],
1059 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001060 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source8' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001061 target=main.params[ 'PING' ][ 'target8' ],
1062 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001063 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source9' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001064 target=main.params[ 'PING' ][ 'target9' ],
1065 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001066 main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source10' ],
shahshreya9294c8d2015-01-21 15:54:16 -08001067 target=main.params[ 'PING' ][ 'target10' ],
1068 pingTime=500 )
kelvin-onlab8a832582015-01-16 17:06:11 -08001069 """
1070 main.step( "Determine the current number of switches and links" )
shahshreya9294c8d2015-01-21 15:54:16 -08001071 topologyOutput = main.ONOS2.topology()
1072 topologyResult = main.ONOS1.getTopology( topologyOutput )
1073 activeSwitches = topologyResult[ 'devices' ]
1074 links = topologyResult[ 'links' ]
kelvin-onlab8a832582015-01-16 17:06:11 -08001075 print "activeSwitches = ", type( activeSwitches )
1076 print "links = ", type( links )
1077 main.log.info(
1078 "Currently there are %s switches and %s links" %
1079 ( str( activeSwitches ), str( links ) ) )
shahshreya4e13a062014-11-11 16:46:18 -08001080
kelvin-onlab8a832582015-01-16 17:06:11 -08001081 main.step( "Kill Link between s3 and s28" )
1082 main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
shahshreya9294c8d2015-01-21 15:54:16 -08001083 time.sleep( linkSleep )
1084 topologyOutput = main.ONOS2.topology()
1085 LinkDown = main.ONOS1.checkStatus(
1086 topologyOutput, activeSwitches, str(
kelvin-onlab8a832582015-01-16 17:06:11 -08001087 int( links ) - 2 ) )
shahshreya9294c8d2015-01-21 15:54:16 -08001088 if LinkDown == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001089 main.log.report( "Link Down discovered properly" )
1090 utilities.assert_equals(
1091 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -08001092 actual=LinkDown,
kelvin-onlab8a832582015-01-16 17:06:11 -08001093 onpass="Link Down discovered properly",
1094 onfail="Link down was not discovered in " +
shahshreya9294c8d2015-01-21 15:54:16 -08001095 str( linkSleep ) +
kelvin-onlab8a832582015-01-16 17:06:11 -08001096 " seconds" )
1097
1098 # Check ping result here..add code for it
1099
1100 main.step( "Bring link between s3 and s28 back up" )
shahshreya9294c8d2015-01-21 15:54:16 -08001101 LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
1102 time.sleep( linkSleep )
1103 topologyOutput = main.ONOS2.topology()
1104 LinkUp = main.ONOS1.checkStatus(
1105 topologyOutput,
kelvin-onlab8a832582015-01-16 17:06:11 -08001106 activeSwitches,
1107 str( links ) )
shahshreya9294c8d2015-01-21 15:54:16 -08001108 if LinkUp == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001109 main.log.report( "Link up discovered properly" )
1110 utilities.assert_equals(
1111 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -08001112 actual=LinkUp,
kelvin-onlab8a832582015-01-16 17:06:11 -08001113 onpass="Link up discovered properly",
1114 onfail="Link up was not discovered in " +
shahshreya9294c8d2015-01-21 15:54:16 -08001115 str( linkSleep ) +
kelvin-onlab8a832582015-01-16 17:06:11 -08001116 " seconds" )
1117
1118 # NOTE Check ping result here..add code for it
1119
1120 main.step( "Compare ONOS Topology to MN Topology" )
1121 Topo = TestONTopology(
1122 main.Mininet1,
1123 ctrls ) # can also add Intent API info for intent operations
shahshreya4e13a062014-11-11 16:46:18 -08001124 MNTopo = Topo
shahshreya9294c8d2015-01-21 15:54:16 -08001125 TopologyCheck = main.TRUE
kelvin-onlab8a832582015-01-16 17:06:11 -08001126
shahshreya9294c8d2015-01-21 15:54:16 -08001127 devicesJson = main.ONOS2.devices()
1128 linksJson = main.ONOS2.links()
1129 portsJson = main.ONOS2.ports()
kelvin-onlab8a832582015-01-16 17:06:11 -08001130
shahshreya9294c8d2015-01-21 15:54:16 -08001131 result1 = main.Mininet1.compareSwitches(
kelvin-onlab8a832582015-01-16 17:06:11 -08001132 MNTopo,
shahshreya9294c8d2015-01-21 15:54:16 -08001133 json.loads( devicesJson ) )
1134 result2 = main.Mininet1.compareLinks(
kelvin-onlab8a832582015-01-16 17:06:11 -08001135 MNTopo,
shahshreya9294c8d2015-01-21 15:54:16 -08001136 json.loads( linksJson ) )
1137 # result3 = main.Mininet1.comparePorts(
1138 # MNTopo, json.loads( portsJson ) )
kelvin-onlab8a832582015-01-16 17:06:11 -08001139
shahshreya9294c8d2015-01-21 15:54:16 -08001140 # result = result1 and result2 and result3
shahshreya4e13a062014-11-11 16:46:18 -08001141 result = result1 and result2
1142 print "***********************"
kelvin-onlab8a832582015-01-16 17:06:11 -08001143
shahshreya4e13a062014-11-11 16:46:18 -08001144 if result == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001145 main.log.report( "ONOS" + " Topology matches MN Topology" )
1146 utilities.assert_equals(
1147 expect=main.TRUE,
1148 actual=result,
1149 onpass="ONOS" +
1150 " Topology matches MN Topology",
1151 onfail="ONOS" +
1152 " Topology does not match MN Topology" )
1153
shahshreya9294c8d2015-01-21 15:54:16 -08001154 TopologyCheck = TopologyCheck and result
kelvin-onlab8a832582015-01-16 17:06:11 -08001155 utilities.assert_equals(
1156 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -08001157 actual=TopologyCheck,
kelvin-onlab8a832582015-01-16 17:06:11 -08001158 onpass="Topology checks passed",
1159 onfail="Topology checks failed" )
1160
shahshreya9294c8d2015-01-21 15:54:16 -08001161 result = LinkDown and LinkUp and TopologyCheck
kelvin-onlab8a832582015-01-16 17:06:11 -08001162 utilities.assert_equals( expect=main.TRUE, actual=result,
1163 onpass="Link failure is discovered correctly",
1164 onfail="Link Discovery failed" )
shahshreya4e13a062014-11-11 16:46:18 -08001165
kelvin-onlab8a832582015-01-16 17:06:11 -08001166 def CASE8( self ):
1167 """
shahshreya82ecd282015-02-05 16:48:03 -08001168 Intent removal
kelvin-onlab8a832582015-01-16 17:06:11 -08001169 """
shahshreya82ecd282015-02-05 16:48:03 -08001170 import time
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001171 main.log.report( "This testcase removes any previously added intents" +
shahshreya82ecd282015-02-05 16:48:03 -08001172 " before adding any new set of intents" )
kelvin-onlab8a832582015-01-16 17:06:11 -08001173 main.log.report( "__________________________________" )
shahshreya82ecd282015-02-05 16:48:03 -08001174 main.log.info( "intent removal" )
1175 main.case( "Removing installed intents" )
kelvin-onlab8a832582015-01-16 17:06:11 -08001176 main.step( "Obtain the intent id's" )
shahshreya9294c8d2015-01-21 15:54:16 -08001177 intentResult = main.ONOS2.intents( jsonFormat=False )
1178 main.log.info( "intent_result = " + intentResult )
shahshreya9294c8d2015-01-21 15:54:16 -08001179 intentLinewise = intentResult.split( "\n" )
kelvin-onlab8a832582015-01-16 17:06:11 -08001180
shahshreyab189da22015-02-25 10:18:26 -08001181 intentList = [line for line in intentLinewise \
1182 if line.startswith( "id=")]
1183 intentids = [line.split( "," )[ 0 ].split( "=" )[ 1 ] for line in \
1184 intentList]
shahshreya4e13a062014-11-11 16:46:18 -08001185 for id in intentids:
1186 print "id = ", id
kelvin-onlab8a832582015-01-16 17:06:11 -08001187
1188 main.step(
1189 "Iterate through the intentids list and remove each intent" )
shahshreya4e13a062014-11-11 16:46:18 -08001190 for id in intentids:
shahshreya9294c8d2015-01-21 15:54:16 -08001191 main.ONOS2.removeIntent( intentId=id )
kelvin-onlab8a832582015-01-16 17:06:11 -08001192
shahshreya9294c8d2015-01-21 15:54:16 -08001193 intentResult = main.ONOS2.intents( jsonFormat=False )
1194 main.log.info( "intent_result = " + intentResult )
shahshreyab189da22015-02-25 10:18:26 -08001195
1196 intentList = [line for line in intentResult.split( "\n" ) \
1197 if line.startswith( "id=")]
1198 intentState = [line.split( "," )[ 1 ].split( "=" )[ 1 ] for line in \
1199 intentList]
1200 for state in intentState:
1201 print state
1202
1203 case8Result = main.TRUE
1204 for state in intentState:
1205 if state != 'WITHDRAWN':
1206 case8Result = main.FALSE
1207 break
1208
shahshreya9294c8d2015-01-21 15:54:16 -08001209 if case8Result == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001210 main.log.report( "Intent removal successful" )
shahshreya4e13a062014-11-11 16:46:18 -08001211 else:
kelvin-onlab8a832582015-01-16 17:06:11 -08001212 main.log.report( "Intent removal failed" )
1213
shahshreya9294c8d2015-01-21 15:54:16 -08001214 PingResult = main.TRUE
1215 if case8Result == main.TRUE:
shahshreyae6c7cf42014-11-26 16:39:01 -08001216 i = 8
kelvin-onlab8a832582015-01-16 17:06:11 -08001217 while i < 18:
1218 main.log.info(
1219 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
1220 ping = main.Mininet1.pingHost(
1221 src="h" + str( i ), target="h" + str( i + 10 ) )
1222 if ping == main.TRUE:
shahshreyae6c7cf42014-11-26 16:39:01 -08001223 i = 19
shahshreya9294c8d2015-01-21 15:54:16 -08001224 PingResult = PingResult and main.TRUE
kelvin-onlab8a832582015-01-16 17:06:11 -08001225 elif ping == main.FALSE:
1226 i += 1
shahshreya9294c8d2015-01-21 15:54:16 -08001227 PingResult = PingResult and main.FALSE
shahshreyae6c7cf42014-11-26 16:39:01 -08001228 else:
kelvin-onlab8a832582015-01-16 17:06:11 -08001229 main.log.info( "Unknown error" )
shahshreya9294c8d2015-01-21 15:54:16 -08001230 PingResult = main.ERROR
shahshreya4e13a062014-11-11 16:46:18 -08001231
kelvin-onlab8a832582015-01-16 17:06:11 -08001232 # Note: If the ping result failed, that means the intents have been
1233 # withdrawn correctly.
shahshreya9294c8d2015-01-21 15:54:16 -08001234 if PingResult == main.TRUE:
shahshreya82ecd282015-02-05 16:48:03 -08001235 main.log.report( "Installed intents have not been withdrawn correctly" )
kelvin-onlab8a832582015-01-16 17:06:11 -08001236 # main.cleanup()
1237 # main.exit()
shahshreya9294c8d2015-01-21 15:54:16 -08001238 if PingResult == main.FALSE:
shahshreya82ecd282015-02-05 16:48:03 -08001239 main.log.report( "Installed intents have been withdrawn correctly" )
shahshreya4e13a062014-11-11 16:46:18 -08001240
shahshreya9294c8d2015-01-21 15:54:16 -08001241 case8Result = case8Result and PingResult
shahshreyae6c7cf42014-11-26 16:39:01 -08001242
shahshreya9294c8d2015-01-21 15:54:16 -08001243 if case8Result == main.FALSE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001244 main.log.report( "Intent removal successful" )
shahshreyae6c7cf42014-11-26 16:39:01 -08001245 else:
kelvin-onlab8a832582015-01-16 17:06:11 -08001246 main.log.report( "Intent removal failed" )
shahshreyae6c7cf42014-11-26 16:39:01 -08001247
shahshreya9294c8d2015-01-21 15:54:16 -08001248 utilities.assert_equals( expect=main.FALSE, actual=case8Result,
1249 onpass="Intent removal test passed",
1250 onfail="Intent removal test failed" )
shahshreya4e13a062014-11-11 16:46:18 -08001251
kelvin-onlab8a832582015-01-16 17:06:11 -08001252 def CASE9( self ):
1253 main.log.report(
1254 "This testcase adds point intents and then does pingall" )
1255 main.log.report( "__________________________________" )
1256 main.log.info( "Adding point intents" )
1257 main.case(
shahshreya82ecd282015-02-05 16:48:03 -08001258 "Adding bidirectional point for mn hosts" +
1259 "( h8-h18, h9-h19, h10-h20, h11-h21, h12-h22, " +
1260 "h13-h23, h14-h24, h15-h25, h16-h26, h17-h27 )" )
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001261
1262 main.step( "Add point intents for mn hosts h8 and h18 or" +
1263 "ONOS hosts h8 and h12" )
1264 # main.step(var1)
shahshreya9294c8d2015-01-21 15:54:16 -08001265 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001266 "of:0000000000003008/1",
1267 "of:0000000000006018/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001268 if ptpIntentResult == main.TRUE:
1269 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001270 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001271 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001272
shahshreya9294c8d2015-01-21 15:54:16 -08001273 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001274 "of:0000000000006018/1",
1275 "of:0000000000003008/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001276 if ptpIntentResult == main.TRUE:
1277 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001278 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001279 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001280
shahshreya9294c8d2015-01-21 15:54:16 -08001281 var2 = "Add point intents for mn hosts h9&h19 or ONOS hosts h9&h13"
1282 main.step(var2)
1283 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001284 "of:0000000000003009/1",
1285 "of:0000000000006019/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001286 if ptpIntentResult == main.TRUE:
1287 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001288 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001289 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001290
shahshreya9294c8d2015-01-21 15:54:16 -08001291 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001292 "of:0000000000006019/1",
1293 "of:0000000000003009/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001294 if ptpIntentResult == main.TRUE:
1295 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001296 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001297 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001298
shahshreya9294c8d2015-01-21 15:54:16 -08001299 var3 = "Add point intents for MN hosts h10&h20 or ONOS hosts hA&h14"
1300 main.step(var3)
1301 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001302 "of:0000000000003010/1",
1303 "of:0000000000006020/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001304 if ptpIntentResult == main.TRUE:
1305 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001306 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001307 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001308
shahshreya9294c8d2015-01-21 15:54:16 -08001309 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001310 "of:0000000000006020/1",
1311 "of:0000000000003010/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001312 if ptpIntentResult == main.TRUE:
1313 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001314 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001315 # main.log.info( getIntentResult )
shahshreya4e13a062014-11-11 16:46:18 -08001316
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001317 var4 = "Add point intents for mininet hosts h11 and h21 or" +\
1318 " ONOS hosts hB and h15"
shahshreya9294c8d2015-01-21 15:54:16 -08001319 main.case(var4)
1320 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001321 "of:0000000000003011/1",
1322 "of:0000000000006021/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001323 if ptpIntentResult == main.TRUE:
1324 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001325 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001326 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001327
shahshreya9294c8d2015-01-21 15:54:16 -08001328 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001329 "of:0000000000006021/1",
1330 "of:0000000000003011/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001331 if ptpIntentResult == main.TRUE:
1332 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001333 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001334 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001335
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001336 var5 = "Add point intents for mininet hosts h12 and h22 " +\
1337 "ONOS hosts hC and h16"
shahshreya9294c8d2015-01-21 15:54:16 -08001338 main.case(var5)
1339 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001340 "of:0000000000003012/1",
1341 "of:0000000000006022/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001342 if ptpIntentResult == main.TRUE:
1343 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001344 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001345 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001346
shahshreya9294c8d2015-01-21 15:54:16 -08001347 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001348 "of:0000000000006022/1",
1349 "of:0000000000003012/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001350 if ptpIntentResult == main.TRUE:
1351 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001352 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001353 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001354
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001355 var6 = "Add point intents for mininet hosts h13 and h23 or" +\
1356 " ONOS hosts hD and h17"
shahshreya9294c8d2015-01-21 15:54:16 -08001357 main.case(var6)
1358 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001359 "of:0000000000003013/1",
1360 "of:0000000000006023/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001361 if ptpIntentResult == main.TRUE:
1362 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001363 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001364 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001365
shahshreya9294c8d2015-01-21 15:54:16 -08001366 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001367 "of:0000000000006023/1",
1368 "of:0000000000003013/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001369 if ptpIntentResult == main.TRUE:
1370 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001371 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001372 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001373
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001374 var7 = "Add point intents for mininet hosts h14 and h24 or" +\
1375 " ONOS hosts hE and h18"
shahshreya9294c8d2015-01-21 15:54:16 -08001376 main.case(var7)
1377 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001378 "of:0000000000003014/1",
1379 "of:0000000000006024/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001380 if ptpIntentResult == main.TRUE:
1381 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001382 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001383 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001384
shahshreya9294c8d2015-01-21 15:54:16 -08001385 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001386 "of:0000000000006024/1",
1387 "of:0000000000003014/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001388 if ptpIntentResult == main.TRUE:
1389 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001390 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001391 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001392
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001393 var8 = "Add point intents for mininet hosts h15 and h25 or" +\
1394 " ONOS hosts hF and h19"
shahshreya9294c8d2015-01-21 15:54:16 -08001395 main.case(var8)
1396 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001397 "of:0000000000003015/1",
1398 "of:0000000000006025/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001399 if ptpIntentResult == main.TRUE:
1400 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001401 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001402 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001403
shahshreya9294c8d2015-01-21 15:54:16 -08001404 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001405 "of:0000000000006025/1",
1406 "of:0000000000003015/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001407 if ptpIntentResult == main.TRUE:
1408 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001409 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001410 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001411
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001412 var9 = "Add intents for mininet hosts h16 and h26 or" +\
1413 " ONOS hosts h10 and h1A"
shahshreya9294c8d2015-01-21 15:54:16 -08001414 main.case(var9)
1415 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001416 "of:0000000000003016/1",
1417 "of:0000000000006026/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001418 if ptpIntentResult == main.TRUE:
1419 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001420 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001421 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001422
shahshreya9294c8d2015-01-21 15:54:16 -08001423 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001424 "of:0000000000006026/1",
1425 "of:0000000000003016/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001426 if ptpIntentResult == main.TRUE:
1427 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001428 main.log.info( "Point to point intent install successful" )
shahshreya9294c8d2015-01-21 15:54:16 -08001429 # main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001430
kelvin-onlabcf33bda2015-01-23 16:54:17 -08001431 var10 = "Add point intents for mininet hosts h17 and h27 or" +\
1432 " ONOS hosts h11 and h1B"
shahshreya9294c8d2015-01-21 15:54:16 -08001433 main.case(var10)
1434 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001435 "of:0000000000003017/1",
1436 "of:0000000000006027/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001437 if ptpIntentResult == main.TRUE:
1438 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001439 main.log.info( "Point to point intent install successful" )
shahshreyab189da22015-02-25 10:18:26 -08001440 #main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001441
shahshreya9294c8d2015-01-21 15:54:16 -08001442 ptpIntentResult = main.ONOS2.addPointIntent(
kelvin-onlab8a832582015-01-16 17:06:11 -08001443 "of:0000000000006027/1",
1444 "of:0000000000003017/1" )
shahshreya9294c8d2015-01-21 15:54:16 -08001445 if ptpIntentResult == main.TRUE:
1446 getIntentResult = main.ONOS2.intents()
kelvin-onlab8a832582015-01-16 17:06:11 -08001447 main.log.info( "Point to point intent install successful" )
shahshreyab189da22015-02-25 10:18:26 -08001448 #main.log.info( getIntentResult )
kelvin-onlab8a832582015-01-16 17:06:11 -08001449
1450 print(
shahshreya9294c8d2015-01-21 15:54:16 -08001451 "___________________________________________________________" )
shahshreya4e13a062014-11-11 16:46:18 -08001452
1453 flowHandle = main.ONOS2.flows()
shahshreya82ecd282015-02-05 16:48:03 -08001454 #main.log.info( "flows :" + flowHandle )
shahshreya4e13a062014-11-11 16:46:18 -08001455
1456 count = 1
1457 i = 8
shahshreya9294c8d2015-01-21 15:54:16 -08001458 PingResult = main.TRUE
kelvin-onlab8a832582015-01-16 17:06:11 -08001459 while i < 18:
1460 main.log.info(
1461 "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
1462 ping = main.Mininet1.pingHost(
1463 src="h" + str( i ), target="h" + str( i + 10 ) )
1464 if ping == main.FALSE and count < 5:
1465 count += 1
shahshreya9294c8d2015-01-21 15:54:16 -08001466 # i = 8
1467 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -08001468 main.log.report( "Ping between h" +
1469 str( i ) +
1470 " and h" +
1471 str( i +
1472 10 ) +
1473 " failed. Making attempt number " +
1474 str( count ) +
1475 " in 2 seconds" )
1476 time.sleep( 2 )
1477 elif ping == main.FALSE:
1478 main.log.report( "All ping attempts between h" +
1479 str( i ) +
1480 " and h" +
1481 str( i +
1482 10 ) +
1483 "have failed" )
1484 i = 19
shahshreya9294c8d2015-01-21 15:54:16 -08001485 PingResult = main.FALSE
kelvin-onlab8a832582015-01-16 17:06:11 -08001486 elif ping == main.TRUE:
1487 main.log.info( "Ping test between h" +
1488 str( i ) +
1489 " and h" +
1490 str( i +
1491 10 ) +
1492 "passed!" )
1493 i += 1
shahshreya9294c8d2015-01-21 15:54:16 -08001494 PingResult = main.TRUE
shahshreya4e13a062014-11-11 16:46:18 -08001495 else:
kelvin-onlab8a832582015-01-16 17:06:11 -08001496 main.log.info( "Unknown error" )
shahshreya9294c8d2015-01-21 15:54:16 -08001497 PingResult = main.ERROR
shahshreya4e13a062014-11-11 16:46:18 -08001498
shahshreya9294c8d2015-01-21 15:54:16 -08001499 if PingResult == main.FALSE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001500 main.log.report(
1501 "Point intents have not ben installed correctly. Cleaning up" )
1502 # main.cleanup()
1503 # main.exit()
shahshreya9294c8d2015-01-21 15:54:16 -08001504 if PingResult == main.TRUE:
kelvin-onlab8a832582015-01-16 17:06:11 -08001505 main.log.report( "Point Intents have been installed correctly" )
shahshreya4e13a062014-11-11 16:46:18 -08001506
shahshreya9294c8d2015-01-21 15:54:16 -08001507 case9Result = PingResult
kelvin-onlab8a832582015-01-16 17:06:11 -08001508 utilities.assert_equals(
1509 expect=main.TRUE,
shahshreya9294c8d2015-01-21 15:54:16 -08001510 actual=case9Result,
kelvin-onlab8a832582015-01-16 17:06:11 -08001511 onpass="Point intents addition and Pingall Test successful",
1512 onfail="Point intents addition and Pingall Test NOT successful" )