blob: c10784705a0ab290e23ce25bfb0e1284f2387f01 [file] [log] [blame]
kelvin-onlab4ff9cc12015-05-05 11:14:42 -07001
2# Testing the basic functionality of ONOS Next
3# For sanity and driver functionality excercises only.
4
5import time
6import json
7
kelvin-onlab05cf7732015-05-08 14:25:46 -07008class FuncIntent:
kelvin-onlab4ff9cc12015-05-05 11:14:42 -07009
10 def __init__( self ):
11 self.default = ''
12
13 def CASE10( self, main ):
14 import time
15 import os
kelvin-onlabe5239e52015-05-13 14:46:45 -070016 import imp
kelvin-onlab4ff9cc12015-05-05 11:14:42 -070017 """
18 Startup sequence:
19 cell <name>
20 onos-verify-cell
21 onos-remove-raft-log
22 git pull
23 mvn clean install
24 onos-package
25 onos-install -f
26 onos-wait-for-start
27 """
kelvin-onlabf70fd542015-05-07 18:41:40 -070028 global init
cameron@onlab.us59d29d92015-05-11 14:31:54 -070029 global globalONOSip
kelvin-onlabf70fd542015-05-07 18:41:40 -070030 try:
31 if type(init) is not bool:
32 init = False
33 except NameError:
34 init = False
kelvin-onlab132bd5b2015-05-18 18:15:26 -070035
36 main.wrapper = imp.load_source( 'FuncIntentFunction',
37 '/home/admin/ONLabTest/TestON/tests/' +
38 'FuncIntent/Dependency/' +
39 'FuncIntentFunction.py' )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -070040 #Local variables
41 cellName = main.params[ 'ENV' ][ 'cellName' ]
kelvin-onlabf70fd542015-05-07 18:41:40 -070042 apps = main.params[ 'ENV' ][ 'cellApps' ]
kelvin-onlabf70fd542015-05-07 18:41:40 -070043 gitBranch = main.params[ 'GIT' ][ 'branch' ]
cameron@onlab.us59d29d92015-05-11 14:31:54 -070044 benchIp = os.environ[ 'OCN' ]
kelvin-onlabf70fd542015-05-07 18:41:40 -070045 benchUser = main.params[ 'BENCH' ][ 'user' ]
kelvin-onlab05cf7732015-05-08 14:25:46 -070046 topology = main.params[ 'MININET' ][ 'topo' ]
kelvin-onlab4ff9cc12015-05-05 11:14:42 -070047 main.numSwitch = int( main.params[ 'MININET' ][ 'switch' ] )
kelvin-onlab65782a82015-05-07 14:12:13 -070048 main.numLinks = int( main.params[ 'MININET' ][ 'links' ] )
kelvin-onlabf70fd542015-05-07 18:41:40 -070049 main.numCtrls = main.params[ 'CTRL' ][ 'num' ]
kelvin-onlab132bd5b2015-05-18 18:15:26 -070050 main.ONOSport = []
51 main.hostsData = {}
kelvin-onlab4ff9cc12015-05-05 11:14:42 -070052 PULLCODE = False
53 if main.params[ 'GIT' ][ 'pull' ] == 'True':
54 PULLCODE = True
55 main.case( "Setting up test environment" )
kelvin-onlabf70fd542015-05-07 18:41:40 -070056 main.CLIs = []
57 for i in range( 1, int( main.numCtrls ) + 1 ):
58 main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
kelvin-onlab132bd5b2015-05-18 18:15:26 -070059 main.ONOSport.append( main.params[ 'CTRL' ][ 'port' + str( i ) ] )
cameron@onlab.us7fd2a522015-05-14 11:20:33 -070060
kelvin-onlabf70fd542015-05-07 18:41:40 -070061 # -- INIT SECTION, ONLY RUNS ONCE -- #
62 if init == False:
63 init = True
kelvin-onlabf70fd542015-05-07 18:41:40 -070064
kelvin-onlab05cf7732015-05-08 14:25:46 -070065 main.scale = ( main.params[ 'SCALE' ] ).split( "," )
66 main.numCtrls = int( main.scale[ 0 ] )
kelvin-onlabf70fd542015-05-07 18:41:40 -070067
68 if PULLCODE:
69 main.step( "Git checkout and pull " + gitBranch )
70 main.ONOSbench.gitCheckout( gitBranch )
71 gitPullResult = main.ONOSbench.gitPull()
72 if gitPullResult == main.ERROR:
73 main.log.error( "Error pulling git branch" )
74 main.step( "Using mvn clean & install" )
75 cleanInstallResult = main.ONOSbench.cleanInstall()
76 stepResult = cleanInstallResult
77 utilities.assert_equals( expect=main.TRUE,
78 actual=stepResult,
79 onpass="Successfully compiled " +
80 "latest ONOS",
81 onfail="Failed to compile " +
82 "latest ONOS" )
83 else:
84 main.log.warn( "Did not pull new code so skipping mvn " +
85 "clean install" )
kelvin-onlab132bd5b2015-05-18 18:15:26 -070086
cameron@onlab.us033cc0f2015-05-15 15:27:43 -070087 globalONOSip = main.ONOSbench.getOnosIps()
kelvin-onlab0a28a742015-05-18 16:03:13 -070088
cameron@onlab.us033cc0f2015-05-15 15:27:43 -070089 maxNodes = ( len(globalONOSip) - 2 )
kelvin-onlabf70fd542015-05-07 18:41:40 -070090
kelvin-onlab05cf7732015-05-08 14:25:46 -070091 main.numCtrls = int( main.scale[ 0 ] )
92 main.scale.remove( main.scale[ 0 ] )
cameron@onlab.us59d29d92015-05-11 14:31:54 -070093
cameron@onlab.us033cc0f2015-05-15 15:27:43 -070094 main.ONOSip = []
kelvin-onlab0a28a742015-05-18 16:03:13 -070095 for i in range( maxNodes ):
cameron@onlab.us59d29d92015-05-11 14:31:54 -070096 main.ONOSip.append( globalONOSip[i] )
97
kelvin-onlabf70fd542015-05-07 18:41:40 -070098 #kill off all onos processes
99 main.log.info( "Safety check, killing all ONOS processes" +
100 " before initiating enviornment setup" )
kelvin-onlab132bd5b2015-05-18 18:15:26 -0700101 for i in range(maxNodes):
102 main.ONOSbench.onosDie( globalONOSip[ i ] )
103
kelvin-onlab05cf7732015-05-08 14:25:46 -0700104 print "NODE COUNT = ", main.numCtrls
kelvin-onlabf70fd542015-05-07 18:41:40 -0700105 main.log.info( "Creating cell file" )
106 cellIp = []
kelvin-onlab05cf7732015-05-08 14:25:46 -0700107 for i in range( main.numCtrls ):
108 cellIp.append( str( main.ONOSip[ i ] ) )
kelvin-onlabf70fd542015-05-07 18:41:40 -0700109 print cellIp
110 main.ONOSbench.createCellFile( benchIp, cellName, "",
111 str( apps ), *cellIp )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700112
113 main.step( "Apply cell to environment" )
114 cellResult = main.ONOSbench.setCell( cellName )
115 verifyResult = main.ONOSbench.verifyCell()
116 stepResult = cellResult and verifyResult
117 utilities.assert_equals( expect=main.TRUE,
118 actual=stepResult,
119 onpass="Successfully applied cell to " + \
120 "environment",
121 onfail="Failed to apply cell to environment " )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700122
123 main.step( "Creating ONOS package" )
124 packageResult = main.ONOSbench.onosPackage()
125 stepResult = packageResult
126 utilities.assert_equals( expect=main.TRUE,
127 actual=stepResult,
128 onpass="Successfully created ONOS package",
129 onfail="Failed to create ONOS package" )
130
131 main.step( "Uninstalling ONOS package" )
kelvin-onlabf70fd542015-05-07 18:41:40 -0700132 onosUninstallResult = main.TRUE
cameron@onlab.us033cc0f2015-05-15 15:27:43 -0700133 for i in range( main.numCtrls ):
kelvin-onlabf70fd542015-05-07 18:41:40 -0700134 onosUninstallResult = onosUninstallResult and \
kelvin-onlab05cf7732015-05-08 14:25:46 -0700135 main.ONOSbench.onosUninstall( nodeIp=main.ONOSip[ i ] )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700136 stepResult = onosUninstallResult
137 utilities.assert_equals( expect=main.TRUE,
138 actual=stepResult,
139 onpass="Successfully uninstalled ONOS package",
140 onfail="Failed to uninstall ONOS package" )
141 time.sleep( 5 )
142 main.step( "Installing ONOS package" )
kelvin-onlabf70fd542015-05-07 18:41:40 -0700143 onosInstallResult = main.TRUE
cameron@onlab.us033cc0f2015-05-15 15:27:43 -0700144 for i in range( main.numCtrls ):
kelvin-onlabf70fd542015-05-07 18:41:40 -0700145 onosInstallResult = onosInstallResult and \
kelvin-onlab05cf7732015-05-08 14:25:46 -0700146 main.ONOSbench.onosInstall( node=main.ONOSip[ i ] )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700147 stepResult = onosInstallResult
148 utilities.assert_equals( expect=main.TRUE,
149 actual=stepResult,
150 onpass="Successfully installed ONOS package",
151 onfail="Failed to install ONOS package" )
152
cameron@onlab.us59d29d92015-05-11 14:31:54 -0700153 time.sleep( 20 )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700154 main.step( "Starting ONOS service" )
155 stopResult = main.TRUE
156 startResult = main.TRUE
kelvin-onlabf70fd542015-05-07 18:41:40 -0700157 onosIsUp = main.TRUE
kelvin-onlab05cf7732015-05-08 14:25:46 -0700158 for i in range( main.numCtrls ):
159 onosIsUp = onosIsUp and main.ONOSbench.isup( main.ONOSip[ i ] )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700160 if onosIsUp == main.TRUE:
161 main.log.report( "ONOS instance is up and ready" )
162 else:
163 main.log.report( "ONOS instance may not be up, stop and " +
164 "start ONOS again " )
kelvin-onlab05cf7732015-05-08 14:25:46 -0700165 for i in range( main.numCtrls ):
kelvin-onlabf70fd542015-05-07 18:41:40 -0700166 stopResult = stopResult and \
kelvin-onlab05cf7732015-05-08 14:25:46 -0700167 main.ONOSbench.onosStop( main.ONOSip[ i ] )
168 for i in range( main.numCtrls ):
kelvin-onlabf70fd542015-05-07 18:41:40 -0700169 startResult = startResult and \
kelvin-onlab05cf7732015-05-08 14:25:46 -0700170 main.ONOSbench.onosStart( main.ONOSip[ i ] )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700171 stepResult = onosIsUp and stopResult and startResult
172 utilities.assert_equals( expect=main.TRUE,
173 actual=stepResult,
174 onpass="ONOS service is ready",
175 onfail="ONOS service did not start properly" )
kelvin-onlabe5239e52015-05-13 14:46:45 -0700176
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700177 main.step( "Start ONOS cli" )
kelvin-onlabf70fd542015-05-07 18:41:40 -0700178 cliResult = main.TRUE
kelvin-onlab05cf7732015-05-08 14:25:46 -0700179 for i in range( main.numCtrls ):
180 cliResult = cliResult and \
181 main.CLIs[i].startOnosCli( main.ONOSip[ i ] )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700182 stepResult = cliResult
183 utilities.assert_equals( expect=main.TRUE,
184 actual=stepResult,
185 onpass="Successfully start ONOS cli",
186 onfail="Failed to start ONOS cli" )
187
kelvin-onlab0a28a742015-05-18 16:03:13 -0700188 def CASE9( self, main ):
kelvin-onlab132bd5b2015-05-18 18:15:26 -0700189 '''
190 Report errors/warnings/exceptions
191 '''
192 main.log.info( "Error report: \n" )
193 main.ONOSbench.logReport( globalONOSip[0],
194 [ "INFO", "FOLLOWER", "WARN", "flow", "ERROR" , "Except" ],
195 "s" )
196 #main.ONOSbench.logReport( globalONOSip[1], [ "INFO" ], "d" )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700197
198 def CASE11( self, main ):
199 """
kelvin-onlab05cf7732015-05-08 14:25:46 -0700200 Start mininet
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700201 """
kelvin-onlab05cf7732015-05-08 14:25:46 -0700202 main.log.report( "Start Mininet topology" )
kelvin-onlab132bd5b2015-05-18 18:15:26 -0700203 main.log.case( "Start Mininet topology" )
204
kelvin-onlabf70fd542015-05-07 18:41:40 -0700205 main.step( "Starting Mininet Topology" )
206 topoResult = main.Mininet1.startNet( topoFile=topology )
207 stepResult = topoResult
208 utilities.assert_equals( expect=main.TRUE,
209 actual=stepResult,
210 onpass="Successfully loaded topology",
211 onfail="Failed to load topology" )
212 # Exit if topology did not load properly
213 if not topoResult:
214 main.cleanup()
215 main.exit()
216
kelvin-onlab05cf7732015-05-08 14:25:46 -0700217 def CASE12( self, main ):
218 """
219 Assign mastership to controllers
220 """
221 import re
222
kelvin-onlabe5239e52015-05-13 14:46:45 -0700223 main.case( "Assign switches to controllers" )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700224 main.step( "Assigning switches to controllers" )
225 assignResult = main.TRUE
kelvin-onlab5cbf9992015-05-05 14:34:07 -0700226 for i in range( 1, ( main.numSwitch + 1 ) ):
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700227 main.Mininet1.assignSwController( sw=str( i ),
228 count=1,
kelvin-onlab05cf7732015-05-08 14:25:46 -0700229 ip1=main.ONOSip[ 0 ],
230 port1=main.ONOSport[ 0 ] )
kelvin-onlab5cbf9992015-05-05 14:34:07 -0700231 for i in range( 1, ( main.numSwitch + 1 ) ):
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700232 response = main.Mininet1.getSwController( "s" + str( i ) )
233 print( "Response is " + str( response ) )
kelvin-onlab05cf7732015-05-08 14:25:46 -0700234 if re.search( "tcp:" + main.ONOSip[ 0 ], response ):
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700235 assignResult = assignResult and main.TRUE
236 else:
237 assignResult = main.FALSE
238 stepResult = assignResult
239 utilities.assert_equals( expect=main.TRUE,
240 actual=stepResult,
241 onpass="Successfully assigned switches" +
242 "to controller",
243 onfail="Failed to assign switches to " +
244 "controller" )
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700245 def CASE13( self, main ):
246 """
247 Discover all hosts and store its data to a dictionary
248 """
249 main.case( "Discover all hosts" )
250
251 stepResult = main.TRUE
kelvin-onlab132bd5b2015-05-18 18:15:26 -0700252 main.step( "Discover all hosts using pingall " )
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700253 stepResult = main.wrapper.getHostsData( main )
kelvin-onlab08900012015-05-20 14:30:44 -0700254 utilities.assert_equals( expect=main.TRUE,
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700255 actual=stepResult,
256 onpass="Successfully discovered hosts",
257 onfail="Failed to discover hosts" )
kelvin-onlab4ff9cc12015-05-05 11:14:42 -0700258
kelvin-onlabf70fd542015-05-07 18:41:40 -0700259 def CASE1001( self, main ):
kelvin-onlab7c577e82015-05-07 10:45:16 -0700260 """
kelvin-onlab65782a82015-05-07 14:12:13 -0700261 Add host intents between 2 host:
262 - Discover hosts
263 - Add host intents
264 - Check intents
kelvin-onlabe5239e52015-05-13 14:46:45 -0700265 - Verify flows
kelvin-onlab65782a82015-05-07 14:12:13 -0700266 - Ping hosts
267 - Reroute
268 - Link down
kelvin-onlabe5239e52015-05-13 14:46:45 -0700269 - Verify flows
270 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700271 - Ping hosts
272 - Link up
kelvin-onlabe5239e52015-05-13 14:46:45 -0700273 - Verify flows
274 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700275 - Ping hosts
276 - Remove intents
kelvin-onlab7c577e82015-05-07 10:45:16 -0700277 """
278 import time
279 import json
kelvin-onlab65782a82015-05-07 14:12:13 -0700280 import re
kelvin-onlabe5239e52015-05-13 14:46:45 -0700281
282 # Assert variables - These variable's name|format must be followed
283 # if you want to use the wrapper function
284 assert main, "There is no main"
285 assert main.CLIs, "There is no main.CLIs"
286 assert main.Mininet1, "Mininet handle should be named Mininet1"
287 assert main.numSwitch, "Placed the total number of switch topology in \
288 main.numSwitch"
289
kelvin-onlabe5239e52015-05-13 14:46:45 -0700290 main.case( "Add host intents between 2 host" )
kelvin-onlab05cf7732015-05-08 14:25:46 -0700291
kelvin-onlabe5239e52015-05-13 14:46:45 -0700292 stepResult = main.TRUE
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700293 main.step( "IPV4: Add host intents between h1 and h9" )
294 stepResult = main.wrapper.hostIntent( main,
295 name='IPV4',
296 host1='h1',
297 host2='h9',
298 host1Id='00:00:00:00:00:01/-1',
299 host2Id='00:00:00:00:00:09/-1',
300 sw1='s5',
301 sw2='s2',
302 expectedLink=18 )
kelvin-onlab7c577e82015-05-07 10:45:16 -0700303
kelvin-onlabe5239e52015-05-13 14:46:45 -0700304 utilities.assert_equals( expect=main.TRUE,
305 actual=stepResult,
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700306 onpass="IPV4: Add host intent successful",
307 onfail="IPV4: Add host intent failed" )
308 stepResult = main.TRUE
309
kelvin-onlab381b34c2015-05-21 09:21:06 -0700310 main.step( "DUALSTACK1: Add host intents between h3 and h11" )
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700311 stepResult = main.wrapper.hostIntent( main,
312 name='DUALSTACK',
313 host1='h3',
314 host2='h11',
315 host1Id='00:00:00:00:00:03/-1',
kelvin-onlab132bd5b2015-05-18 18:15:26 -0700316 host2Id='00:00:00:00:00:0B/-1',
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700317 sw1='s5',
318 sw2='s2',
319 expectedLink=18 )
320
321 utilities.assert_equals( expect=main.TRUE,
322 actual=stepResult,
kelvin-onlab381b34c2015-05-21 09:21:06 -0700323 onpass="DUALSTACK1: Add host intent" +
324 " successful",
325 onfail="DUALSTACK1: Add host intent failed" )
326
327 stepResult = main.TRUE
328 main.step( "DUALSTACK2: Add host intents between h1 and h9" )
329 stepResult = main.wrapper.hostIntent( main,
330 name='DUALSTACK2',
331 host1='h1',
332 host2='h11',
333 sw1='s5',
334 sw2='s2',
335 expectedLink=18 )
336
337 utilities.assert_equals( expect=main.TRUE,
338 actual=stepResult,
339 onpass="DUALSTACK2: Add host intent" +
340 " successful",
341 onfail="DUALSTACK2: Add host intent failed" )
kelvin-onlab7c577e82015-05-07 10:45:16 -0700342
kaouthera6f37d852015-05-27 13:52:08 -0700343 stepResult = main.TRUE
344 main.step( "VLAN1: Add vlan host intents between h4 and h12" )
345 stepResult = main.wrapper.hostIntent( main,
346 name='VLAN1',
347 host1='h4',
348 host2='h12',
349 host1Id='00:00:00:00:00:04/100',
350 host2Id='00:00:00:00:00:0C/100',
351 sw1='s5',
352 sw2='s2',
353 expectedLink=18 )
354
355 utilities.assert_equals( expect=main.TRUE,
356 actual=stepResult,
357 onpass="VLAN1: Add vlan host intent successful",
358 onfail="VLAN1: Add vlan host intent failed" )
359 stepResult = main.TRUE
360 main.step( "VLAN2: Add inter vlan host intents between h13 and h20" )
361 stepResult = main.wrapper.hostIntent( main,
362 name='VLAN2',
363 host1='h13',
364 host2='h20',
365 host1Id='',
366 host2Id='',
367 sw1='s5',
368 sw2='s2',
369 expectedLink=18 )
370
371 utilities.assert_equals( expect=main.FALSE,
372 actual=stepResult,
373 onpass="VLAN2: Add inter vlan host intent successful",
374 onfail="VLAN2: Add inter vlan host intent failed" )
375
kelvin-onlabf70fd542015-05-07 18:41:40 -0700376 def CASE1002( self, main ):
kelvin-onlab65782a82015-05-07 14:12:13 -0700377 """
378 Add point intents between 2 hosts:
kelvin-onlabe5239e52015-05-13 14:46:45 -0700379 - Get device ids | ports
kelvin-onlab65782a82015-05-07 14:12:13 -0700380 - Add point intents
381 - Check intents
kelvin-onlabe5239e52015-05-13 14:46:45 -0700382 - Verify flows
kelvin-onlab65782a82015-05-07 14:12:13 -0700383 - Ping hosts
384 - Reroute
385 - Link down
kelvin-onlabe5239e52015-05-13 14:46:45 -0700386 - Verify flows
387 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700388 - Ping hosts
389 - Link up
kelvin-onlabe5239e52015-05-13 14:46:45 -0700390 - Verify flows
391 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700392 - Ping hosts
393 - Remove intents
394 """
kelvin-onlabe5239e52015-05-13 14:46:45 -0700395 import time
396 import json
397 import re
kelvin-onlabe5239e52015-05-13 14:46:45 -0700398
399 # Assert variables - These variable's name|format must be followed
400 # if you want to use the wrapper function
401 assert main, "There is no main"
402 assert main.CLIs, "There is no main.CLIs"
403 assert main.Mininet1, "Mininet handle should be named Mininet1"
404 assert main.numSwitch, "Placed the total number of switch topology in \
405 main.numSwitch"
406
kelvin-onlabb2235602015-05-13 17:51:06 -0700407 main.case( "Add point intents between 2 devices" )
408
409 stepResult = main.TRUE
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700410 main.step( "IPV4: Add point intents between h1 and h9" )
411 stepResult = main.wrapper.pointIntent(
412 main,
413 name="IPV4",
414 host1="h1",
415 host2="h9",
416 deviceId1="of:0000000000000005/1",
417 deviceId2="of:0000000000000006/1",
418 port1="",
419 port2="",
420 ethType="IPV4",
421 mac1="00:00:00:00:00:01",
422 mac2="00:00:00:00:00:09",
423 bandwidth="",
424 lambdaAlloc=False,
425 ipProto="",
426 ip1="",
427 ip2="",
428 tcp1="",
429 tcp2="",
430 sw1="s5",
431 sw2="s2",
432 expectedLink=18 )
433
kelvin-onlabb2235602015-05-13 17:51:06 -0700434 utilities.assert_equals( expect=main.TRUE,
435 actual=stepResult,
kelvin-onlab2ccad6e2015-05-18 10:36:54 -0700436 onpass="IPV4: Add point intent successful",
437 onfail="IPV4: Add point intent failed" )
kelvin-onlab65782a82015-05-07 14:12:13 -0700438
kelvin-onlab381b34c2015-05-21 09:21:06 -0700439 stepResult = main.TRUE
440 main.step( "DUALSTACK1: Add point intents between h1 and h9" )
441 stepResult = main.wrapper.pointIntent(
442 main,
443 name="DUALSTACK1",
444 host1="h3",
445 host2="h11",
446 deviceId1="of:0000000000000005",
447 deviceId2="of:0000000000000006",
448 port1="3",
449 port2="3",
450 ethType="IPV4",
451 mac1="00:00:00:00:00:03",
452 mac2="00:00:00:00:00:0B",
453 bandwidth="",
454 lambdaAlloc=False,
455 ipProto="",
456 ip1="",
457 ip2="",
458 tcp1="",
459 tcp2="",
460 sw1="s5",
461 sw2="s2",
462 expectedLink=18 )
463
464 utilities.assert_equals( expect=main.TRUE,
465 actual=stepResult,
466 onpass="DUALSTACK1: Add point intent" +
467 " successful",
kaouthera426d0ab2015-05-28 17:41:10 -0700468 onfail="DUALSTACK1: Add point intent failed" )
469 stepResult = main.TRUE
470 main.step( "VLAN: Add point intents between h5 and h21" )
471 stepResult = main.wrapper.pointIntent(
472 main,
473 name="VLAN",
474 host1="h5",
475 host2="h21",
476 deviceId1="of:0000000000000005/5",
477 deviceId2="of:0000000000000007/5",
478 port1="",
479 port2="",
480 ethType="IPV4",
481 mac1="00:00:00:00:00:05",
482 mac2="00:00:00:00:00:15",
483 bandwidth="",
484 lambdaAlloc=False,
485 ipProto="",
486 ip1="",
487 ip2="",
488 tcp1="",
489 tcp2="",
490 sw1="s5",
491 sw2="s2",
492 expectedLink=18 )
493
494 utilities.assert_equals( expect=main.TRUE,
495 actual=stepResult,
496 onpass="VLAN: Add point intent successful",
497 onfail="VLAN: Add point intent failed" )
kelvin-onlabc751ab42015-05-21 14:09:39 -0700498
kelvin-onlabf70fd542015-05-07 18:41:40 -0700499 def CASE1003( self, main ):
kelvin-onlab65782a82015-05-07 14:12:13 -0700500 """
501 Add single point to multi point intents
502 - Get device ids
503 - Add single point to multi point intents
504 - Check intents
kelvin-onlabe5239e52015-05-13 14:46:45 -0700505 - Verify flows
kelvin-onlab65782a82015-05-07 14:12:13 -0700506 - Ping hosts
507 - Reroute
508 - Link down
kelvin-onlabe5239e52015-05-13 14:46:45 -0700509 - Verify flows
510 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700511 - Ping hosts
512 - Link up
kelvin-onlabe5239e52015-05-13 14:46:45 -0700513 - Verify flows
514 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700515 - Ping hosts
516 - Remove intents
517 """
kelvin-onlabf0594d72015-05-19 17:25:12 -0700518 assert main, "There is no main"
519 assert main.CLIs, "There is no main.CLIs"
520 assert main.Mininet1, "Mininet handle should be named Mininet1"
521 assert main.numSwitch, "Placed the total number of switch topology in \
522 main.numSwitch"
kelvin-onlab65782a82015-05-07 14:12:13 -0700523
kelvin-onlabf0594d72015-05-19 17:25:12 -0700524 main.case( "Add single point to multi point intents between devices" )
525
526 stepResult = main.TRUE
527 main.step( "IPV4: Add single point to multi point intents" )
528 hostNames = [ 'h8', 'h16', 'h24' ]
529 devices = [ 'of:0000000000000005/8', 'of:0000000000000006/8', \
530 'of:0000000000000007/8' ]
531 macs = [ '00:00:00:00:00:08', '00:00:00:00:00:10', '00:00:00:00:00:18' ]
532 stepResult = main.wrapper.singleToMultiIntent(
533 main,
kelvin-onlab08900012015-05-20 14:30:44 -0700534 name="IPV4",
kelvin-onlabf0594d72015-05-19 17:25:12 -0700535 hostNames=hostNames,
536 devices=devices,
537 ports=None,
538 ethType="IPV4",
539 macs=macs,
540 bandwidth="",
541 lambdaAlloc=False,
542 ipProto="",
543 ipAddresses="",
544 tcp="",
kelvin-onlab08900012015-05-20 14:30:44 -0700545 sw1="s5",
546 sw2="s2",
547 expectedLink=18 )
kelvin-onlabf0594d72015-05-19 17:25:12 -0700548
549 utilities.assert_equals( expect=main.TRUE,
550 actual=stepResult,
551 onpass="IPV4: Successfully added single point"
552 + " to multi point intents",
553 onfail="IPV4: Failed to add single point" +
554 " to multi point intents" )
kelvin-onlab08900012015-05-20 14:30:44 -0700555
556 main.step( "IPV4_2: Add single point to multi point intents" )
557 hostNames = [ 'h8', 'h16', 'h24' ]
kelvin-onlab08900012015-05-20 14:30:44 -0700558 stepResult = main.wrapper.singleToMultiIntent(
559 main,
560 name="IPV4",
561 hostNames=hostNames,
562 ethType="IPV4",
563 lambdaAlloc=False )
564
565 utilities.assert_equals( expect=main.TRUE,
566 actual=stepResult,
567 onpass="IPV4_2: Successfully added single point"
568 + " to multi point intents",
569 onfail="IPV4_2: Failed to add single point" +
570 " to multi point intents" )
kaouthera426d0ab2015-05-28 17:41:10 -0700571 stepResult = main.TRUE
572 main.step( "VLAN: Add single point to multi point intents" )
573 hostNames = [ 'h4', 'h12', 'h20' ]
574 devices = [ 'of:0000000000000005/4', 'of:0000000000000006/4', \
575 'of:0000000000000007/4' ]
576 macs = [ '00:00:00:00:00:04', '00:00:00:00:00:0C', '00:00:00:00:00:14' ]
577 stepResult = main.wrapper.singleToMultiIntent(
578 main,
579 name="VLAN",
580 hostNames=hostNames,
581 devices=devices,
582 ports=None,
583 ethType="IPV4",
584 macs=macs,
585 bandwidth="",
586 lambdaAlloc=False,
587 ipProto="",
588 ipAddresses="",
589 tcp="",
590 sw1="s5",
591 sw2="s2",
592 expectedLink=18 )
593
594 utilities.assert_equals( expect=main.TRUE,
595 actual=stepResult,
596 onpass="VLAN: Successfully added single point"
597 + " to multi point intents",
598 onfail="VLAN: Failed to add single point" +
599 " to multi point intents" )
600
601 def CASE1004( self, main ):
602 """
kelvin-onlab65782a82015-05-07 14:12:13 -0700603 Add multi point to single point intents
604 - Get device ids
605 - Add multi point to single point intents
606 - Check intents
kelvin-onlabe5239e52015-05-13 14:46:45 -0700607 - Verify flows
kelvin-onlab65782a82015-05-07 14:12:13 -0700608 - Ping hosts
609 - Reroute
610 - Link down
kelvin-onlabe5239e52015-05-13 14:46:45 -0700611 - Verify flows
612 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700613 - Ping hosts
614 - Link up
kelvin-onlabe5239e52015-05-13 14:46:45 -0700615 - Verify flows
616 - Check topology
kelvin-onlab65782a82015-05-07 14:12:13 -0700617 - Ping hosts
kaouthera426d0ab2015-05-28 17:41:10 -0700618 - Remove intents
kelvin-onlab65782a82015-05-07 14:12:13 -0700619 """
kelvin-onlabc751ab42015-05-21 14:09:39 -0700620 assert main, "There is no main"
621 assert main.CLIs, "There is no main.CLIs"
622 assert main.Mininet1, "Mininet handle should be named Mininet1"
623 assert main.numSwitch, "Placed the total number of switch topology in \
624 main.numSwitch"
625
626 main.case( "Add multi point to single point intents between devices" )
627
628 stepResult = main.TRUE
629 main.step( "IPV4: Add multi point to single point intents" )
630 hostNames = [ 'h8', 'h16', 'h24' ]
631 devices = [ 'of:0000000000000005/8', 'of:0000000000000006/8', \
632 'of:0000000000000007/8' ]
633 macs = [ '00:00:00:00:00:08', '00:00:00:00:00:10', '00:00:00:00:00:18' ]
634 stepResult = main.wrapper.multiToSingleIntent(
635 main,
636 name="IPV4",
637 hostNames=hostNames,
638 devices=devices,
639 ports=None,
640 ethType="IPV4",
641 macs=macs,
642 bandwidth="",
643 lambdaAlloc=False,
644 ipProto="",
645 ipAddresses="",
646 tcp="",
647 sw1="s5",
648 sw2="s2",
649 expectedLink=18 )
650
651 utilities.assert_equals( expect=main.TRUE,
652 actual=stepResult,
653 onpass="IPV4: Successfully added multi point"
654 + " to single point intents",
655 onfail="IPV4: Failed to add multi point" +
656 " to single point intents" )
657
658 main.step( "IPV4_2: Add multi point to single point intents" )
659 hostNames = [ 'h8', 'h16', 'h24' ]
660 stepResult = main.wrapper.multiToSingleIntent(
661 main,
662 name="IPV4",
663 hostNames=hostNames,
664 ethType="IPV4",
665 lambdaAlloc=False )
666
667 utilities.assert_equals( expect=main.TRUE,
668 actual=stepResult,
669 onpass="IPV4_2: Successfully added multi point"
670 + " to single point intents",
671 onfail="IPV4_2: Failed to add multi point" +
672 " to single point intents" )
kaouthera426d0ab2015-05-28 17:41:10 -0700673
674 stepResult = main.TRUE
675 main.step( "VLAN: Add multi point to single point intents" )
676 hostNames = [ 'h5', 'h13', 'h21' ]
677 devices = [ 'of:0000000000000005/5', 'of:0000000000000006/5', \
678 'of:0000000000000007/5' ]
679 macs = [ '00:00:00:00:00:05', '00:00:00:00:00:0D', '00:00:00:00:00:15' ]
680 stepResult = main.wrapper.multiToSingleIntent(
681 main,
682 name="VLAN",
683 hostNames=hostNames,
684 devices=devices,
685 ports=None,
686 ethType="IPV4",
687 macs=macs,
688 bandwidth="",
689 lambdaAlloc=False,
690 ipProto="",
691 ipAddresses="",
692 tcp="",
693 sw1="s5",
694 sw2="s2",
695 expectedLink=18 )
696
697 utilities.assert_equals( expect=main.TRUE,
698 actual=stepResult,
699 onpass="VLAN: Successfully added multi point"
700 + " to single point intents",
701 onfail="VLAN: Failed to add multi point" +
702 " to single point intents" )