blob: 3f1f91d43dc0886c68396d1282696fc235291816 [file] [log] [blame]
zhanghaoyu451c1392015-08-07 19:21:16 +08001"""
2Description: This test is to check onos set configuration and flows with ovsdb connection.
3
4List of test cases:
5CASE1: Compile ONOS and push it to the test machines
6CASE2: Test ovsdb connection and tearDown
7CASE3: Test default br-int configuration and vxlan port
8CASE4: Test default openflow configuration
9CASE5: Test default flows
zhanghaoyu7474d8c62015-08-26 14:53:28 +080010CASE6: Configure Network Subnet Port
zhanghaoyu451c1392015-08-07 19:21:16 +080011CASE7: Test host go online and ping each other
zhanghaoyu7474d8c62015-08-26 14:53:28 +080012CASE8: Clear ovs configuration and host configuration
zhanghaoyu451c1392015-08-07 19:21:16 +080013zhanghaoyu7@huawei.com
14"""
15import os
16
Jon Hall8638b562017-05-24 16:39:59 -070017
zhanghaoyu451c1392015-08-07 19:21:16 +080018class FUNCovsdbtest:
19
20 def __init__( self ):
21 self.default = ''
22
23 def CASE1( self, main ):
24 """
25 CASE1 is to compile ONOS and push it to the test machines
26
27 Startup sequence:
alison6acef9f2016-09-28 12:29:08 -070028 Construct test variables
29 Safety check, kill all ONOS processes before setup
zhanghaoyu451c1392015-08-07 19:21:16 +080030 NOTE: temporary - onos-remove-raft-logs
alison6acef9f2016-09-28 12:29:08 -070031 Create ONOS package
32 Install ONOS package
zhanghaoyu451c1392015-08-07 19:21:16 +080033 start cli sessions
34 start ovsdb
35 start vtn apps
36 """
37 import os
alison6acef9f2016-09-28 12:29:08 -070038 import time
39 main.log.info( "ONOS Single node start ovsdb test - initialization" )
zhanghaoyu451c1392015-08-07 19:21:16 +080040 main.case( "Setting up test environment" )
41 main.caseExplanation = "Setup the test environment including " +\
42 "installing ONOS, start ONOS."
43
44 # load some variables from the params file
alison6acef9f2016-09-28 12:29:08 -070045 main.step( "Constructing test variables" )
46 gitPull = main.params[ 'GIT' ][ 'pull' ]
zhanghaoyu451c1392015-08-07 19:21:16 +080047 gitBranch = main.params[ 'GIT' ][ 'branch' ]
48 cellName = main.params[ 'ENV' ][ 'cellName' ]
49 ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
Jon Hall8638b562017-05-24 16:39:59 -070050 main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
51 cellAppString = main.params[ 'ENV' ][ 'cellApps' ]
zhanghaoyu451c1392015-08-07 19:21:16 +080052
alison6acef9f2016-09-28 12:29:08 -070053 if gitPull == 'True':
54 main.step( "Building ONOS in " + gitBranch + "branch" )
55 onosBuildResult = main.startUp.onosBuild( main, gitBranch )
56 stepResult = onosBuildResult
57 utilities.assert_equals( expect=main.TRUE,
58 actual=stepResult,
59 onpass="Successfully compiled latest ONOS",
Jon Hall8638b562017-05-24 16:39:59 -070060 onfail="Failed to compile latest ONOS" )
alison6acef9f2016-09-28 12:29:08 -070061 else:
62 main.log.warn( "Did not pull new code so skipping mvn " +
Jon Hall8638b562017-05-24 16:39:59 -070063 "clean install" )
alison6acef9f2016-09-28 12:29:08 -070064 main.ONOSbench.getVersion( report=True )
zhanghaoyu451c1392015-08-07 19:21:16 +080065
alison6acef9f2016-09-28 12:29:08 -070066 main.log.info( "Safety check, killing all ONOS processes" +
67 " before initiating environment setup" )
zhanghaoyu451c1392015-08-07 19:21:16 +080068
69 main.log.info( "Removing raft logs" )
70 main.ONOSbench.onosRemoveRaftLogs()
71
72 main.CLIs = []
73 main.nodes = []
Jon Hall8638b562017-05-24 16:39:59 -070074 main.numCtrls = 1
zhanghaoyu451c1392015-08-07 19:21:16 +080075
76 for i in range( 1, main.numCtrls + 1 ):
77 try:
78 main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
79 main.nodes.append( getattr( main, 'ONOS' + str( i ) ) )
80 ipList.append( main.nodes[ -1 ].ip_address )
81 except AttributeError:
82 break
83
alison6acef9f2016-09-28 12:29:08 -070084 main.step( "Uninstalling ONOS package" )
85 onosUninstallResult = main.TRUE
zhanghaoyu451c1392015-08-07 19:21:16 +080086 for node in main.nodes:
alison6acef9f2016-09-28 12:29:08 -070087 onosUninstallResult = onosUninstallResult and main.ONOSbench.onosUninstall( node.ip_address )
88 utilities.assert_equals( expect=main.TRUE,
89 actual=onosUninstallResult,
90 onpass="Successfully uninstalled ONOS package",
91 onfail="Failed to uninstall ONOS package" )
92 time.sleep( main.startUpSleep )
zhanghaoyu451c1392015-08-07 19:21:16 +080093
94 # Make sure ONOS process is not running
95 main.log.info( "Killing any ONOS processes" )
96 killResults = main.TRUE
97 for node in main.nodes:
98 killed = main.ONOSbench.onosKill( node.ip_address )
99 killResults = killResults and killed
zhanghaoyu451c1392015-08-07 19:21:16 +0800100 utilities.assert_equals( expect=main.TRUE,
alison6acef9f2016-09-28 12:29:08 -0700101 actual=onosUninstallResult,
102 onpass="Successfully kill all ONOS processes",
103 onfail="Failed to kill all ONOS processes" )
104
105 main.step( "Create cell file" )
106 main.ONOSbench.createCellFile( main.ONOSbench.ip_address, cellName,
107 main.OVSDB1.ip_address,
108 cellAppString, ipList )
109
110 main.step( "Apply cell to environment" )
111 cellResult = main.ONOSbench.setCell( cellName )
112 verifyResult = main.ONOSbench.verifyCell()
113 stepResult = cellResult and verifyResult
114 utilities.assert_equals( expect=main.TRUE,
115 actual=stepResult,
116 onpass="Successfully applied cell to environment",
117 onfail="Failed to apply cell to environment" )
118
zhanghaoyu451c1392015-08-07 19:21:16 +0800119 main.step( "Creating ONOS package" )
Jon Hallbd60ea02016-08-23 10:03:59 -0700120 packageResult = main.ONOSbench.buckBuild()
zhanghaoyu451c1392015-08-07 19:21:16 +0800121 utilities.assert_equals( expect=main.TRUE,
alison6acef9f2016-09-28 12:29:08 -0700122 actual=packageResult,
123 onpass="Successfully created ONOS package",
124 onfail="Failed to create ONOS package" )
zhanghaoyu451c1392015-08-07 19:21:16 +0800125
alison6acef9f2016-09-28 12:29:08 -0700126 time.sleep( main.startUpSleep )
zhanghaoyu451c1392015-08-07 19:21:16 +0800127 main.step( "Installing ONOS package" )
Jon Hall8638b562017-05-24 16:39:59 -0700128 onosInstallResult = main.ONOSbench.onosInstall( options="-f", node=main.nodes[ 0 ].ip_address )
zhanghaoyu451c1392015-08-07 19:21:16 +0800129 utilities.assert_equals( expect=main.TRUE, actual=onosInstallResult,
alison6acef9f2016-09-28 12:29:08 -0700130 onpass="Successfully installed ONOS package",
131 onfail="Failed to install ONOS package" )
zhanghaoyu451c1392015-08-07 19:21:16 +0800132
You Wangf5de25b2017-01-06 15:13:01 -0800133 main.step( "Set up ONOS secure SSH" )
134 secureSshResult = main.TRUE
135 for i in range( int( main.numCtrls ) ):
136 secureSshResult = secureSshResult and main.ONOSbench.onosSecureSSH( node=main.nodes[ i ].ip_address )
137 utilities.assert_equals( expect=main.TRUE, actual=secureSshResult,
138 onpass="Test step PASS",
139 onfail="Test step FAIL" )
140
alison6acef9f2016-09-28 12:29:08 -0700141 time.sleep( main.startUpSleep )
Jon Hall8638b562017-05-24 16:39:59 -0700142 main.step( "Starting ONOS service" )
alison6acef9f2016-09-28 12:29:08 -0700143 stopResult = main.TRUE
144 startResult = main.TRUE
145 onos1Isup = main.TRUE
zhanghaoyu451c1392015-08-07 19:21:16 +0800146 for i in range( 2 ):
alison6acef9f2016-09-28 12:29:08 -0700147 Isup = main.ONOSbench.isup( main.nodes[ 0 ].ip_address )
148 onos1Isup = onos1Isup and Isup
zhanghaoyu451c1392015-08-07 19:21:16 +0800149 if onos1Isup:
alison6acef9f2016-09-28 12:29:08 -0700150 main.log.report( "ONOS instance {0} is up and ready".format( i + 1 ) )
151 else:
152 main.log.report( "ONOS instance {0} may not be up, stop and ".format( i + 1 ) +
Jon Hall8638b562017-05-24 16:39:59 -0700153 "start ONOS again" )
alison6acef9f2016-09-28 12:29:08 -0700154 stopResult = stopResult and main.ONOSbench.onosStop( main.ONOSip[ i ] )
155 startResult = startResult and main.ONOSbench.onosStart( main.ONOSip[ i ] )
156 if not startResult or stopResult:
157 main.log.report( "ONOS instance {0} did not start correctly.".format( i + 1 ) )
158 stepResult = onos1Isup and stopResult and startResult
159 utilities.assert_equals( expect=main.TRUE, actual=stepResult,
160 onpass="ONOS service is ready on all nodes",
161 onfail="ONOS service did not start properly on all nodes" )
162
Jon Hall6509dbf2016-06-21 17:01:17 -0700163 main.step( "Starting ONOS CLI sessions" )
alison6acef9f2016-09-28 12:29:08 -0700164 cliResults = main.ONOScli1.startOnosCli( main.nodes[ 0 ].ip_address )
zhanghaoyu451c1392015-08-07 19:21:16 +0800165 utilities.assert_equals( expect=main.TRUE, actual=cliResults,
alison6acef9f2016-09-28 12:29:08 -0700166 onpass="Successfully start ONOS cli",
167 onfail="Failed to start ONOS cli" )
168
169 if cliResults == main.FALSE:
170 main.log.error( "Failed to start ONOS, stopping test" )
171 main.cleanup()
172 main.exit()
zhanghaoyu451c1392015-08-07 19:21:16 +0800173
174 main.step( "App Ids check" )
175 appCheck = main.ONOScli1.appToIDCheck()
176
alison6acef9f2016-09-28 12:29:08 -0700177 if appCheck != main.TRUE:
178 main.log.warn( main.CLIs[ 0 ].apps() )
179 main.log.warn( main.CLIs[ 0 ].appIDs() )
180
181 utilities.assert_equals( expect=main.TRUE, actual=appCheck,
zhanghaoyu451c1392015-08-07 19:21:16 +0800182 onpass="App Ids seem to be correct",
183 onfail="Something is wrong with app Ids" )
zhanghaoyu451c1392015-08-07 19:21:16 +0800184
alisond9915ea2016-08-12 10:16:26 -0700185 main.step( "Install onos-ovsdb" )
zhanghaoyu451c1392015-08-07 19:21:16 +0800186 installResults = main.ONOScli1.activateApp( "org.onosproject.ovsdb" )
187 utilities.assert_equals( expect=main.TRUE, actual=installResults,
188 onpass="Install onos-ovsdatabase successful",
189 onfail="Install onos-ovsdatabase failed" )
190
zhanghaoyu451c1392015-08-07 19:21:16 +0800191 main.step( "Install onos-app-vtn" )
192 installResults = main.ONOScli1.activateApp( "org.onosproject.vtn" )
193 utilities.assert_equals( expect=main.TRUE, actual=installResults,
194 onpass="Install onos-app-vtn successful",
195 onfail="Install onos-app-vtn failed" )
196
zhanghaoyu451c1392015-08-07 19:21:16 +0800197 def CASE2( self, main ):
zhanghaoyu451c1392015-08-07 19:21:16 +0800198 """
199 Test ovsdb connection and teardown
200 """
alison6acef9f2016-09-28 12:29:08 -0700201 import os
zhanghaoyu451c1392015-08-07 19:21:16 +0800202 import re
zhanghaoyu451c1392015-08-07 19:21:16 +0800203
204 main.case( "Test ovsdb connection and teardown" )
205 main.caseExplanation = "Test ovsdb connection create and delete" +\
206 " over ovsdb node and onos node "
207
208 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
209 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
210 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
211
212 main.step( "Set ovsdb node manager" )
213 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
214 stepResult = assignResult
215 utilities.assert_equals( expect=main.TRUE,
216 actual=stepResult,
217 onpass="Set ovsdb node manager sucess",
218 onfail="Set ovsdb node manager failed" )
219
220 main.step( "Check ovsdb node manager is " + str( ctrlip ) )
221 response = main.OVSDB1.getManager()
222 if re.search( ctrlip, response ):
223 stepResult = main.TRUE
224 else:
225 stepResult = main.FALSE
226 utilities.assert_equals( expect=main.TRUE,
227 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700228 onpass="Check ovsdb node manager is " + str( response ),
zhanghaoyu451c1392015-08-07 19:21:16 +0800229 onfail="Check ovsdb node manager failed" )
230
231 main.step( "Delete ovsdb node manager" )
232 deleteResult = main.OVSDB1.delManager( delaytime=delaytime )
233 stepResult = deleteResult
234 utilities.assert_equals( expect=main.TRUE,
235 actual=stepResult,
236 onpass="ovsdb node delete manager sucess",
237 onfail="ovsdb node delete manager failed" )
238
239 main.step( "Check ovsdb node delete manager " + str( ctrlip ) )
240 response = main.OVSDB1.getManager()
241 if not re.search( ctrlip, response ):
242 stepResult = main.TRUE
243 else:
244 stepResult = main.FALSE
245 utilities.assert_equals( expect=main.TRUE,
246 actual=stepResult,
247 onpass="Check ovsdb node delete manager sucess",
248 onfail="Check ovsdb node delete manager failed" )
249
250 def CASE3( self, main ):
zhanghaoyu451c1392015-08-07 19:21:16 +0800251 """
252 Test default br-int configuration and vxlan port
253 """
254 import re
alison6acef9f2016-09-28 12:29:08 -0700255 import os
zhanghaoyu451c1392015-08-07 19:21:16 +0800256
257 main.case( "Test default br-int configuration and vxlan port" )
258 main.caseExplanation = "onos create default br-int bridge and" +\
259 " vxlan port on the ovsdb node"
260
261 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
262 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
263 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
Jon Hall8638b562017-05-24 16:39:59 -0700264 OVSDB1Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip1' ] )
265 OVSDB2Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip2' ] )
zhanghaoyu451c1392015-08-07 19:21:16 +0800266
267 main.step( "ovsdb node 1 set ovs manager to " + str( ctrlip ) )
268 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
269 stepResult = assignResult
270 utilities.assert_equals( expect=main.TRUE,
271 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700272 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800273 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700274 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800275 str( ctrlip ) + " failed" )
276
277 main.step( "ovsdb node 2 set ovs manager to " + str( ctrlip ) )
278 assignResult = main.OVSDB2.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
279 stepResult = assignResult
280 utilities.assert_equals( expect=main.TRUE,
281 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700282 onpass="ovsdb node 2 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800283 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700284 onfail="ovsdb node 2 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800285 str( ctrlip ) + " failed" )
286
287 main.step( "Check ovsdb node 1 manager is " + str( ctrlip ) )
288 response = main.OVSDB1.getManager()
289 if re.search( ctrlip, response ):
290 stepResult = main.TRUE
291 else:
292 stepResult = main.FALSE
293 utilities.assert_equals( expect=main.TRUE,
294 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700295 onpass="ovsdb node 1 manager is " + str( response ),
zhanghaoyu451c1392015-08-07 19:21:16 +0800296 onfail="ovsdb node 1 manager check failed" )
297
298 main.step( "Check ovsdb node 2 manager is " + str( ctrlip ) )
299 response = main.OVSDB2.getManager()
300 if re.search( ctrlip, response ):
301 stepResult = main.TRUE
302 else:
303 stepResult = main.FALSE
304 utilities.assert_equals( expect=main.TRUE,
305 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700306 onpass="ovsdb node 2 manager is " + str( response ),
zhanghaoyu451c1392015-08-07 19:21:16 +0800307 onfail="ovsdb node 2 manager check failed" )
308
309 main.step( "Check default br-int bridge on ovsdb node " + str( OVSDB1Ip ) )
310 response = main.OVSDB1.listBr()
311 if re.search( "br-int", response ):
312 stepResult = main.TRUE
313 else:
314 stepResult = main.FALSE
315 utilities.assert_equals( expect=main.TRUE,
316 actual=stepResult,
317 onpass="onos add default bridge on the node 1 sucess",
318 onfail="onos add default bridge on the node 1 failed" )
319
320 main.step( "Check default br-int bridge on ovsdb node " + str( OVSDB2Ip ) )
321 response = main.OVSDB2.listBr()
322 if re.search( "br-int", response ):
323 stepResult = main.TRUE
324 else:
325 stepResult = main.FALSE
326 utilities.assert_equals( expect=main.TRUE,
327 actual=stepResult,
328 onpass="onos add default bridge on the node 2 sucess",
329 onfail="onos add default bridge on the node 2 failed" )
330
331 main.step( "Check default vxlan port on ovsdb node " + str( OVSDB1Ip ) )
332 response = main.OVSDB1.listPorts( "br-int" )
333 if re.search( "vxlan", response ) and re.search( str( OVSDB2Ip ), response ):
334 stepResult = main.TRUE
335 else:
336 stepResult = main.FALSE
337 utilities.assert_equals( expect=main.TRUE,
338 actual=stepResult,
339 onpass="onos add default vxlan port on the node 1 sucess",
340 onfail="onos add default vxlan port on the node 1 failed" )
341
342 main.step( "Check default vxlan port on ovsdb node " + str( OVSDB2Ip ) )
343 response = main.OVSDB2.listPorts( "br-int" )
344 if re.search( "vxlan", response ) and re.search( str( OVSDB1Ip ), response ):
345 stepResult = main.TRUE
346 else:
347 stepResult = main.FALSE
348 utilities.assert_equals( expect=main.TRUE,
349 actual=stepResult,
350 onpass="onos add default vxlan port on the node 2 sucess",
351 onfail="onos add default vxlan port on the node 2 failed" )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800352
353 def CASE4( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800354 """
355 Test default openflow configuration
356 """
357 import re
alison6acef9f2016-09-28 12:29:08 -0700358 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800359
360 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
361 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
362 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
363
364 main.step( "ovsdb node 1 set ovs manager to " + str( ctrlip ) )
365 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
366 stepResult = assignResult
367 utilities.assert_equals( expect=main.TRUE,
368 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700369 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800370 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700371 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800372 str( ctrlip ) + " failed" )
373
374 main.step( "ovsdb node 2 set ovs manager to " + str( ctrlip ) )
375 assignResult = main.OVSDB2.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
376 stepResult = assignResult
377 utilities.assert_equals( expect=main.TRUE,
378 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700379 onpass="ovsdb node 2 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800380 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700381 onfail="ovsdb node 2 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800382 str( ctrlip ) + " failed" )
383
384 main.step( "Check ovsdb node 1 manager is " + str( ctrlip ) )
385 response = main.OVSDB1.getManager()
386 if re.search( ctrlip, response ):
387 stepResult = main.TRUE
388 else:
389 stepResult = main.FALSE
390 utilities.assert_equals( expect=main.TRUE,
391 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700392 onpass="ovsdb node 1 manager is " + str( response ),
393 onfail="ovsdb node 1 manager check failed\n" +
sunyulin916e13e2015-10-15 20:27:23 +0800394 str( main.OVSDB1.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800395
396 main.step( "Check ovsdb node 2 manager is " + str( ctrlip ) )
397 response = main.OVSDB2.getManager()
398 if re.search( ctrlip, response ):
399 stepResult = main.TRUE
400 else:
401 stepResult = main.FALSE
402 utilities.assert_equals( expect=main.TRUE,
403 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700404 onpass="ovsdb node 2 manager is " + str( response ),
405 onfail="ovsdb node 2 manager check failed\n" +
sunyulin916e13e2015-10-15 20:27:23 +0800406 str( main.OVSDB2.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800407
408 main.step( "Check ovsdb node 1 bridge br-int controller set to " + str( ctrlip ) )
409 response = main.OVSDB1.getController( "br-int" )
410 if re.search( ctrlip, response ):
411 stepResult = main.TRUE
412 else:
413 stepResult = main.FALSE
414 utilities.assert_equals( expect=main.TRUE,
415 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700416 onpass="Check ovsdb node 1 bridge br-int controller set to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800417 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700418 onfail="Check ovsdb node 1 bridge br-int controller set to " +
sunyulin916e13e2015-10-15 20:27:23 +0800419 str( ctrlip ) + " failed\n" + str( main.OVSDB1.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800420
421 main.step( "Check ovsdb node 2 bridge br-int controller set to " + str( ctrlip ) )
422 response = main.OVSDB2.getController( "br-int" )
423 if re.search( ctrlip, response ):
424 stepResult = main.TRUE
425 else:
426 stepResult = main.FALSE
427 utilities.assert_equals( expect=main.TRUE,
428 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700429 onpass="Check ovsdb node 2 bridge br-int controller set to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800430 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700431 onfail="Check ovsdb node 2 bridge br-int controller set to " +
432 str( ctrlip ) + " failed\n" + str( main.OVSDB2.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800433
434 main.step( "Check onoscli devices have ovs " + str( OVSDB1Ip ) )
435 response = main.ONOScli1.devices()
436 if re.search( OVSDB1Ip, response ) and not re.search( "false", response ):
437 stepResult = main.TRUE
438 else:
439 stepResult = main.FALSE
440 utilities.assert_equals( expect=main.TRUE,
441 actual=stepResult,
442 onpass="Check onoscli devices have ovs " + str( OVSDB1Ip ) + " sucess",
443 onfail="Check onoscli devices have ovs " + str( OVSDB1Ip ) + " failed" )
444
445 main.step( "Check onoscli devices have ovs " + str( OVSDB2Ip ) )
446 response = main.ONOScli1.devices()
447 if re.search( OVSDB2Ip, response ) and not re.search( "false", response ):
448 stepResult = main.TRUE
449 else:
450 stepResult = main.FALSE
451 utilities.assert_equals( expect=main.TRUE,
452 actual=stepResult,
453 onpass="Check onoscli devices have ovs " + str( OVSDB2Ip ) + " sucess",
454 onfail="Check onoscli devices have ovs " + str( OVSDB2Ip ) + " failed" )
455
456 def CASE5( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800457 """
458 Test default flows
459 """
460 import re
alison6acef9f2016-09-28 12:29:08 -0700461 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800462
463 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
464 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
465 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
466
467 main.step( "ovsdb node 1 set ovs manager to onos" )
468 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
469 stepResult = assignResult
470 utilities.assert_equals( expect=main.TRUE,
471 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700472 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800473 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700474 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800475 str( ctrlip ) + " failed" )
476
477 main.step( "Check ovsdb node 1 manager is " + str( ctrlip ) )
478 response = main.OVSDB1.getManager()
479 if re.search( ctrlip, response ):
480 stepResult = main.TRUE
481 else:
482 stepResult = main.FALSE
483 utilities.assert_equals( expect=main.TRUE,
484 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700485 onpass="ovsdb node 1 manager is " + str( response ),
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800486 onfail="ovsdb node 1 manager check failed" )
487
488 main.step( "Check ovsdb node 1 bridge br-int default flows on " + str( OVSDB1Ip ) )
489 response = main.OVSDB1.dumpFlows( sw="br-int", protocols="OpenFlow13" )
490 if re.search( "actions=CONTROLLER", response ):
491 stepResult = main.TRUE
492 else:
493 stepResult = main.FALSE
494 utilities.assert_equals( expect=main.TRUE,
495 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700496 onpass="Successfully set default flows " + str( ctrlip ),
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800497 onfail="Failed to set default flows " + str( ctrlip ) )
498
499 def CASE6( self, main ):
500 """
501 Configure Network Subnet Port
502 """
503 import os
504
505 try:
Jon Hall53c5e662016-04-13 16:06:56 -0700506 from tests.FUNC.FUNCovsdbtest.dependencies.Nbdata import NetworkData
507 from tests.FUNC.FUNCovsdbtest.dependencies.Nbdata import SubnetData
508 from tests.FUNC.FUNCovsdbtest.dependencies.Nbdata import VirtualPortData
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800509 except ImportError:
510 main.log.exception( "Something wrong with import file or code error." )
511 main.log.info( "Import Error, please check!" )
512 main.cleanup()
513 main.exit()
514
515 main.log.info( "Configure Network Subnet Port Start" )
516 main.case( "Configure Network Subnet Port" )
517 main.caseExplanation = "Configure Network Subnet Port " +\
518 "Verify post is OK"
519
Jon Hall8638b562017-05-24 16:39:59 -0700520 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
521 httpport = main.params[ 'HTTP' ][ 'port' ]
522 path = main.params[ 'HTTP' ][ 'path' ]
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800523
524 main.step( "Generate Post Data" )
525 network = NetworkData()
526 network.id = '030d6d3d-fa36-45bf-ae2b-4f4bc43a54dc'
527 network.tenant_id = '26cd996094344a0598b0a1af1d525cdc'
528 subnet = SubnetData()
529 subnet.id = "e44bd655-e22c-4aeb-b1e9-ea1606875178"
530 subnet.tenant_id = network.tenant_id
531 subnet.network_id = network.id
532 subnet.start = "10.0.0.1"
533 subnet.end = "10.0.0.254"
534 subnet.cidr = "10.0.0.0/24"
535 port1 = VirtualPortData()
536 port1.id = "00000000-0000-0000-0000-000000000001"
537 port1.subnet_id = subnet.id
538 port1.tenant_id = network.tenant_id
539 port1.network_id = network.id
540 port1.macAddress = "00:00:00:00:00:01"
541 port1.ip_address = "10.0.0.1"
542 port2 = VirtualPortData()
543 port2.id = "00000000-0000-0000-0000-000000000002"
544 port2.subnet_id = subnet.id
545 port2.tenant_id = network.tenant_id
546 port2.network_id = network.id
547 port2.macAddress = "00:00:00:00:00:02"
548 port2.ip_address = "10.0.0.2"
549
550 networkpostdata = network.DictoJson()
551 subnetpostdata = subnet.DictoJson()
552 port1postdata = port1.DictoJson()
553 port2postdata = port2.DictoJson()
554
555 main.step( "Post Network Data via HTTP(Post port need post network)" )
556 Poststatus, result = main.ONOSrest.send( ctrlip, httpport, '', path + 'networks/',
557 'POST', None, networkpostdata )
558 utilities.assert_equals(
559 expect='200',
560 actual=Poststatus,
561 onpass="Post Network Success",
562 onfail="Post Network Failed " + str( Poststatus ) + "," + str( result ) )
563
564 main.step( "Post Subnet Data via HTTP(Post port need post subnet)" )
565 Poststatus, result = main.ONOSrest.send( ctrlip, httpport, '', path + 'subnets/',
566 'POST', None, subnetpostdata )
567 utilities.assert_equals(
568 expect='202',
569 actual=Poststatus,
570 onpass="Post Subnet Success",
571 onfail="Post Subnet Failed " + str( Poststatus ) + "," + str( result ) )
572
573 main.step( "Post Port1 Data via HTTP" )
574 Poststatus, result = main.ONOSrest.send( ctrlip, httpport, '', path + 'ports/',
575 'POST', None, port1postdata )
576 utilities.assert_equals(
577 expect='200',
578 actual=Poststatus,
579 onpass="Post Port Success",
580 onfail="Post Port Failed " + str( Poststatus ) + "," + str( result ) )
581
582 main.step( "Post Port2 Data via HTTP" )
583 Poststatus, result = main.ONOSrest.send( ctrlip, httpport, '', path + 'ports/',
584 'POST', None, port2postdata )
585 utilities.assert_equals(
586 expect='200',
587 actual=Poststatus,
588 onpass="Post Port Success",
589 onfail="Post Port Failed " + str( Poststatus ) + "," + str( result ) )
590
591 def CASE7( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800592 """
593 Test host go online and ping each other
594 """
595 import re
alison6acef9f2016-09-28 12:29:08 -0700596 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800597
598 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
599 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
600 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
601
602 main.step( "ovsdb node 1 set ovs manager to " + str( ctrlip ) )
603 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
604 stepResult = assignResult
605 utilities.assert_equals( expect=main.TRUE,
606 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700607 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800608 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700609 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800610 str( ctrlip ) + " failed" )
611
612 main.step( "ovsdb node 2 set ovs manager to " + str( ctrlip ) )
613 assignResult = main.OVSDB2.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
614 stepResult = assignResult
615 utilities.assert_equals( expect=main.TRUE,
616 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700617 onpass="ovsdb node 2 set ovs manager to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800618 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700619 onfail="ovsdb node 2 set ovs manager to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800620 str( ctrlip ) + " failed" )
621
622 main.step( "Create host1 on node 1 " + str( OVSDB1Ip ) )
623 stepResult = main.OVSDB1.createHost( hostname="host1" )
624 utilities.assert_equals( expect=main.TRUE,
625 actual=stepResult,
626 onpass="Create host1 on node 1 " + str( OVSDB1Ip ) + " sucess",
627 onfail="Create host1 on node 1 " + str( OVSDB1Ip ) + " failed" )
628
629 main.step( "Create host2 on node 2 " + str( OVSDB2Ip ) )
630 stepResult = main.OVSDB2.createHost( hostname="host2" )
631 utilities.assert_equals( expect=main.TRUE,
632 actual=stepResult,
633 onpass="Create host2 on node 2 " + str( OVSDB2Ip ) + " sucess",
634 onfail="Create host2 on node 2 " + str( OVSDB2Ip ) + " failed" )
635
Jon Hall8638b562017-05-24 16:39:59 -0700636 main.step( "Create port on host1 on the node " + str( OVSDB1Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800637 stepResult = main.OVSDB1.createHostport( hostname="host1", hostport="host1-eth0", hostportmac="000000000001" )
638 utilities.assert_equals( expect=main.TRUE,
639 actual=stepResult,
640 onpass="Create port on host1 on the node " + str( OVSDB1Ip ) + " sucess",
641 onfail="Create port on host1 on the node " + str( OVSDB1Ip ) + " failed" )
642
Jon Hall8638b562017-05-24 16:39:59 -0700643 main.step( "Create port on host2 on the node " + str( OVSDB2Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800644 stepResult = main.OVSDB2.createHostport( hostname="host2", hostport="host2-eth0", hostportmac="000000000002" )
645 utilities.assert_equals( expect=main.TRUE,
646 actual=stepResult,
647 onpass="Create port on host1 on the node " + str( OVSDB2Ip ) + " sucess",
648 onfail="Create port on host1 on the node " + str( OVSDB2Ip ) + " failed" )
649
Jon Hall8638b562017-05-24 16:39:59 -0700650 main.step( "Add port to ovs br-int and host go-online on the node " + str( OVSDB1Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800651 stepResult = main.OVSDB1.addPortToOvs( ovsname="br-int", ifaceId="00000000-0000-0000-0000-000000000001",
652 attachedMac="00:00:00:00:00:01", vmuuid="10000000-0000-0000-0000-000000000001" )
653 utilities.assert_equals( expect=main.TRUE,
654 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700655 onpass="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800656 str( OVSDB1Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700657 onfail="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800658 str( OVSDB1Ip ) + " failed" )
659
Jon Hall8638b562017-05-24 16:39:59 -0700660 main.step( "Add port to ovs br-int and host go-online on the node " + str( OVSDB2Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800661 stepResult = main.OVSDB2.addPortToOvs( ovsname="br-int", ifaceId="00000000-0000-0000-0000-000000000002",
662 attachedMac="00:00:00:00:00:02", vmuuid="10000000-0000-0000-0000-000000000001" )
663 utilities.assert_equals( expect=main.TRUE,
664 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700665 onpass="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800666 str( OVSDB2Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700667 onfail="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800668 str( OVSDB2Ip ) + " failed" )
669
670 main.step( "Check onos set host flows on the node " + str( OVSDB1Ip ) )
671 response = main.OVSDB1.dumpFlows( sw="br-int", protocols="OpenFlow13" )
672 if re.search( "00:00:00:00:00:01", response ):
673 stepResult = main.TRUE
674 else:
675 stepResult = main.FALSE
676 utilities.assert_equals( expect=main.TRUE,
677 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700678 onpass="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800679 str( OVSDB1Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700680 onfail="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800681 str( OVSDB1Ip ) + " failed" )
682
683 main.step( "Check onos set host flows on the node " + str( OVSDB2Ip ) )
684 response = main.OVSDB2.dumpFlows( sw="br-int", protocols="OpenFlow13" )
685 if re.search( "00:00:00:00:00:02", response ):
686 stepResult = main.TRUE
687 else:
688 stepResult = main.FALSE
689 utilities.assert_equals( expect=main.TRUE,
690 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700691 onpass="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800692 str( OVSDB2Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700693 onfail="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800694 str( OVSDB2Ip ) + " failed" )
695
696 main.step( "Check hosts can ping each other" )
697 main.OVSDB1.setHostportIp( hostname="host1", hostport1="host1-eth0", ip="10.0.0.1" )
698 main.OVSDB2.setHostportIp( hostname="host2", hostport1="host2-eth0", ip="10.0.0.2" )
699 pingResult1 = main.OVSDB1.hostPing( src="10.0.0.1", hostname="host1", target="10.0.0.2" )
700 pingResult2 = main.OVSDB2.hostPing( src="10.0.0.2", hostname="host2", target="10.0.0.1" )
701 stepResult = pingResult1 and pingResult2
702 utilities.assert_equals( expect=main.TRUE,
703 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700704 onpass="Successfully host go online and ping each other,controller is " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800705 str( ctrlip ),
Jon Hall8638b562017-05-24 16:39:59 -0700706 onfail="Failed to host go online and ping each other,controller is " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800707 str( ctrlip ) )
708
709 def CASE8( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800710 """
711 Clear ovs configuration and host configuration
712 """
713 import re
alison6acef9f2016-09-28 12:29:08 -0700714 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800715
716 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
717 OVSDB1Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip1' ] )
718 OVSDB2Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip2' ] )
719 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
720
721 main.step( "Delete ovsdb node 1 manager" )
722 deleteResult = main.OVSDB1.delManager( delaytime=delaytime )
723 stepResult = deleteResult
724 utilities.assert_equals( expect=main.TRUE,
725 actual=stepResult,
726 onpass="ovsdb node 1 delete manager sucess",
727 onfail="ovsdb node 1 delete manager failed" )
728
729 main.step( "Delete ovsdb node 2 manager" )
730 deleteResult = main.OVSDB2.delManager( delaytime=delaytime )
731 stepResult = deleteResult
732 utilities.assert_equals( expect=main.TRUE,
733 actual=stepResult,
734 onpass="ovsdb node 2 delete manager sucess",
735 onfail="ovsdb node 2 delete manager failed" )
736
737 main.step( "Delete ovsdb node 1 bridge br-int" )
738 deleteResult = main.OVSDB1.delBr( sw="br-int" )
739 stepResult = deleteResult
740 utilities.assert_equals( expect=main.TRUE,
741 actual=stepResult,
742 onpass="Delete ovsdb node 1 bridge br-int sucess",
743 onfail="Delete ovsdb node 1 bridge br-int failed" )
744
745 main.step( "Delete ovsdb node 2 bridge br-int" )
746 deleteResult = main.OVSDB2.delBr( sw="br-int" )
747 stepResult = deleteResult
748 utilities.assert_equals( expect=main.TRUE,
749 actual=stepResult,
750 onpass="Delete ovsdb node 2 bridge br-int sucess",
751 onfail="Delete ovsdb node 2 bridge br-int failed" )
752
753 main.step( "Delete ip netns host on the ovsdb node 1" )
754 deleteResult = main.OVSDB1.delHost( hostname="host1" )
755 stepResult = deleteResult
756 utilities.assert_equals( expect=main.TRUE,
757 actual=stepResult,
758 onpass="Delete ip netns host on the ovsdb node 1 sucess",
759 onfail="Delete ip netns host on the ovsdb node 1 failed" )
760
761 main.step( "Delete ip netns host on the ovsdb node 2" )
762 deleteResult = main.OVSDB2.delHost( hostname="host2" )
763 stepResult = deleteResult
764 utilities.assert_equals( expect=main.TRUE,
765 actual=stepResult,
766 onpass="Delete ip netns host on the ovsdb node 2 sucess",
767 onfail="Delete ip netns host on the ovsdb node 2 failed" )
768
769 main.step( "Check onoscli devices openflow session is false " + str( OVSDB1Ip ) )
770 response = main.ONOScli1.devices()
771 if re.search( OVSDB1Ip, response ) and not re.search( "true", response ):
772 stepResult = main.TRUE
773 else:
774 stepResult = main.FALSE
775 utilities.assert_equals( expect=main.TRUE,
776 actual=stepResult,
777 onpass="Check openflow session is false " + str( OVSDB1Ip ) + " sucess",
778 onfail="Check openflow session is false " + str( OVSDB1Ip ) + " failed" )
779
780 main.step( "Check onoscli devices have ovs " + str( OVSDB2Ip ) )
781 response = main.ONOScli1.devices()
782 if re.search( OVSDB2Ip, response ) and not re.search( "true", response ):
783 stepResult = main.TRUE
784 else:
785 stepResult = main.FALSE
786 utilities.assert_equals( expect=main.TRUE,
787 actual=stepResult,
788 onpass="Check openflow session is false " + str( OVSDB2Ip ) + " sucess",
Jon Hall53c5e662016-04-13 16:06:56 -0700789 onfail="Check openflow session is false " + str( OVSDB2Ip ) + " failed" )