blob: 32fb9abac9d8bd3e659be3ffb980a506b36eaeb9 [file] [log] [blame]
Jon Hall669bc862021-03-09 12:24:44 -08001class SReNBLeafSpinePortstateFailure:
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 eNB 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 = "eNB_Leaf_Spine_Portstate"
Jon Hallbe3a2ac2021-03-15 12:28:06 -070027 leafType = "eNB"
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 )
Jon Hall66ce22f2021-06-30 14:57:40 -070061 targets = {}
62 targets[device] = portsList
63 device1, port1 = main.funcs.linkDown( targets, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -080064 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -070065 srcComponent = getattr( main, src )
66 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
67 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
68 # Second Link Down
Jon Hall669bc862021-03-09 12:24:44 -080069 shortDesc = descPrefix + "-Failure2"
70 longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
Jon Hall66ce22f2021-06-30 14:57:40 -070071 device2, port2 = main.funcs.linkDown( targets, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -080072 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -070073 srcComponent = getattr( main, src )
74 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
75 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
76 # First Link Up
Jon Hall669bc862021-03-09 12:24:44 -080077 shortDesc = descPrefix + "-Recovery1"
78 longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port1 )
Jon Hall66ce22f2021-06-30 14:57:40 -070079 main.funcs.linkUp( device1, port1, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -080080 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -070081 srcComponent = getattr( main, src )
82 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
83 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
Jon Hall669bc862021-03-09 12:24:44 -080084 ## Second Link Up
85 shortDesc = descPrefix + "-Recovery2"
86 longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port2 )
Jon Hall66ce22f2021-06-30 14:57:40 -070087 main.funcs.linkUp( device2, port2, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -080088 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -070089 srcComponent = getattr( main, src )
90 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
91 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
Jon Hall669bc862021-03-09 12:24:44 -080092 ## Third Link Down
93 shortDesc = descPrefix + "-Failure3"
94 longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
Jon Hall66ce22f2021-06-30 14:57:40 -070095 device3, port3 = main.funcs.linkDown( targets, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -080096 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -070097 srcComponent = getattr( main, src )
98 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
99 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
Jon Hall669bc862021-03-09 12:24:44 -0800100 ## Forth Link Down
101 shortDesc = descPrefix + "-Failure4"
102 longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
Jon Hall66ce22f2021-06-30 14:57:40 -0700103 device4, port4 = main.funcs.linkDown( targets, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -0800104 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -0700105 srcComponent = getattr( main, src )
106 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
107 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
Jon Hall669bc862021-03-09 12:24:44 -0800108 ## Third Link Up
109 shortDesc = descPrefix + "-Recovery3"
Jon Halla7b27e62021-06-29 12:13:51 -0700110 longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port3 )
Jon Hall66ce22f2021-06-30 14:57:40 -0700111 main.funcs.linkUp( device3, port3, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -0800112 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -0700113 srcComponent = getattr( main, src )
114 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
115 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
Jon Hall669bc862021-03-09 12:24:44 -0800116 ## Forth Link Up
117 shortDesc = descPrefix + "-Recovery4"
Jon Halla7b27e62021-06-29 12:13:51 -0700118 longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port4 )
Jon Hall66ce22f2021-06-30 14:57:40 -0700119 main.funcs.linkUp( device4, port4, srcComponentList, dstComponent, shortDesc, longDesc )
Jon Hall669bc862021-03-09 12:24:44 -0800120 for src in srcNames:
Jon Hall66ce22f2021-06-30 14:57:40 -0700121 srcComponent = getattr( main, src )
122 dbHeaders.append( "%s-%s" % ( shortDesc, srcComponent.shortName ) )
123 dbHeaders.append( "%s-%s-to-%s" % ( shortDesc, srcComponent.shortName, dstComponent.shortName ) )
Jon Hall669bc862021-03-09 12:24:44 -0800124
125 main.log.warn( json.dumps( main.downtimeResults, indent=4, sort_keys=True ) )
126 main.funcs.cleanup( main, headerOrder=dbHeaders )