blob: ad55a9a87f7a751723993b83e69f2dba9a3dbe1b [file] [log] [blame]
zhanghaoyu451c1392015-08-07 19:21:16 +08001"""
Jeremy Ronquillob27ce4c2017-07-17 12:41:28 -07002Copyright 2015 Open Networking Foundation (ONF)
3
4Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
5the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
6or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
7
8 TestON is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 2 of the License, or
11 (at your option) any later version.
12
13 TestON is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with TestON. If not, see <http://www.gnu.org/licenses/>.
20"""
21
22"""
zhanghaoyu451c1392015-08-07 19:21:16 +080023Description: This test is to check onos set configuration and flows with ovsdb connection.
24
25List of test cases:
26CASE1: Compile ONOS and push it to the test machines
27CASE2: Test ovsdb connection and tearDown
28CASE3: Test default br-int configuration and vxlan port
29CASE4: Test default openflow configuration
30CASE5: Test default flows
zhanghaoyu7474d8c62015-08-26 14:53:28 +080031CASE6: Configure Network Subnet Port
zhanghaoyu451c1392015-08-07 19:21:16 +080032CASE7: Test host go online and ping each other
zhanghaoyu7474d8c62015-08-26 14:53:28 +080033CASE8: Clear ovs configuration and host configuration
zhanghaoyu451c1392015-08-07 19:21:16 +080034zhanghaoyu7@huawei.com
35"""
36import os
37
Jon Hall8638b562017-05-24 16:39:59 -070038
zhanghaoyu451c1392015-08-07 19:21:16 +080039class FUNCovsdbtest:
40
41 def __init__( self ):
42 self.default = ''
43
44 def CASE1( self, main ):
45 """
46 CASE1 is to compile ONOS and push it to the test machines
47
48 Startup sequence:
alison6acef9f2016-09-28 12:29:08 -070049 Construct test variables
50 Safety check, kill all ONOS processes before setup
zhanghaoyu451c1392015-08-07 19:21:16 +080051 NOTE: temporary - onos-remove-raft-logs
alison6acef9f2016-09-28 12:29:08 -070052 Create ONOS package
53 Install ONOS package
zhanghaoyu451c1392015-08-07 19:21:16 +080054 start cli sessions
55 start ovsdb
56 start vtn apps
57 """
58 import os
alison6acef9f2016-09-28 12:29:08 -070059 import time
60 main.log.info( "ONOS Single node start ovsdb test - initialization" )
Devin Lim58046fa2017-07-05 16:55:00 -070061 try:
62 from tests.dependencies.ONOSSetup import ONOSSetup
63 main.testSetUp = ONOSSetup()
64 except ImportError:
65 main.log.error( "ONOSSetup not found. exiting the test" )
Devin Lim44075962017-08-11 10:56:37 -070066 main.cleanAndExit()
Devin Lim58046fa2017-07-05 16:55:00 -070067 main.testSetUp.envSetupDescription()
68 stepResult = main.FALSE
zhanghaoyu451c1392015-08-07 19:21:16 +080069
Devin Lim58046fa2017-07-05 16:55:00 -070070 try:
71 # load some variables from the params file
72 main.step( "Constructing test variables" )
73 cellName = main.params[ 'ENV' ][ 'cellName' ]
74 main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
75 main.apps = main.params[ 'ENV' ][ 'cellApps' ]
Devin Lim142b5342017-07-20 15:22:39 -070076 stepResult = main.testSetUp.envSetup()
zhanghaoyu451c1392015-08-07 19:21:16 +080077
Devin Lim58046fa2017-07-05 16:55:00 -070078 except Exception as e:
79 main.testSetUp.envSetupException( e )
80 main.testSetUp.evnSetupConclusion( stepResult )
zhanghaoyu451c1392015-08-07 19:21:16 +080081
zhanghaoyu451c1392015-08-07 19:21:16 +080082
Devin Lim142b5342017-07-20 15:22:39 -070083 cliResults = main.testSetUp.ONOSSetUp( main.OVSDB1, main.Cluster,
84 cellName=cellName, removeLog=True )
alison6acef9f2016-09-28 12:29:08 -070085
86 if cliResults == main.FALSE:
87 main.log.error( "Failed to start ONOS, stopping test" )
Devin Lim44075962017-08-11 10:56:37 -070088 main.cleanAndExit()
zhanghaoyu451c1392015-08-07 19:21:16 +080089
90 main.step( "App Ids check" )
Devin Lim142b5342017-07-20 15:22:39 -070091 appCheck = main.Cluster.active( 0 ).CLI.appToIDCheck()
zhanghaoyu451c1392015-08-07 19:21:16 +080092
alison6acef9f2016-09-28 12:29:08 -070093 if appCheck != main.TRUE:
Devin Lim142b5342017-07-20 15:22:39 -070094 main.log.warn( main.Cluster.active( 0 ).CLI.apps() )
95 main.log.warn( main.Cluster.active( 0 ).CLI.appIDs() )
alison6acef9f2016-09-28 12:29:08 -070096
97 utilities.assert_equals( expect=main.TRUE, actual=appCheck,
zhanghaoyu451c1392015-08-07 19:21:16 +080098 onpass="App Ids seem to be correct",
99 onfail="Something is wrong with app Ids" )
zhanghaoyu451c1392015-08-07 19:21:16 +0800100
alisond9915ea2016-08-12 10:16:26 -0700101 main.step( "Install onos-ovsdb" )
Devin Lim142b5342017-07-20 15:22:39 -0700102 installResults = main.Cluster.active( 0 ).CLI.activateApp( "org.onosproject.ovsdb" )
zhanghaoyu451c1392015-08-07 19:21:16 +0800103 utilities.assert_equals( expect=main.TRUE, actual=installResults,
104 onpass="Install onos-ovsdatabase successful",
105 onfail="Install onos-ovsdatabase failed" )
106
zhanghaoyu451c1392015-08-07 19:21:16 +0800107 main.step( "Install onos-app-vtn" )
Devin Lim142b5342017-07-20 15:22:39 -0700108 installResults = main.Cluster.active( 0 ).CLI.activateApp( "org.onosproject.vtn" )
zhanghaoyu451c1392015-08-07 19:21:16 +0800109 utilities.assert_equals( expect=main.TRUE, actual=installResults,
110 onpass="Install onos-app-vtn successful",
111 onfail="Install onos-app-vtn failed" )
112
zhanghaoyu451c1392015-08-07 19:21:16 +0800113 def CASE2( self, main ):
zhanghaoyu451c1392015-08-07 19:21:16 +0800114 """
115 Test ovsdb connection and teardown
116 """
alison6acef9f2016-09-28 12:29:08 -0700117 import os
zhanghaoyu451c1392015-08-07 19:21:16 +0800118 import re
zhanghaoyu451c1392015-08-07 19:21:16 +0800119
120 main.case( "Test ovsdb connection and teardown" )
121 main.caseExplanation = "Test ovsdb connection create and delete" +\
122 " over ovsdb node and onos node "
123
124 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
125 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
126 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
127
128 main.step( "Set ovsdb node manager" )
129 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
130 stepResult = assignResult
131 utilities.assert_equals( expect=main.TRUE,
132 actual=stepResult,
133 onpass="Set ovsdb node manager sucess",
134 onfail="Set ovsdb node manager failed" )
135
136 main.step( "Check ovsdb node manager is " + str( ctrlip ) )
137 response = main.OVSDB1.getManager()
138 if re.search( ctrlip, response ):
139 stepResult = main.TRUE
140 else:
141 stepResult = main.FALSE
142 utilities.assert_equals( expect=main.TRUE,
143 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700144 onpass="Check ovsdb node manager is " + str( response ),
zhanghaoyu451c1392015-08-07 19:21:16 +0800145 onfail="Check ovsdb node manager failed" )
146
147 main.step( "Delete ovsdb node manager" )
148 deleteResult = main.OVSDB1.delManager( delaytime=delaytime )
149 stepResult = deleteResult
150 utilities.assert_equals( expect=main.TRUE,
151 actual=stepResult,
152 onpass="ovsdb node delete manager sucess",
153 onfail="ovsdb node delete manager failed" )
154
155 main.step( "Check ovsdb node delete manager " + str( ctrlip ) )
156 response = main.OVSDB1.getManager()
157 if not re.search( ctrlip, response ):
158 stepResult = main.TRUE
159 else:
160 stepResult = main.FALSE
161 utilities.assert_equals( expect=main.TRUE,
162 actual=stepResult,
163 onpass="Check ovsdb node delete manager sucess",
164 onfail="Check ovsdb node delete manager failed" )
165
166 def CASE3( self, main ):
zhanghaoyu451c1392015-08-07 19:21:16 +0800167 """
168 Test default br-int configuration and vxlan port
169 """
170 import re
alison6acef9f2016-09-28 12:29:08 -0700171 import os
zhanghaoyu451c1392015-08-07 19:21:16 +0800172
173 main.case( "Test default br-int configuration and vxlan port" )
174 main.caseExplanation = "onos create default br-int bridge and" +\
175 " vxlan port on the ovsdb node"
176
177 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
178 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
179 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
Jon Hall8638b562017-05-24 16:39:59 -0700180 OVSDB1Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip1' ] )
181 OVSDB2Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip2' ] )
zhanghaoyu451c1392015-08-07 19:21:16 +0800182
183 main.step( "ovsdb node 1 set ovs manager to " + str( ctrlip ) )
184 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
185 stepResult = assignResult
186 utilities.assert_equals( expect=main.TRUE,
187 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700188 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800189 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700190 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800191 str( ctrlip ) + " failed" )
192
193 main.step( "ovsdb node 2 set ovs manager to " + str( ctrlip ) )
194 assignResult = main.OVSDB2.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
195 stepResult = assignResult
196 utilities.assert_equals( expect=main.TRUE,
197 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700198 onpass="ovsdb node 2 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800199 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700200 onfail="ovsdb node 2 set ovs manager to to " +
zhanghaoyu451c1392015-08-07 19:21:16 +0800201 str( ctrlip ) + " failed" )
202
203 main.step( "Check ovsdb node 1 manager is " + str( ctrlip ) )
204 response = main.OVSDB1.getManager()
205 if re.search( ctrlip, response ):
206 stepResult = main.TRUE
207 else:
208 stepResult = main.FALSE
209 utilities.assert_equals( expect=main.TRUE,
210 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700211 onpass="ovsdb node 1 manager is " + str( response ),
zhanghaoyu451c1392015-08-07 19:21:16 +0800212 onfail="ovsdb node 1 manager check failed" )
213
214 main.step( "Check ovsdb node 2 manager is " + str( ctrlip ) )
215 response = main.OVSDB2.getManager()
216 if re.search( ctrlip, response ):
217 stepResult = main.TRUE
218 else:
219 stepResult = main.FALSE
220 utilities.assert_equals( expect=main.TRUE,
221 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700222 onpass="ovsdb node 2 manager is " + str( response ),
zhanghaoyu451c1392015-08-07 19:21:16 +0800223 onfail="ovsdb node 2 manager check failed" )
224
225 main.step( "Check default br-int bridge on ovsdb node " + str( OVSDB1Ip ) )
226 response = main.OVSDB1.listBr()
227 if re.search( "br-int", response ):
228 stepResult = main.TRUE
229 else:
230 stepResult = main.FALSE
231 utilities.assert_equals( expect=main.TRUE,
232 actual=stepResult,
233 onpass="onos add default bridge on the node 1 sucess",
234 onfail="onos add default bridge on the node 1 failed" )
235
236 main.step( "Check default br-int bridge on ovsdb node " + str( OVSDB2Ip ) )
237 response = main.OVSDB2.listBr()
238 if re.search( "br-int", response ):
239 stepResult = main.TRUE
240 else:
241 stepResult = main.FALSE
242 utilities.assert_equals( expect=main.TRUE,
243 actual=stepResult,
244 onpass="onos add default bridge on the node 2 sucess",
245 onfail="onos add default bridge on the node 2 failed" )
246
247 main.step( "Check default vxlan port on ovsdb node " + str( OVSDB1Ip ) )
248 response = main.OVSDB1.listPorts( "br-int" )
249 if re.search( "vxlan", response ) and re.search( str( OVSDB2Ip ), response ):
250 stepResult = main.TRUE
251 else:
252 stepResult = main.FALSE
253 utilities.assert_equals( expect=main.TRUE,
254 actual=stepResult,
255 onpass="onos add default vxlan port on the node 1 sucess",
256 onfail="onos add default vxlan port on the node 1 failed" )
257
258 main.step( "Check default vxlan port on ovsdb node " + str( OVSDB2Ip ) )
259 response = main.OVSDB2.listPorts( "br-int" )
260 if re.search( "vxlan", response ) and re.search( str( OVSDB1Ip ), response ):
261 stepResult = main.TRUE
262 else:
263 stepResult = main.FALSE
264 utilities.assert_equals( expect=main.TRUE,
265 actual=stepResult,
266 onpass="onos add default vxlan port on the node 2 sucess",
267 onfail="onos add default vxlan port on the node 2 failed" )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800268
269 def CASE4( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800270 """
271 Test default openflow configuration
272 """
273 import re
alison6acef9f2016-09-28 12:29:08 -0700274 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800275
276 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
277 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
278 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
279
280 main.step( "ovsdb node 1 set ovs manager to " + str( ctrlip ) )
281 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
282 stepResult = assignResult
283 utilities.assert_equals( expect=main.TRUE,
284 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700285 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800286 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700287 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800288 str( ctrlip ) + " failed" )
289
290 main.step( "ovsdb node 2 set ovs manager to " + str( ctrlip ) )
291 assignResult = main.OVSDB2.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
292 stepResult = assignResult
293 utilities.assert_equals( expect=main.TRUE,
294 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700295 onpass="ovsdb node 2 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800296 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700297 onfail="ovsdb node 2 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800298 str( ctrlip ) + " failed" )
299
300 main.step( "Check ovsdb node 1 manager is " + str( ctrlip ) )
301 response = main.OVSDB1.getManager()
302 if re.search( ctrlip, response ):
303 stepResult = main.TRUE
304 else:
305 stepResult = main.FALSE
306 utilities.assert_equals( expect=main.TRUE,
307 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700308 onpass="ovsdb node 1 manager is " + str( response ),
309 onfail="ovsdb node 1 manager check failed\n" +
sunyulin916e13e2015-10-15 20:27:23 +0800310 str( main.OVSDB1.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800311
312 main.step( "Check ovsdb node 2 manager is " + str( ctrlip ) )
313 response = main.OVSDB2.getManager()
314 if re.search( ctrlip, response ):
315 stepResult = main.TRUE
316 else:
317 stepResult = main.FALSE
318 utilities.assert_equals( expect=main.TRUE,
319 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700320 onpass="ovsdb node 2 manager is " + str( response ),
321 onfail="ovsdb node 2 manager check failed\n" +
sunyulin916e13e2015-10-15 20:27:23 +0800322 str( main.OVSDB2.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800323
324 main.step( "Check ovsdb node 1 bridge br-int controller set to " + str( ctrlip ) )
325 response = main.OVSDB1.getController( "br-int" )
326 if re.search( ctrlip, response ):
327 stepResult = main.TRUE
328 else:
329 stepResult = main.FALSE
330 utilities.assert_equals( expect=main.TRUE,
331 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700332 onpass="Check ovsdb node 1 bridge br-int controller set to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800333 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700334 onfail="Check ovsdb node 1 bridge br-int controller set to " +
sunyulin916e13e2015-10-15 20:27:23 +0800335 str( ctrlip ) + " failed\n" + str( main.OVSDB1.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800336
337 main.step( "Check ovsdb node 2 bridge br-int controller set to " + str( ctrlip ) )
338 response = main.OVSDB2.getController( "br-int" )
339 if re.search( ctrlip, response ):
340 stepResult = main.TRUE
341 else:
342 stepResult = main.FALSE
343 utilities.assert_equals( expect=main.TRUE,
344 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700345 onpass="Check ovsdb node 2 bridge br-int controller set to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800346 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700347 onfail="Check ovsdb node 2 bridge br-int controller set to " +
348 str( ctrlip ) + " failed\n" + str( main.OVSDB2.show() ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800349
350 main.step( "Check onoscli devices have ovs " + str( OVSDB1Ip ) )
Devin Lim142b5342017-07-20 15:22:39 -0700351 response = main.Cluster.active( 0 ).CLI.devices()
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800352 if re.search( OVSDB1Ip, response ) and not re.search( "false", response ):
353 stepResult = main.TRUE
354 else:
355 stepResult = main.FALSE
356 utilities.assert_equals( expect=main.TRUE,
357 actual=stepResult,
358 onpass="Check onoscli devices have ovs " + str( OVSDB1Ip ) + " sucess",
359 onfail="Check onoscli devices have ovs " + str( OVSDB1Ip ) + " failed" )
360
361 main.step( "Check onoscli devices have ovs " + str( OVSDB2Ip ) )
Devin Lim142b5342017-07-20 15:22:39 -0700362 response = main.Cluster.active( 0 ).CLI.devices()
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800363 if re.search( OVSDB2Ip, response ) and not re.search( "false", response ):
364 stepResult = main.TRUE
365 else:
366 stepResult = main.FALSE
367 utilities.assert_equals( expect=main.TRUE,
368 actual=stepResult,
369 onpass="Check onoscli devices have ovs " + str( OVSDB2Ip ) + " sucess",
370 onfail="Check onoscli devices have ovs " + str( OVSDB2Ip ) + " failed" )
371
372 def CASE5( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800373 """
374 Test default flows
375 """
376 import re
alison6acef9f2016-09-28 12:29:08 -0700377 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800378
379 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
380 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
381 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
382
383 main.step( "ovsdb node 1 set ovs manager to onos" )
384 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
385 stepResult = assignResult
386 utilities.assert_equals( expect=main.TRUE,
387 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700388 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800389 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700390 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800391 str( ctrlip ) + " failed" )
392
393 main.step( "Check ovsdb node 1 manager is " + str( ctrlip ) )
394 response = main.OVSDB1.getManager()
395 if re.search( ctrlip, response ):
396 stepResult = main.TRUE
397 else:
398 stepResult = main.FALSE
399 utilities.assert_equals( expect=main.TRUE,
400 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700401 onpass="ovsdb node 1 manager is " + str( response ),
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800402 onfail="ovsdb node 1 manager check failed" )
403
404 main.step( "Check ovsdb node 1 bridge br-int default flows on " + str( OVSDB1Ip ) )
405 response = main.OVSDB1.dumpFlows( sw="br-int", protocols="OpenFlow13" )
406 if re.search( "actions=CONTROLLER", response ):
407 stepResult = main.TRUE
408 else:
409 stepResult = main.FALSE
410 utilities.assert_equals( expect=main.TRUE,
411 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700412 onpass="Successfully set default flows " + str( ctrlip ),
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800413 onfail="Failed to set default flows " + str( ctrlip ) )
414
415 def CASE6( self, main ):
416 """
417 Configure Network Subnet Port
418 """
419 import os
420
421 try:
Jon Hall53c5e662016-04-13 16:06:56 -0700422 from tests.FUNC.FUNCovsdbtest.dependencies.Nbdata import NetworkData
423 from tests.FUNC.FUNCovsdbtest.dependencies.Nbdata import SubnetData
424 from tests.FUNC.FUNCovsdbtest.dependencies.Nbdata import VirtualPortData
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800425 except ImportError:
426 main.log.exception( "Something wrong with import file or code error." )
427 main.log.info( "Import Error, please check!" )
Devin Lim44075962017-08-11 10:56:37 -0700428 main.cleanAndExit()
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800429
430 main.log.info( "Configure Network Subnet Port Start" )
431 main.case( "Configure Network Subnet Port" )
432 main.caseExplanation = "Configure Network Subnet Port " +\
433 "Verify post is OK"
434
Jon Hall8638b562017-05-24 16:39:59 -0700435 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
436 httpport = main.params[ 'HTTP' ][ 'port' ]
437 path = main.params[ 'HTTP' ][ 'path' ]
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800438
439 main.step( "Generate Post Data" )
440 network = NetworkData()
441 network.id = '030d6d3d-fa36-45bf-ae2b-4f4bc43a54dc'
442 network.tenant_id = '26cd996094344a0598b0a1af1d525cdc'
443 subnet = SubnetData()
444 subnet.id = "e44bd655-e22c-4aeb-b1e9-ea1606875178"
445 subnet.tenant_id = network.tenant_id
446 subnet.network_id = network.id
447 subnet.start = "10.0.0.1"
448 subnet.end = "10.0.0.254"
449 subnet.cidr = "10.0.0.0/24"
450 port1 = VirtualPortData()
451 port1.id = "00000000-0000-0000-0000-000000000001"
452 port1.subnet_id = subnet.id
453 port1.tenant_id = network.tenant_id
454 port1.network_id = network.id
455 port1.macAddress = "00:00:00:00:00:01"
456 port1.ip_address = "10.0.0.1"
457 port2 = VirtualPortData()
458 port2.id = "00000000-0000-0000-0000-000000000002"
459 port2.subnet_id = subnet.id
460 port2.tenant_id = network.tenant_id
461 port2.network_id = network.id
462 port2.macAddress = "00:00:00:00:00:02"
463 port2.ip_address = "10.0.0.2"
464
465 networkpostdata = network.DictoJson()
466 subnetpostdata = subnet.DictoJson()
467 port1postdata = port1.DictoJson()
468 port2postdata = port2.DictoJson()
469
470 main.step( "Post Network Data via HTTP(Post port need post network)" )
Devin Lim142b5342017-07-20 15:22:39 -0700471 Poststatus, result = main.Cluster.active( 0 ).REST.send( ctrlip, httpport, '', path + 'networks/',
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800472 'POST', None, networkpostdata )
473 utilities.assert_equals(
474 expect='200',
475 actual=Poststatus,
476 onpass="Post Network Success",
477 onfail="Post Network Failed " + str( Poststatus ) + "," + str( result ) )
478
479 main.step( "Post Subnet Data via HTTP(Post port need post subnet)" )
Devin Lim142b5342017-07-20 15:22:39 -0700480 Poststatus, result = main.Cluster.active( 0 ).REST.send( ctrlip, httpport, '', path + 'subnets/',
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800481 'POST', None, subnetpostdata )
482 utilities.assert_equals(
483 expect='202',
484 actual=Poststatus,
485 onpass="Post Subnet Success",
486 onfail="Post Subnet Failed " + str( Poststatus ) + "," + str( result ) )
487
488 main.step( "Post Port1 Data via HTTP" )
Devin Lim142b5342017-07-20 15:22:39 -0700489 Poststatus, result = main.Cluster.active( 0 ).REST.send( ctrlip, httpport, '', path + 'ports/',
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800490 'POST', None, port1postdata )
491 utilities.assert_equals(
492 expect='200',
493 actual=Poststatus,
494 onpass="Post Port Success",
495 onfail="Post Port Failed " + str( Poststatus ) + "," + str( result ) )
496
497 main.step( "Post Port2 Data via HTTP" )
Devin Lim142b5342017-07-20 15:22:39 -0700498 Poststatus, result = main.Cluster.active( 0 ).REST.send( ctrlip, httpport, '', path + 'ports/',
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800499 'POST', None, port2postdata )
500 utilities.assert_equals(
501 expect='200',
502 actual=Poststatus,
503 onpass="Post Port Success",
504 onfail="Post Port Failed " + str( Poststatus ) + "," + str( result ) )
505
506 def CASE7( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800507 """
508 Test host go online and ping each other
509 """
510 import re
alison6acef9f2016-09-28 12:29:08 -0700511 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800512
513 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
514 ovsdbport = main.params[ 'CTRL' ][ 'ovsdbport' ]
515 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
516
517 main.step( "ovsdb node 1 set ovs manager to " + str( ctrlip ) )
518 assignResult = main.OVSDB1.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
519 stepResult = assignResult
520 utilities.assert_equals( expect=main.TRUE,
521 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700522 onpass="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800523 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700524 onfail="ovsdb node 1 set ovs manager to to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800525 str( ctrlip ) + " failed" )
526
527 main.step( "ovsdb node 2 set ovs manager to " + str( ctrlip ) )
528 assignResult = main.OVSDB2.setManager( ip=ctrlip, port=ovsdbport, delaytime=delaytime )
529 stepResult = assignResult
530 utilities.assert_equals( expect=main.TRUE,
531 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700532 onpass="ovsdb node 2 set ovs manager to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800533 str( ctrlip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700534 onfail="ovsdb node 2 set ovs manager to " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800535 str( ctrlip ) + " failed" )
536
537 main.step( "Create host1 on node 1 " + str( OVSDB1Ip ) )
538 stepResult = main.OVSDB1.createHost( hostname="host1" )
539 utilities.assert_equals( expect=main.TRUE,
540 actual=stepResult,
541 onpass="Create host1 on node 1 " + str( OVSDB1Ip ) + " sucess",
542 onfail="Create host1 on node 1 " + str( OVSDB1Ip ) + " failed" )
543
544 main.step( "Create host2 on node 2 " + str( OVSDB2Ip ) )
545 stepResult = main.OVSDB2.createHost( hostname="host2" )
546 utilities.assert_equals( expect=main.TRUE,
547 actual=stepResult,
548 onpass="Create host2 on node 2 " + str( OVSDB2Ip ) + " sucess",
549 onfail="Create host2 on node 2 " + str( OVSDB2Ip ) + " failed" )
550
Jon Hall8638b562017-05-24 16:39:59 -0700551 main.step( "Create port on host1 on the node " + str( OVSDB1Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800552 stepResult = main.OVSDB1.createHostport( hostname="host1", hostport="host1-eth0", hostportmac="000000000001" )
553 utilities.assert_equals( expect=main.TRUE,
554 actual=stepResult,
555 onpass="Create port on host1 on the node " + str( OVSDB1Ip ) + " sucess",
556 onfail="Create port on host1 on the node " + str( OVSDB1Ip ) + " failed" )
557
Jon Hall8638b562017-05-24 16:39:59 -0700558 main.step( "Create port on host2 on the node " + str( OVSDB2Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800559 stepResult = main.OVSDB2.createHostport( hostname="host2", hostport="host2-eth0", hostportmac="000000000002" )
560 utilities.assert_equals( expect=main.TRUE,
561 actual=stepResult,
562 onpass="Create port on host1 on the node " + str( OVSDB2Ip ) + " sucess",
563 onfail="Create port on host1 on the node " + str( OVSDB2Ip ) + " failed" )
564
Jon Hall8638b562017-05-24 16:39:59 -0700565 main.step( "Add port to ovs br-int and host go-online on the node " + str( OVSDB1Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800566 stepResult = main.OVSDB1.addPortToOvs( ovsname="br-int", ifaceId="00000000-0000-0000-0000-000000000001",
567 attachedMac="00:00:00:00:00:01", vmuuid="10000000-0000-0000-0000-000000000001" )
568 utilities.assert_equals( expect=main.TRUE,
569 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700570 onpass="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800571 str( OVSDB1Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700572 onfail="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800573 str( OVSDB1Ip ) + " failed" )
574
Jon Hall8638b562017-05-24 16:39:59 -0700575 main.step( "Add port to ovs br-int and host go-online on the node " + str( OVSDB2Ip ) )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800576 stepResult = main.OVSDB2.addPortToOvs( ovsname="br-int", ifaceId="00000000-0000-0000-0000-000000000002",
577 attachedMac="00:00:00:00:00:02", vmuuid="10000000-0000-0000-0000-000000000001" )
578 utilities.assert_equals( expect=main.TRUE,
579 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700580 onpass="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800581 str( OVSDB2Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700582 onfail="Add port to ovs br-int and host go-online on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800583 str( OVSDB2Ip ) + " failed" )
584
585 main.step( "Check onos set host flows on the node " + str( OVSDB1Ip ) )
586 response = main.OVSDB1.dumpFlows( sw="br-int", protocols="OpenFlow13" )
587 if re.search( "00:00:00:00:00:01", response ):
588 stepResult = main.TRUE
589 else:
590 stepResult = main.FALSE
591 utilities.assert_equals( expect=main.TRUE,
592 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700593 onpass="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800594 str( OVSDB1Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700595 onfail="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800596 str( OVSDB1Ip ) + " failed" )
597
598 main.step( "Check onos set host flows on the node " + str( OVSDB2Ip ) )
599 response = main.OVSDB2.dumpFlows( sw="br-int", protocols="OpenFlow13" )
600 if re.search( "00:00:00:00:00:02", response ):
601 stepResult = main.TRUE
602 else:
603 stepResult = main.FALSE
604 utilities.assert_equals( expect=main.TRUE,
605 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700606 onpass="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800607 str( OVSDB2Ip ) + " sucess",
Jon Hall8638b562017-05-24 16:39:59 -0700608 onfail="Check onos set host flows on the node " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800609 str( OVSDB2Ip ) + " failed" )
610
611 main.step( "Check hosts can ping each other" )
612 main.OVSDB1.setHostportIp( hostname="host1", hostport1="host1-eth0", ip="10.0.0.1" )
613 main.OVSDB2.setHostportIp( hostname="host2", hostport1="host2-eth0", ip="10.0.0.2" )
614 pingResult1 = main.OVSDB1.hostPing( src="10.0.0.1", hostname="host1", target="10.0.0.2" )
615 pingResult2 = main.OVSDB2.hostPing( src="10.0.0.2", hostname="host2", target="10.0.0.1" )
616 stepResult = pingResult1 and pingResult2
617 utilities.assert_equals( expect=main.TRUE,
618 actual=stepResult,
Jon Hall8638b562017-05-24 16:39:59 -0700619 onpass="Successfully host go online and ping each other,controller is " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800620 str( ctrlip ),
Jon Hall8638b562017-05-24 16:39:59 -0700621 onfail="Failed to host go online and ping each other,controller is " +
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800622 str( ctrlip ) )
623
624 def CASE8( self, main ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800625 """
626 Clear ovs configuration and host configuration
627 """
628 import re
alison6acef9f2016-09-28 12:29:08 -0700629 import os
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800630
631 ctrlip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
632 OVSDB1Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip1' ] )
633 OVSDB2Ip = os.getenv( main.params[ 'OVSDB' ][ 'ip2' ] )
634 delaytime = main.params[ 'TIMER' ][ 'delaytime' ]
635
636 main.step( "Delete ovsdb node 1 manager" )
637 deleteResult = main.OVSDB1.delManager( delaytime=delaytime )
638 stepResult = deleteResult
639 utilities.assert_equals( expect=main.TRUE,
640 actual=stepResult,
641 onpass="ovsdb node 1 delete manager sucess",
642 onfail="ovsdb node 1 delete manager failed" )
643
644 main.step( "Delete ovsdb node 2 manager" )
645 deleteResult = main.OVSDB2.delManager( delaytime=delaytime )
646 stepResult = deleteResult
647 utilities.assert_equals( expect=main.TRUE,
648 actual=stepResult,
649 onpass="ovsdb node 2 delete manager sucess",
650 onfail="ovsdb node 2 delete manager failed" )
651
652 main.step( "Delete ovsdb node 1 bridge br-int" )
653 deleteResult = main.OVSDB1.delBr( sw="br-int" )
654 stepResult = deleteResult
655 utilities.assert_equals( expect=main.TRUE,
656 actual=stepResult,
657 onpass="Delete ovsdb node 1 bridge br-int sucess",
658 onfail="Delete ovsdb node 1 bridge br-int failed" )
659
660 main.step( "Delete ovsdb node 2 bridge br-int" )
661 deleteResult = main.OVSDB2.delBr( sw="br-int" )
662 stepResult = deleteResult
663 utilities.assert_equals( expect=main.TRUE,
664 actual=stepResult,
665 onpass="Delete ovsdb node 2 bridge br-int sucess",
666 onfail="Delete ovsdb node 2 bridge br-int failed" )
667
668 main.step( "Delete ip netns host on the ovsdb node 1" )
669 deleteResult = main.OVSDB1.delHost( hostname="host1" )
670 stepResult = deleteResult
671 utilities.assert_equals( expect=main.TRUE,
672 actual=stepResult,
673 onpass="Delete ip netns host on the ovsdb node 1 sucess",
674 onfail="Delete ip netns host on the ovsdb node 1 failed" )
675
676 main.step( "Delete ip netns host on the ovsdb node 2" )
677 deleteResult = main.OVSDB2.delHost( hostname="host2" )
678 stepResult = deleteResult
679 utilities.assert_equals( expect=main.TRUE,
680 actual=stepResult,
681 onpass="Delete ip netns host on the ovsdb node 2 sucess",
682 onfail="Delete ip netns host on the ovsdb node 2 failed" )
683
684 main.step( "Check onoscli devices openflow session is false " + str( OVSDB1Ip ) )
Devin Lim142b5342017-07-20 15:22:39 -0700685 response = main.Cluster.active( 0 ).CLI.devices()
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800686 if re.search( OVSDB1Ip, response ) and not re.search( "true", response ):
687 stepResult = main.TRUE
688 else:
689 stepResult = main.FALSE
690 utilities.assert_equals( expect=main.TRUE,
691 actual=stepResult,
692 onpass="Check openflow session is false " + str( OVSDB1Ip ) + " sucess",
693 onfail="Check openflow session is false " + str( OVSDB1Ip ) + " failed" )
694
695 main.step( "Check onoscli devices have ovs " + str( OVSDB2Ip ) )
Devin Lim142b5342017-07-20 15:22:39 -0700696 response = main.Cluster.active( 0 ).CLI.devices()
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800697 if re.search( OVSDB2Ip, response ) and not re.search( "true", response ):
698 stepResult = main.TRUE
699 else:
700 stepResult = main.FALSE
701 utilities.assert_equals( expect=main.TRUE,
702 actual=stepResult,
703 onpass="Check openflow session is false " + str( OVSDB2Ip ) + " sucess",
Jon Hall53c5e662016-04-13 16:06:56 -0700704 onfail="Check openflow session is false " + str( OVSDB2Ip ) + " failed" )