blob: e2e5d26c9b38f30fff2ced7a9454b342046bfca7 [file] [log] [blame]
Jon Hall669bc862021-03-09 12:24:44 -08001class SRupstreamLeafSpinePortstateFailure:
2 def __init__( self ):
3 self.default = ''
4
5 def CASE1( self, main ):
6 main.case("Testing connections")
7 main.persistentSetup = True
8
9 def CASE2( self, main ):
10 """
11 Connect to Pod
12 Perform Upstream Leaf-Spine Link, portstate failure/recovery test
13 Collect logs and analyze results
14 """
15 try:
16 from tests.USECASE.SegmentRouting.SRStaging.dependencies.SRStagingTest import SRStagingTest
17 import json
18 except ImportError:
19 main.log.error( "SRStagingTest not found. Exiting the test" )
20 main.cleanAndExit()
21 try:
22 main.funcs
23 except ( NameError, AttributeError ):
24 main.funcs = SRStagingTest()
25
26 descPrefix = "Upstream_Leaf_Spine_Portstate"
Jon Hallbe3a2ac2021-03-15 12:28:06 -070027 leafType = "upstream"
Jon Hall669bc862021-03-09 12:24:44 -080028 main.funcs.setupTest( main,
29 topology='2x2staging',
30 onosNodes=3,
31 description="%s tests on the staging pod" % descPrefix )
32 srcComponentNames = main.params[ 'PERF' ][ 'traffic_host' ].split()
33 srcComponentList = []
34 for name in srcComponentNames:
35 srcComponentList.append( getattr( main, name ) )
36 dstComponent = getattr( main, main.params[ 'PERF' ][ 'pcap_host' ] )
37
38 main.downtimeResults = {}
39 dbHeaders = []
40 srcNames = [ src.name for src in srcComponentList ]
41 srcNames.sort()
Jon Hallbe3a2ac2021-03-15 12:28:06 -070042 deviceShortName = None
43 portsList = []
44 for shortName, values in main.params['PERF']['topo'].iteritems():
45 if leafType in values['note']:
46 deviceShortName = shortName
47 portsList = [ int( p ) for p in values['ports'].split() ]
48 break
49 if not deviceShortName:
50 main.skipCase( result="FAIL", msg="Don't know which switch for test" )
51
52 device = "device:" + deviceShortName
Jon Hall669bc862021-03-09 12:24:44 -080053 port1 = None
54 port2 = None
55 port3 = None
56 port4 = None
57
58 ## First Link Down
59 shortDesc = descPrefix + "-Failure1"
60 longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
61 port1 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
62 for src in srcNames:
63 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
64 for src in srcNames:
65 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
66 ## Second Link Down
67 shortDesc = descPrefix + "-Failure2"
68 longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
69 port2 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
70 for src in srcNames:
71 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
72 for src in srcNames:
73 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
74 ## First Link Up
75 shortDesc = descPrefix + "-Recovery1"
76 longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port1 )
77 main.funcs.linkUp( device, port1, srcComponentList, dstComponent, shortDesc, longDesc )
78 for src in srcNames:
79 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
80 for src in srcNames:
81 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
82 ## Second Link Up
83 shortDesc = descPrefix + "-Recovery2"
84 longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port2 )
85 main.funcs.linkUp( device, port2, srcComponentList, dstComponent, shortDesc, longDesc )
86 for src in srcNames:
87 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
88 for src in srcNames:
89 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
90 ## Third Link Down
91 shortDesc = descPrefix + "-Failure3"
92 longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
93 port3 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
94 for src in srcNames:
95 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
96 for src in srcNames:
97 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
98 ## Forth Link Down
99 shortDesc = descPrefix + "-Failure4"
100 longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
101 port4 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
102 for src in srcNames:
103 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
104 for src in srcNames:
105 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
106 ## Third Link Up
107 shortDesc = descPrefix + "-Recovery3"
108 longDesc = "%s Recovery: Bring upn %s/%s" % ( descPrefix, device, port3 )
109 main.funcs.linkUp( device, port3, srcComponentList, dstComponent, shortDesc, longDesc )
110 for src in srcNames:
111 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
112 for src in srcNames:
113 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
114 ## Forth Link Up
115 shortDesc = descPrefix + "-Recovery4"
116 longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port4 )
117 main.funcs.linkUp( device, port4, srcComponentList, dstComponent, shortDesc, longDesc )
118 for src in srcNames:
119 dbHeaders.append( "%s-%s" % ( shortDesc, src ) )
120 for src in srcNames:
121 dbHeaders.append( "%s-%s-%s" % ( shortDesc, src, dstComponent.name ) )
122
123 main.log.warn( json.dumps( main.downtimeResults, indent=4, sort_keys=True ) )
124 main.funcs.cleanup( main, headerOrder=dbHeaders )