blob: 2952614acaf7756ebe143fcb3ea94c93514d77c7 [file] [log] [blame]
Andreas Pantelopoulos90f0b102018-02-01 13:21:45 -08001
2class SRRouting:
3 def __init__( self ):
4 self.default = ''
5
6 def CASE1( self, main ):
7 """
Andreas Pantelopoulosb7904ce2018-02-07 16:24:49 -08008 Ping between all ipv4 hosts in the topology.
Andreas Pantelopoulos90f0b102018-02-01 13:21:45 -08009 """
You Wangd66de192018-04-30 17:30:12 -070010 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
11 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
12 main.case( "Ping between all ipv4 hosts in the topology" )
13 setupTest( main, test_idx=1, onosNodes=3, ipv6=False, external=False )
14 verify( main, ipv6=False, disconnected=False, external=False )
15 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosf6ed5012018-02-08 21:26:01 -080016
17 def CASE2( self, main ):
18 """
19 Ping between all ipv6 hosts in the topology.
20 """
You Wangd66de192018-04-30 17:30:12 -070021 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
22 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
23 main.case( "Ping between all ipv6 hosts in the topology" )
24 setupTest( main, test_idx=2, onosNodes=3, ipv4=False, external=False )
25 verify( main, ipv4=False, disconnected=False, external=False )
26 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosf6ed5012018-02-08 21:26:01 -080027
You Wang79577812018-02-27 16:39:50 -080028 def CASE3( self, main ):
29 """
30 Ping between all ipv4 and ipv6 hosts in the topology.
31 """
You Wangd66de192018-04-30 17:30:12 -070032 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
33 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
34 main.case( "Ping between all ipv4 and ipv6 hosts in the topology" )
35 setupTest( main, test_idx=3, onosNodes=3, external=False )
36 verify( main, disconnected=False, external=False )
37 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wangba231e72018-03-01 13:18:21 -080038
39 def CASE4( self, main ):
40 """
41 Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts
42 """
You Wangd66de192018-04-30 17:30:12 -070043 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
44 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
45 main.case( "Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts" )
46 setupTest( main, test_idx=4, onosNodes=3, ipv6=False )
47 verify( main, ipv6=False, disconnected=False )
48 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wangba231e72018-03-01 13:18:21 -080049
50 def CASE5( self, main ):
51 """
52 Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts
53 """
You Wangd66de192018-04-30 17:30:12 -070054 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
55 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
56 main.case( "Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts" )
57 setupTest( main, test_idx=5, onosNodes=3, ipv4=False )
58 verify( main, ipv4=False, disconnected=False )
59 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wangba231e72018-03-01 13:18:21 -080060
61 def CASE6( self, main ):
62 """
63 Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts
64 """
You Wangd66de192018-04-30 17:30:12 -070065 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
66 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
67 main.case( "Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external hosts" )
68 setupTest( main, test_idx=6, onosNodes=3 )
69 verify( main, disconnected=False )
70 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulos2eae3242018-03-06 13:47:20 -080071
72 def CASE7( self, main ):
73 """
74 Ping between ipv4 hosts and an external host that is not configured in
75 external router config, but reachable through the use of route-add
76 command.
77 """
You Wangd66de192018-04-30 17:30:12 -070078 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
79 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
80 main.case( "Ping between from ipv4 hosts to external host configured with route-add command" )
81 setupTest( main, test_idx=7, onosNodes=3, ipv6=False, external=False )
82 verify( main, ipv6=False, internal=False, disconnected=False )
83 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulos2eae3242018-03-06 13:47:20 -080084
85 def CASE8( self, main ):
86 """
87 Ping between ipv6 hosts and an external host that is not configured in
88 external router config, but reachable through the use of route-add
89 command.
90 """
You Wangd66de192018-04-30 17:30:12 -070091 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
92 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
93 main.case( "Ping between from ipv6 hosts to external host configured with route-add command" )
94 setupTest( main, test_idx=8, onosNodes=3, ipv4=False, external=False )
95 verify( main, ipv6=False, internal=False, disconnected=False )
96 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulos2eae3242018-03-06 13:47:20 -080097
98 def CASE9( self, main ):
99 """
100 Ping between ipv4 and pv6 hosts and external hosts that is not configured in
101 external router config, but reachable through the use of route-add
102 command.
103 """
You Wangd66de192018-04-30 17:30:12 -0700104 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
105 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
106 main.case( "Ping between from ipv4 and ipv6 hosts to external host configured with route-add command" )
107 setupTest( main, test_idx=9, onosNodes=3, external=False )
108 verify( main, internal=False, disconnected=False )
109 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800110
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800111 def CASE101( self, main ):
112 """
113 Kill and recover links
114 Ping between all ipv4 hosts in the topology.
115 """
You Wangd66de192018-04-30 17:30:12 -0700116 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
117 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
118 main.case( "Test link failures with IPv4 hosts" )
119 setupTest( main, test_idx=101, onosNodes=3, ipv6=False, external=False )
120 verify( main, ipv6=False, external=False, disconnected=False )
121 verifyLinkFailure( main, ipv6=False, external=False )
122 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800123
124 def CASE102( self, main ):
125 """
126 Kill and recover links
127 Ping between all ipv6 hosts in the topology.
128 """
You Wangd66de192018-04-30 17:30:12 -0700129 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
130 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
131 main.case( "Test link failures with IPv6 hosts" )
132 setupTest( main, test_idx=102, onosNodes=3, ipv4=False, external=False )
133 verify( main, ipv4=False, external=False, disconnected=False )
134 verifyLinkFailure( main, ipv4=False, external=False )
135 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800136
137 def CASE103( self, main ):
138 """
139 Kill and recover links
140 Ping between all ipv4 and ipv6 hosts in the topology.
141 """
You Wangd66de192018-04-30 17:30:12 -0700142 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
143 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
144 main.case( "Test link failures with IPv4 and IPv6 hosts" )
145 setupTest( main, test_idx=103, onosNodes=3, external=False )
146 verify( main, external=False, disconnected=False )
147 verifyLinkFailure( main, external=False )
148 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800149
150 def CASE104( self, main ):
151 """
152 Kill and recover links
153 Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts
154 """
You Wangd66de192018-04-30 17:30:12 -0700155 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
156 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
157 main.case( "Test link failures with IPv4 hosts including external hosts" )
158 setupTest( main, test_idx=104, onosNodes=3, ipv6=False )
159 verify( main, ipv6=False, disconnected=False )
160 verifyLinkFailure( main, ipv6=False )
161 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800162
163 def CASE105( self, main ):
164 """
165 Kill and recover links
166 Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts
167 """
You Wangd66de192018-04-30 17:30:12 -0700168 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
169 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
170 main.case( "Test link failures with IPv6 hosts including external hosts" )
171 setupTest( main, test_idx=105, onosNodes=3, ipv4=False )
172 verify( main, ipv4=False, disconnected=False )
173 verifyLinkFailure( main, ipv4=False )
174 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800175
176 def CASE106( self, main ):
177 """
178 Kill and recover links
179 Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts
180 """
You Wangd66de192018-04-30 17:30:12 -0700181 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
182 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
183 main.case( "Test link failures with IPv4 and IPv6 hosts including external hosts" )
184 setupTest( main, test_idx=106, onosNodes=3 )
185 verify( main, disconnected=False )
186 verifyLinkFailure( main )
187 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800188
189 def CASE107( self, main ):
190 """
191 Kill and recover links
192 Ping between ipv4 hosts and an external host that is not configured in
193 external router config, but reachable through the use of route-add command.
194 """
You Wangd66de192018-04-30 17:30:12 -0700195 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
196 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
197 main.case( "Test link failures with IPv4 hosts including external hosts configured with route-add command" )
198 setupTest( main, test_idx=107, onosNodes=3, ipv6=False, external=False )
199 verify( main, ipv6=False, disconnected=False )
200 verifyLinkFailure( main, ipv6=False, internal=False )
201 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800202
203 def CASE108( self, main ):
204 """
205 Kill and recover links
206 Ping between ipv6 hosts and an external host that is not configured in
207 external router config, but reachable through the use of route-add command.
208 """
You Wangd66de192018-04-30 17:30:12 -0700209 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
210 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
211 main.case( "Test link failures with IPv6 hosts including external hosts configured with route-add command" )
212 setupTest( main, test_idx=108, onosNodes=3, ipv4=False, external=False )
213 verify( main, ipv4=False, disconnected=False )
214 verifyLinkFailure( main, ipv4=False, internal=False )
215 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800216
217 def CASE109( self, main ):
218 """
219 Kill and recover links
220 Ping between ipv4 and pv6 hosts and external hosts that is not configured in
221 external router config, but reachable through the use of route-add command.
222 """
You Wangd66de192018-04-30 17:30:12 -0700223 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
224 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
225 main.case( "Test link failures with IPv4 and IPv6 hosts including external hosts configured with route-add command" )
226 setupTest( main, test_idx=109, onosNodes=3, external=False )
227 verify( main, disconnected=False )
228 verifyLinkFailure( main, internal=False )
229 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800230
You Wang27317572018-03-06 12:13:11 -0800231 def CASE201( self, main ):
232 """
233 Kill and recover spine switches
234 Ping between all ipv4 hosts in the topology.
235 """
You Wangd66de192018-04-30 17:30:12 -0700236 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
237 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
238 main.case( "Test switch failures with IPv4 hosts" )
239 setupTest( main, test_idx=201, onosNodes=3, ipv6=False, external=False )
240 verify( main, ipv6=False, external=False, disconnected=False )
241 verifySwitchFailure( main, ipv6=False, external=False )
242 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800243
244 def CASE202( self, main ):
245 """
246 Kill and recover spine switches
247 Ping between all ipv6 hosts in the topology.
248 """
You Wangd66de192018-04-30 17:30:12 -0700249 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
250 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
251 main.case( "Test switch failures with IPv6 hosts" )
252 setupTest( main, test_idx=202, onosNodes=3, ipv4=False, external=False )
253 verify( main, ipv4=False, external=False, disconnected=False )
254 verifySwitchFailure( main, ipv4=False, external=False )
255 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800256
257 def CASE203( self, main ):
258 """
259 Kill and recover spine switches
260 Ping between all ipv4 and ipv6 hosts in the topology.
261 """
You Wangd66de192018-04-30 17:30:12 -0700262 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
263 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
264 main.case( "Test switch failures with IPv4 and IPv6 hosts" )
265 setupTest( main, test_idx=203, onosNodes=3, external=False )
266 verify( main, external=False, disconnected=False )
267 verifySwitchFailure( main, external=False )
268 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800269
270 def CASE204( self, main ):
271 """
272 Kill and recover spine switches
273 Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts
274 """
You Wangd66de192018-04-30 17:30:12 -0700275 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
276 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
277 main.case( "Test switch failures with IPv4 hosts including external hosts" )
278 setupTest( main, test_idx=204, onosNodes=3, ipv6=False )
279 verify( main, ipv6=False, disconnected=False )
280 verifySwitchFailure( main, ipv6=False )
281 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800282
283 def CASE205( self, main ):
284 """
285 Kill and recover spine switches
286 Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts
287 """
You Wangd66de192018-04-30 17:30:12 -0700288 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
289 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
290 main.case( "Test switch failures with IPv6 hosts including external hosts" )
291 setupTest( main, test_idx=205, onosNodes=3, ipv4=False )
292 verify( main, ipv4=False, disconnected=False )
293 verifySwitchFailure( main, ipv4=False )
294 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800295
296 def CASE206( self, main ):
297 """
298 Kill and recover spine switches
299 Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts
300 """
You Wangd66de192018-04-30 17:30:12 -0700301 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
302 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
303 main.case( "Test switch failures with IPv4 and IPv6 hosts including external hosts" )
304 setupTest( main, test_idx=206, onosNodes=3 )
305 verify( main, disconnected=False )
306 verifySwitchFailure( main )
307 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800308
309 def CASE207( self, main ):
310 """
311 Kill and recover spine switches
312 Ping between ipv4 hosts and an external host that is not configured in
313 external router config, but reachable through the use of route-add command.
314 """
You Wangd66de192018-04-30 17:30:12 -0700315 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
316 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
317 main.case( "Test switch failures with IPv4 hosts including external hosts configured with route-add command" )
318 setupTest( main, test_idx=207, onosNodes=3, ipv6=False, external=False )
319 verify( main, ipv6=False, disconnected=False )
320 verifySwitchFailure( main, ipv6=False, internal=False )
321 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800322
323 def CASE208( self, main ):
324 """
325 Kill and recover spine switches
326 Ping between ipv6 hosts and an external host that is not configured in
327 external router config, but reachable through the use of route-add command.
328 """
You Wangd66de192018-04-30 17:30:12 -0700329 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
330 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
331 main.case( "Test switch failures with IPv6 hosts including external hosts configured with route-add command" )
332 setupTest( main, test_idx=208, onosNodes=3, ipv4=False, external=False )
333 verify( main, ipv4=False, disconnected=False )
334 verifySwitchFailure( main, ipv4=False, internal=False )
335 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
You Wang27317572018-03-06 12:13:11 -0800336
337 def CASE209( self, main ):
338 """
339 Kill and recover spine switches
340 Ping between ipv4 and pv6 hosts and external hosts that is not configured in
341 external router config, but reachable through the use of route-add command.
342 """
You Wangd66de192018-04-30 17:30:12 -0700343 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
344 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
345 main.case( "Test switch failures with IPv4 and IPv6 hosts including external hosts configured with route-add command" )
346 setupTest( main, test_idx=209, onosNodes=3, external=False )
347 verify( main, disconnected=False )
348 verifySwitchFailure( main, internal=False )
349 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800350
Jon Hall3c910162018-03-07 14:42:16 -0800351 def CASE301( self, main ):
352 """
You Wangd66de192018-04-30 17:30:12 -0700353 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800354 Ping between all ipv4 hosts in the topology.
355 """
You Wangd66de192018-04-30 17:30:12 -0700356 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
357 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
358 main.case( "Test onos failures with IPv4 hosts" )
359 setupTest( main, test_idx=301, onosNodes=3, ipv6=False, external=False )
360 verify( main, ipv6=False, external=False, disconnected=False )
361 verifyOnosFailure( main, ipv6=False, external=False )
362 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800363
364 def CASE302( self, main ):
365 """
You Wangd66de192018-04-30 17:30:12 -0700366 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800367 Ping between all ipv6 hosts in the topology.
368 """
You Wangd66de192018-04-30 17:30:12 -0700369 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
370 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
371 main.case( "Test onos failures with IPv6 hosts" )
372 setupTest( main, test_idx=302, onosNodes=3, ipv4=False, external=False )
373 verify( main, ipv4=False, external=False, disconnected=False )
374 verifyOnosFailure( main, ipv4=False, external=False )
375 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800376
377 def CASE303( self, main ):
378 """
You Wangd66de192018-04-30 17:30:12 -0700379 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800380 Ping between all ipv4 and ipv6 hosts in the topology.
381 """
You Wangd66de192018-04-30 17:30:12 -0700382 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
383 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
384 main.case( "Test onos failures with IPv4 and IPv6 hosts" )
385 setupTest( main, test_idx=303, onosNodes=3, external=False )
386 verify( main, external=False, disconnected=False )
387 verifyOnosFailure( main, external=False )
388 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800389
390 def CASE304( self, main ):
391 """
You Wangd66de192018-04-30 17:30:12 -0700392 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800393 Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts
394 """
You Wangd66de192018-04-30 17:30:12 -0700395 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
396 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
397 main.case( "Test onos failures with IPv4 hosts including external hosts" )
398 setupTest( main, test_idx=304, onosNodes=3, ipv6=False )
399 verify( main, ipv6=False, disconnected=False )
400 verifyOnosFailure( main, ipv6=False )
401 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800402
403 def CASE305( self, main ):
404 """
You Wangd66de192018-04-30 17:30:12 -0700405 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800406 Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts
407 """
You Wangd66de192018-04-30 17:30:12 -0700408 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
409 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
410 main.case( "Test onos failures with IPv6 hosts including external hosts" )
411 setupTest( main, test_idx=305, onosNodes=3, ipv4=False )
412 verify( main, ipv4=False, disconnected=False )
413 verifyOnosFailure( main, ipv4=False )
414 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800415
416 def CASE306( self, main ):
417 """
You Wangd66de192018-04-30 17:30:12 -0700418 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800419 Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts
420 """
You Wangd66de192018-04-30 17:30:12 -0700421 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
422 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
423 main.case( "Test onos failures with IPv4 and IPv6 hosts including external hosts" )
424 setupTest( main, test_idx=306, onosNodes=3 )
425 verify( main, disconnected=False )
426 verifyOnosFailure( main )
427 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800428
429 def CASE307( self, main ):
430 """
You Wangd66de192018-04-30 17:30:12 -0700431 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800432 Ping between ipv4 hosts and an external host that is not configured in
433 external router config, but reachable through the use of route-add command.
434 """
You Wangd66de192018-04-30 17:30:12 -0700435 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
436 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
437 main.case( "Test onos failures with IPv4 hosts including external hosts configured with route-add command" )
438 setupTest( main, test_idx=307, onosNodes=3, ipv6=False, external=False )
439 verify( main, ipv6=False, disconnected=False )
440 verifyOnosFailure( main, ipv6=False, internal=False )
441 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800442
443 def CASE308( self, main ):
444 """
You Wangd66de192018-04-30 17:30:12 -0700445 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800446 Ping between ipv6 hosts and an external host that is not configured in
447 external router config, but reachable through the use of route-add command.
448 """
You Wangd66de192018-04-30 17:30:12 -0700449 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
450 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
451 main.case( "Test onos failures with IPv6 hosts including external hosts configured with route-add command" )
452 setupTest( main, test_idx=308, onosNodes=3, ipv4=False, external=False )
453 verify( main, ipv4=False, disconnected=False )
454 verifyOnosFailure( main, ipv4=False, internal=False )
455 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jon Hall3c910162018-03-07 14:42:16 -0800456
457 def CASE309( self, main ):
458 """
You Wangd66de192018-04-30 17:30:12 -0700459 Kill and recover onos nodes
Jon Hall3c910162018-03-07 14:42:16 -0800460 Ping between ipv4 and pv6 hosts and external hosts that is not configured in
461 external router config, but reachable through the use of route-add command.
462 """
You Wangd66de192018-04-30 17:30:12 -0700463 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
464 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
465 main.case( "Test onos failures with IPv4 and IPv6 hosts including external hosts configured with route-add command" )
466 setupTest( main, test_idx=309, onosNodes=3, external=False )
467 verify( main, disconnected=False )
468 verifyOnosFailure( main, internal=False )
469 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Andreas Pantelopoulosfab6bf32018-03-06 18:56:35 -0800470
Andreas Pantelopoulos74c7ff22018-05-01 15:42:02 -0700471 def CASE603( self, main ):
472 """"
473 Drop HAGG-1 device and test connectivity.
474 Drop DAAS-1 device and test connectivity (some hosts lost it)
475 Bring up DAAS-1 and test connectivity (all hosts gained it again)
476
477 Repeat the same with HAGG-2 and DAAS-2.
478 """
479 import time
480 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
481 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
482 main.case( "Drop hagg spine switch along with dass leaf switch." )
483 setupTest( main, test_idx=603, onosNodes=3 )
484 main.disconnectedIpv4Hosts = []
485 main.disconnectedIpv6Hosts = []
486
487 verify( main )
488 lib.killSwitch( main, "spine103", int( main.params[ "TOPO" ]["switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6 )
489 verify( main )
490 lib.killSwitch( main, "leaf6", int( main.params[ "TOPO" ]["switchNum" ] ) - 2, int( main.params[ "TOPO" ][ "linkNum" ] ) - 8 )
491 main.disconnectedIpv4Hosts = [ 'h12v4', 'h13v4']
492 main.disconnectedIpv6Hosts = [ 'h12v6', 'h13v6']
493 verify( main )
494 lib.recoverSwitch( main, "leaf6", int( main.params[ "TOPO" ]["switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6, rediscoverHosts=True)
495 main.disconnectedIpv4Hosts = []
496 main.disconnectedIpv6Hosts = []
497 verify( main )
498 lib.recoverSwitch( main, "spine103", int( main.params[ "TOPO" ][ "switchNum" ] ), int( main.params[ "TOPO" ][ "linkNum" ] ))
499 verify( main )
500
501 lib.killSwitch( main, "spine104", int( main.params[ "TOPO" ]["switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6 )
502 verify( main )
503 lib.killSwitch( main, "leaf1", int( main.params[ "TOPO" ]["switchNum" ] ) - 2, int( main.params[ "TOPO" ][ "linkNum" ] ) - 8 )
504 main.disconnectedIpv4Hosts = [ 'h1v4', 'h2v4']
505 main.disconnectedIpv6Hosts = [ 'h1v6', 'h2v6']
506 verify( main )
507 lib.recoverSwitch( main, "leaf1", int( main.params[ "TOPO" ]["switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6, rediscoverHosts=True)
508 main.disconnectedIpv4Hosts = []
509 main.disconnectedIpv6Hosts = []
510 verify( main )
511 lib.recoverSwitch( main, "spine104", int( main.params[ "TOPO" ][ "switchNum" ] ), int( main.params[ "TOPO" ][ "linkNum" ] ))
512 verify( main )
513
514 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
515
516 def CASE604( self, main ):
517 """"
518 Drop HAGG-1 device and test connectivity.
519 Bring up HAGG-1 and test connectivity.
520 Drop HAGG-2 device and test connectivity.
521 Bring up HAGG-2 device and test connectivity
522 """
523 import time
524 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
525 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
526 main.case( "Drop hagg spine switches." )
527 setupTest( main, test_idx=604, onosNodes=3 )
528 main.disconnectedIpv4Hosts = []
529 main.disconnectedIpv6Hosts = []
530 verify( main )
531 lib.killSwitch( main, "spine103", int( main.params[ "TOPO" ]["switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6 )
532 verify( main )
533 lib.recoverSwitch( main, "spine103", int( main.params[ "TOPO" ][ "switchNum" ] ), int( main.params[ "TOPO" ][ "linkNum" ] ))
534 verify( main )
535 lib.killSwitch( main, "spine104", int( main.params[ "TOPO" ]["switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6 )
536 verify( main )
537 lib.recoverSwitch( main, "spine104", int( main.params[ "TOPO" ][ "switchNum" ] ), int( main.params[ "TOPO" ][ "linkNum" ] ))
538 verify( main )
539 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
540
Jonghwan Hyun3759e472018-05-01 15:40:08 -0700541 def CASE605( self, main ):
542 """
543 Drop HAGG-1 and test connectivity (expect no failure)
544 Drop all leafs in big fabric and test connectivity (expect some failures)
545 Bring up HAGG-1 and test connectivity (still expect some failures)
546 Bring up all leafs in big fabric and test connectivity (expect no failure)
547 Repeat above with HAGG-2
548 """
549 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
550 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
551 main.case( "Drop one hagg and all leafs in big fabric" )
552 setupTest( main, test_idx=605, onosNodes=3 )
553 main.disconnectedIpv4Hosts = []
554 main.disconnectedIpv6Hosts = []
555 verify( main )
556 lib.killSwitch( main, "spine103", int( main.params[ "TOPO" ][ "switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6 )
557 verify( main )
558 lib.killSwitch( main, [ "leaf2", "leaf3", "leaf4", "leaf5" ], int( main.params[ "TOPO" ][ "switchNum" ] ) - 5,
559 int( main.params[ "TOPO" ][ "linkNum" ] ) - 42 )
560 main.disconnectedIpv4Hosts = [ "h3v4", "h4v4", "h5v4", "h6v4", "h7v4", "h8v4", "h9v4", "h10v4", "h11v4" ]
561 main.disconnectedIpv6Hosts = [ "h3v6", "h4v6", "h5v6", "h6v6", "h7v6", "h8v6", "h9v6", "h10v6", "h11v6" ]
562 main.disconnectedExternalIpv4Hosts = [ "rh1v4", "rh2v4", "rh5v4" ]
563 main.disconnectedExternalIpv6Hosts = [ "rh1v6", "rh11v6", "rh5v6", "rh2v6", "rh22v6" ]
564 verify( main, disconnected=True )
565 lib.recoverSwitch( main, "spine103", int( main.params[ "TOPO" ][ "switchNum" ] ) - 4, int( main.params[ "TOPO" ][ "linkNum" ] ) - 36 )
566 verify( main, disconnected=True )
567 lib.recoverSwitch( main, [ "leaf2", "leaf3", "leaf4", "leaf5" ], int( main.params[ "TOPO" ][ "switchNum" ] ),
568 int( main.params[ "TOPO" ][ "linkNum" ] ) )
569 main.disconnectedIpv4Hosts = []
570 main.disconnectedIpv6Hosts = []
571 main.disconnectedExternalIpv4Hosts = [ ]
572 main.disconnectedExternalIpv6Hosts = [ ]
573 verify( main )
574
575 lib.killSwitch( main, "spine104", int( main.params[ "TOPO" ][ "switchNum" ] ) - 1, int( main.params[ "TOPO" ][ "linkNum" ] ) - 6 )
576 verify( main )
577 lib.killSwitch( main, [ "leaf2", "leaf3", "leaf4", "leaf5" ], int( main.params[ "TOPO" ][ "switchNum" ] ) - 5,
578 int( main.params[ "TOPO" ][ "linkNum" ] ) - 42 )
579 main.disconnectedIpv4Hosts = [ "h3v4", "h4v4", "h5v4", "h6v4", "h7v4", "h8v4", "h9v4", "h10v4", "h11v4" ]
580 main.disconnectedIpv6Hosts = [ "h3v6", "h4v6", "h5v6", "h6v6", "h7v6", "h8v6", "h9v6", "h10v6", "h11v6" ]
581 main.disconnectedExternalIpv4Hosts = [ "rh1v4", "rh2v4", "rh5v4" ]
582 main.disconnectedExternalIpv6Hosts = [ "rh1v6", "rh11v6", "rh5v6", "rh2v6", "rh22v6" ]
583 verify( main, disconnected=True )
584 lib.recoverSwitch( main, "spine104", int( main.params[ "TOPO" ][ "switchNum" ] ) - 4, int( main.params[ "TOPO" ][ "linkNum" ] ) - 36 )
585 verify( main, disconnected=True )
586 lib.recoverSwitch( main, [ "leaf2", "leaf3", "leaf4", "leaf5" ], int( main.params[ "TOPO" ][ "switchNum" ] ),
587 int( main.params[ "TOPO" ][ "linkNum" ] ) )
588 main.disconnectedIpv4Hosts = []
589 main.disconnectedIpv6Hosts = []
590 main.disconnectedExternalIpv4Hosts = [ ]
591 main.disconnectedExternalIpv6Hosts = [ ]
592 verify( main )
593 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
594
You Wang5da39c82018-04-26 22:55:08 -0700595 def CASE606( self, main ):
596 """
597 Drop SPINE-1 and test connectivity
598 Drop paired leaf and test connectivity (expect some failures)
599 Bring up SPINE-1 and test connectivity (still expect some failures)
600 Bring up the paired leaf and test connectivity
601 Repeat above with SPINE-2 and a different paired leaf
602 """
603 import time
604 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
605 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
606 main.case( "Drop spine and paired leaf" )
607 setupTest( main, test_idx=606, onosNodes=3 )
You Wangd66de192018-04-30 17:30:12 -0700608 verify( main, disconnected=False )
You Wang6d2d6312018-05-08 12:02:02 -0700609 # Drop spine101 and leaf-2/3
You Wangd66de192018-04-30 17:30:12 -0700610 lib.killSwitch( main, "spine101", 9, 30 )
611 verify( main, disconnected=False )
612 lib.killSwitch( main, "leaf2", 8, 24 )
613 lib.killSwitch( main, "leaf3", 7, 20 )
You Wang5da39c82018-04-26 22:55:08 -0700614 main.disconnectedIpv4Hosts = [ "h3v4", "h4v4", "h5v4", "h6v4", "h7v4" ]
615 main.disconnectedIpv6Hosts = [ "h3v6", "h4v6", "h5v6", "h6v6", "h7v6" ]
You Wangd66de192018-04-30 17:30:12 -0700616 verify( main )
617 lib.recoverSwitch( main, "spine101", 8, 30 )
618 verify( main )
619 lib.recoverSwitch( main, "leaf3", 9, 38 )
You Wang6d2d6312018-05-08 12:02:02 -0700620 lib.recoverSwitch( main, "leaf2", 10, 48, rediscoverHosts=True,
621 hostsToDiscover=main.disconnectedIpv4Hosts + main.disconnectedIpv6Hosts )
You Wang5da39c82018-04-26 22:55:08 -0700622 main.disconnectedIpv4Hosts = []
623 main.disconnectedIpv6Hosts = []
You Wang6d2d6312018-05-08 12:02:02 -0700624 verify( main, disconnected=False )
625 # Drop spine102 and leaf-4/5
626 lib.killSwitch( main, "spine102", 9, 30 )
627 verify( main, disconnected=False )
628 lib.killSwitch( main, "leaf4", 8, 24 )
629 lib.killSwitch( main, "leaf5", 7, 20 )
630 main.disconnectedIpv4Hosts = [ "h8v4", "h9v4", "h10v4", "h11v4" ]
631 main.disconnectedIpv6Hosts = [ "h8v6", "h9v6", "h10v6", "h11v6" ]
632 verify( main, external=False )
633 lib.recoverSwitch( main, "spine102", 8, 30 )
634 verify( main, external=False )
635 lib.recoverSwitch( main, "leaf5", 9, 38 )
636 lib.recoverSwitch( main, "leaf4", 10, 48, rediscoverHosts=True,
637 hostsToDiscover=main.disconnectedIpv4Hosts + main.disconnectedIpv6Hosts )
638 main.disconnectedIpv4Hosts = []
639 main.disconnectedIpv6Hosts = []
640 verify( main, disconnected=False )
641 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
642
643 def CASE620( self, main ):
644 """
645 Take down one of double links towards the spine from all leaf switches and
646 check that buckets in select groups change accordingly
647 Bring up links again and check that buckets in select groups change accordingly
648 """
649 import time
650 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
651 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
652 main.case( "Take down one of double links towards the spine" )
653 setupTest( main, test_idx=620, onosNodes=3 )
654 verify( main, disconnected=False )
655 portsToDisable = [ [ "of:0000000000000002", 1 ], [ "of:0000000000000002", 3 ],
656 [ "of:0000000000000003", 1 ], [ "of:0000000000000003", 3 ],
657 [ "of:0000000000000004", 1 ], [ "of:0000000000000004", 3 ],
658 [ "of:0000000000000005", 1 ], [ "of:0000000000000005", 3 ] ]
659 for dpid, port in portsToDisable:
660 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="disable" )
661 # TODO: check buckets in groups
662 verify( main, disconnected=False )
663 for dpid, port in portsToDisable:
664 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="enable" )
665 # TODO: check buckets in groups
666 verify( main, disconnected=False )
667 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
668
669 def CASE621( self, main ):
670 """
671 Remove all the links in the network and restore all Links (repeat x3)
672 """
673 import time
674 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
675 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
676 main.case( "Remove all the links in the network and restore all Links" )
677 setupTest( main, test_idx=621, onosNodes=3 )
678 verify( main, disconnected=False )
679 linksToRemove = [ ["spine101", "spine103"], ["spine102", "spine104"],
680 ["spine103", "leaf6"], ["spine103", "leaf1"],
681 ["spine104", "leaf6"], ["spine104", "leaf1"],
682 ["spine101", "leaf2"], ["spine101", "leaf3"], ["spine101", "leaf4"], ["spine101", "leaf5"],
683 ["spine102", "leaf2"], ["spine102", "leaf3"], ["spine102", "leaf4"], ["spine102", "leaf5"],
684 ["leaf2", "leaf3"], ["leaf4", "leaf5"] ]
685 portsToDisable = [ [ "of:0000000000000001", 3 ], [ "of:0000000000000001", 4 ],
686 [ "of:0000000000000001", 5 ], [ "of:0000000000000001", 6 ],
687 [ "of:0000000000000002", 6 ], [ "of:0000000000000002", 7 ],
688 [ "of:0000000000000002", 8 ], [ "of:0000000000000002", 9 ],
689 [ "of:0000000000000002", 10 ], [ "of:0000000000000002", 11 ],
690 [ "of:0000000000000003", 6 ], [ "of:0000000000000003", 7 ],
691 [ "of:0000000000000003", 8 ], [ "of:0000000000000003", 9 ],
692 [ "of:0000000000000003", 10 ], [ "of:0000000000000003", 11 ],
693 [ "of:0000000000000003", 12 ], [ "of:0000000000000003", 13 ],
694 [ "of:0000000000000004", 6 ], [ "of:0000000000000004", 7 ],
695 [ "of:0000000000000004", 8 ], [ "of:0000000000000004", 9 ],
696 [ "of:0000000000000004", 10 ], [ "of:0000000000000004", 11 ],
697 [ "of:0000000000000004", 12 ], [ "of:0000000000000004", 13 ], [ "of:0000000000000004", 14 ],
698 [ "of:0000000000000005", 6 ], [ "of:0000000000000005", 7 ],
699 [ "of:0000000000000005", 8 ], [ "of:0000000000000005", 9 ],
700 [ "of:0000000000000005", 10 ], [ "of:0000000000000005", 11 ],
701 [ "of:0000000000000005", 12 ], [ "of:0000000000000005", 13 ],
702 [ "of:0000000000000005", 14 ], [ "of:0000000000000005", 15 ],
703 [ "of:0000000000000006", 3 ], [ "of:0000000000000006", 4 ],
704 [ "of:0000000000000006", 5 ], [ "of:0000000000000006", 6 ] ]
705 for i in range( 0, 3 ):
706 lib.killLinkBatch( main, linksToRemove, 0, 10 )
707 for dpid, port in portsToDisable:
708 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="disable" )
709 time.sleep( 10 )
710 main.disconnectedIpv4Hosts = main.internalIpv4Hosts
711 main.disconnectedIpv6Hosts = main.internalIpv6Hosts
712 verify( main )
713 lib.restoreLinkBatch( main, linksToRemove, 48, 10 )
714 for dpid, port in portsToDisable:
715 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="enable" )
716 time.sleep( 30 )
717 main.Network.discoverHosts( hostList=main.disconnectedIpv4Hosts + main.disconnectedIpv6Hosts )
718 time.sleep( 10 )
719 main.disconnectedIpv4Hosts = []
720 main.disconnectedIpv6Hosts = []
721 verify( main )
722 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
723
724 def CASE622( self, main ):
725 """
726 Take down all uplinks from a paired leaf switch
727 """
728 import time
729 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
730 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
731 from core import utilities
732 main.case( "Take down all uplinks from a paired leaf switch" )
733 setupTest( main, test_idx=622, onosNodes=3 )
734 verify( main, disconnected=False )
735 ctrl = main.Cluster.active( 0 )
736 result1 = ctrl.CLI.verifyHostLocation( "1003::3fe",
737 [ "of:0000000000000002/7", "of:0000000000000003/6" ] )
738 result2 = ctrl.CLI.verifyHostLocation( "1004::3fe",
739 [ "of:0000000000000002/8", "of:0000000000000003/7" ] )
740 result3 = ctrl.CLI.verifyHostLocation( "10.2.30.1",
741 [ "of:0000000000000002/10", "of:0000000000000003/10" ] )
742 result4 = ctrl.CLI.verifyHostLocation( "10.2.20.1",
743 [ "of:0000000000000002/11", "of:0000000000000003/11" ] )
744 utilities.assert_equals( expect=main.TRUE, actual=result1 and result2 and result3 and result4,
745 onpass="Host locations are correct",
746 onfail="Not all host locations are correct" )
747 linksToRemove = [ ["spine101", "leaf2"], ["spine102", "leaf2"] ]
748 lib.killLinkBatch( main, linksToRemove, 40, 10 )
749 # TODO: more verifications are required
You Wangd66de192018-04-30 17:30:12 -0700750 verify( main )
You Wang6d2d6312018-05-08 12:02:02 -0700751 main.step( "Verify some dual-homed hosts become single-homed" )
752 result1 = ctrl.CLI.verifyHostLocation( "1003::3fe", "of:0000000000000003/6" )
753 result2 = ctrl.CLI.verifyHostLocation( "1004::3fe", "of:0000000000000003/7" )
754 result3 = ctrl.CLI.verifyHostLocation( "10.2.30.1", "of:0000000000000003/10" )
755 result4 = ctrl.CLI.verifyHostLocation( "10.2.20.1", "of:0000000000000003/11" )
756 utilities.assert_equals( expect=main.TRUE, actual=result1 and result2 and result3 and result4,
757 onpass="Host locations are correct",
758 onfail="Not all host locations are correct" )
759 lib.restoreLinkBatch( main, linksToRemove, 48, 10 )
760 verify( main )
761 main.step( "Verify the hosts changed back to be dual-homed" )
762 result1 = ctrl.CLI.verifyHostLocation( "1003::3fe",
763 [ "of:0000000000000002/7", "of:0000000000000003/6" ] )
764 result2 = ctrl.CLI.verifyHostLocation( "1004::3fe",
765 [ "of:0000000000000002/8", "of:0000000000000003/7" ] )
766 result3 = ctrl.CLI.verifyHostLocation( "10.2.30.1",
767 [ "of:0000000000000002/10", "of:0000000000000003/10" ] )
768 result4 = ctrl.CLI.verifyHostLocation( "10.2.20.1",
769 [ "of:0000000000000002/11", "of:0000000000000003/11" ] )
770 utilities.assert_equals( expect=main.TRUE, actual=result1 and result2 and result3 and result4,
771 onpass="Host locations are correct",
772 onfail="Not all host locations are correct" )
773 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
774
775 def CASE630( self, main ):
776 """
777 Bring an instance down
778 Drop a device
779 Bring that same instance up again and observe that this specific instance sees that the device is down.
780 """
781 import time
782 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
783 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
784 from core import utilities
785 main.case( "Bring an instance down and drop a device" )
786 setupTest( main, test_idx=630, onosNodes=3 )
787 onosToKill = 0
788 deviceToDrop = "spine101"
789 lib.killOnos( main, [ onosToKill ], 10, 48, 2 )
790 lib.killSwitch( main, deviceToDrop, 9, 30 )
791 lib.recoverOnos( main, [ onosToKill ], 9, 30, 3 )
792 result = main.Cluster.runningNodes[ onosToKill ].CLI.checkStatus( 9, 30, 3 )
793 utilities.assert_equals( expect=main.TRUE, actual=result,
794 onpass="ONOS instance {} sees correct device numbers".format( onosToKill ),
795 onfail="ONOS instance {} doesn't see correct device numbers".format( onosToKill ) )
You Wang5da39c82018-04-26 22:55:08 -0700796 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
Jonghwan Hyun25c98a62018-05-04 13:59:09 -0700797
798 def CASE642( self, main ):
799 """
800 Drop one link from each double link
801 Drop a link between DAAS-1 and HAAG-1
802 Drop a link between HAGG-2 and SPINE-2
803 Drop one ONOS instance
804 Test connectivity (expect no failure)
805 Bring up all links and ONOS instance
806 Test connectivity (expect no failure)
807 """
808 import time
809 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
810 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
811 main.case( "Drop ONOS instance and links at the same time" )
812 setupTest( main, test_idx=642, onosNodes=3 )
813 main.Cluster.active( 0 ).CLI.balanceMasters()
814 time.sleep( float( main.params[ 'timers' ][ 'balanceMasterSleep' ] ) )
815 verify( main )
816
817 portsToDisable = [ [ "of:0000000000000001", 1 ], [ "of:0000000000000103", 1 ],
818 [ "of:0000000000000006", 1 ], [ "of:0000000000000103", 2 ],
819 [ "of:0000000000000101", 9 ], [ "of:0000000000000103", 3 ],
820 [ "of:0000000000000002", 1 ], [ "of:0000000000000101", 1 ],
821 [ "of:0000000000000003", 1 ], [ "of:0000000000000101", 3 ],
822 [ "of:0000000000000004", 1 ], [ "of:0000000000000101", 5 ],
823 [ "of:0000000000000005", 1 ], [ "of:0000000000000101", 7 ],
824 [ "of:0000000000000002", 3 ], [ "of:0000000000000102", 1 ],
825 [ "of:0000000000000003", 3 ], [ "of:0000000000000102", 3 ],
826 [ "of:0000000000000004", 3 ], [ "of:0000000000000102", 5 ],
827 [ "of:0000000000000005", 3 ], [ "of:0000000000000102", 7 ] ]
828 for dpid, port in portsToDisable:
829 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="disable" )
830 lib.killOnos( main, [ 2, ], int( main.params[ "TOPO" ][ "switchNum" ] ),
831 int( main.params[ "TOPO" ][ "linkNum" ] ) - len( portsToDisable ), 2 )
832 verify( main )
833 for dpid, port in portsToDisable:
834 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="enable" )
835 lib.recoverOnos( main, [ 2, ], int( main.params[ "TOPO" ][ "switchNum" ] ),
836 int( main.params[ "TOPO" ][ "linkNum" ] ), 3 )
837 verify( main )
838 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )
839
840 def CASE643( self, main ):
841 """
842 Drop one link from each double link
843 Drop a link between DAAS-1 and HAAG-1
844 Drop a link between HAGG-2 and SPINE-2
845 Test connectivity (expect no failure)
846 Bring up all links
847 Drop one ONOS instance
848 Test connectivity (expect no failure)
849 Bring up ONOS instance
850 Test connectivity (expect no failure)
851 """
852 import time
853 from tests.USECASE.SegmentRouting.SRRouting.dependencies.SRRoutingTest import *
854 from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as lib
855 main.case( "Drop ONOS instances and bring up links at the same time" )
856 setupTest( main, test_idx=643, onosNodes=3 )
857 main.Cluster.active( 0 ).CLI.balanceMasters()
858 time.sleep( float( main.params[ 'timers' ][ 'balanceMasterSleep' ] ) )
859 verify( main )
860
861 portsToDisable = [ [ "of:0000000000000001", 1 ], [ "of:0000000000000103", 1 ],
862 [ "of:0000000000000006", 1 ], [ "of:0000000000000103", 2 ],
863 [ "of:0000000000000101", 9 ], [ "of:0000000000000103", 3 ],
864 [ "of:0000000000000002", 1 ], [ "of:0000000000000101", 1 ],
865 [ "of:0000000000000003", 1 ], [ "of:0000000000000101", 3 ],
866 [ "of:0000000000000004", 1 ], [ "of:0000000000000101", 5 ],
867 [ "of:0000000000000005", 1 ], [ "of:0000000000000101", 7 ],
868 [ "of:0000000000000002", 3 ], [ "of:0000000000000102", 1 ],
869 [ "of:0000000000000003", 3 ], [ "of:0000000000000102", 3 ],
870 [ "of:0000000000000004", 3 ], [ "of:0000000000000102", 5 ],
871 [ "of:0000000000000005", 3 ], [ "of:0000000000000102", 7 ] ]
872 for dpid, port in portsToDisable[ : -1 ]:
873 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="disable" )
874 # To trigger sleep for link down discovery and topology check
875 lib.portstate( main, portsToDisable[ -1 ][ 0 ], portsToDisable[ -1 ][ 1 ], "disable",
876 int( main.params[ "TOPO" ][ "switchNum" ] ),
877 int( main.params[ "TOPO" ][ "linkNum" ] ) - len( portsToDisable ) )
878
879 verify( main )
880 for dpid, port in portsToDisable[ : -1 ]:
881 main.Cluster.active( 0 ).CLI.portstate( dpid=dpid, port=port, state="enable" )
882 # To trigger sleep for link up discovery and topology check
883 lib.portstate( main, portsToDisable[ -1 ][ 0 ], portsToDisable[ -1 ][ 1 ], "enable",
884 int( main.params[ "TOPO" ][ "switchNum" ] ),
885 int( main.params[ "TOPO" ][ "linkNum" ] ) )
886 lib.killOnos( main, [ 2, ], int( main.params[ "TOPO" ][ "switchNum" ] ),
887 int( main.params[ "TOPO" ][ "linkNum" ] ), 2 )
888 verify( main )
889 lib.recoverOnos( main, [ 2, ], int( main.params[ "TOPO" ][ "switchNum" ] ),
890 int( main.params[ "TOPO" ][ "linkNum" ] ), 3 )
891 verify( main )
892 lib.cleanup( main, copyKarafLog=False, removeHostComponent=True )