Look at port stats to choose port
- In TOST port failure tests, look at port stats to
determine which link is carrying the most traffic
so we can bring it down
- Add eNB leaf-spine link down case
Change-Id: Ia13f3d41e836deaf21dd93574a39ccd954dd488f
diff --git a/TestON/tests/USECASE/SegmentRouting/SRStaging/SRStaging.py b/TestON/tests/USECASE/SegmentRouting/SRStaging/SRStaging.py
index 124fd50..fd33a86 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRStaging/SRStaging.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRStaging/SRStaging.py
@@ -5,17 +5,48 @@
def CASE1( self, main ):
main.case("Testing connections")
main.persistentSetup = True
- def CASE7( self, main ):
- """
- Tests connectivity between two untagged hosts
- (Ports are configured as vlan-untagged)
- Sets up 3 ONOS instance
- Start 2x2 leaf-spine topology
- Pingall
+ def CASE2( self, main ):
+ """
+ Connect to Pod
+ Perform rolling ONOS failure/recovery test
+ Collect logs and analyze results
+ """
+ pass
+
+ def CASE3( self, main ):
+ """
+ Connect to Pod
+ Perform ONL reboot failure/recovery test
+ Collect logs and analyze results
+ """
+ pass
+
+ def CASE4( self, main ):
+ """
+ Connect to Pod
+ Perform Stratum agent failure/recovery test
+ Collect logs and analyze results
+ """
+ pass
+
+ def CASE5( self, main ):
+ """
+ Connect to Pod
+ Perform Switch Power Cycle failure/recovery test
+ Collect logs and analyze results
+ """
+ pass
+
+ def CASE6( self, main ):
+ """
+ Connect to Pod
+ Perform eNB Leaf-Spine Link, portstate failure/recovery test
+ Collect logs and analyze results
"""
try:
from tests.USECASE.SegmentRouting.SRStaging.dependencies.SRStagingTest import SRStagingTest
+ import json
except ImportError:
main.log.error( "SRStagingTest not found. Exiting the test" )
main.cleanAndExit()
@@ -23,16 +54,12 @@
main.funcs
except ( NameError, AttributeError ):
main.funcs = SRStagingTest()
- # Load kubeconfig
- # Setup ssh tunnel
- # connect to ONOS CLI
-
+ descPrefix = "eNB_Leaf_Spine_Portstate"
main.funcs.setupTest( main,
- test_idx=7,
topology='2x2staging',
onosNodes=3,
- description="Developing tests on the staging pod" )
+ description="%s tests on the staging pod" % descPrefix )
srcComponentNames = main.params[ 'PERF' ][ 'traffic_host' ].split()
srcComponentList = []
for name in srcComponentNames:
@@ -41,26 +68,23 @@
main.downtimeResults = {}
-
# TODO: MOVE TO CONFIG FILE
- device = "device:leaf2"
- port1 = "268"
- port2 = "284"
- port3 = "260"
- port4 = "276"
+ device = "device:leaf1"
+ portsList = [ 176, 180, 184, 188 ]
+ port1 = None
+ port2 = None
+ port3 = None
+ port4 = None
- descPrefix = "Upstream_Leaf_Spine_Portstate"
- # TODO: Move most of this logic into linkDown/linkUp
## First Link Down
shortDesc = descPrefix + "-Failure1"
- longDesc = "%s Failure: Bring down %s/%s" % ( descPrefix, device, port1 )
- main.funcs.linkDown( device, port1, srcComponentList, dstComponent, shortDesc, longDesc )
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port1 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
## Second Link Down
shortDesc = descPrefix + "-Failure2"
- longDesc = "%s Failure: Bring down %s/%s" % ( descPrefix, device, port2 )
- main.funcs.linkDown( device, port2, srcComponentList, dstComponent, shortDesc, longDesc )
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port2 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
## First Link Up
- # TODO Check these are set correctly
shortDesc = descPrefix + "-Recovery1"
longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port1 )
main.funcs.linkUp( device, port1, srcComponentList, dstComponent, shortDesc, longDesc )
@@ -70,12 +94,86 @@
main.funcs.linkUp( device, port2, srcComponentList, dstComponent, shortDesc, longDesc )
## Third Link Down
shortDesc = descPrefix + "-Failure3"
- longDesc = "%s Failure: Bring down %s/%s" % ( descPrefix, device, port3 )
- main.funcs.linkDown( device, port3, srcComponentList, dstComponent, shortDesc, longDesc )
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port3 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
## Forth Link Down
shortDesc = descPrefix + "-Failure4"
- longDesc = "%s Failure: Bring down %s/%s" % ( descPrefix, device, port4 )
- main.funcs.linkDown( device, port4, srcComponentList, dstComponent, shortDesc, longDesc )
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port4 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
+ ## Third Link Up
+ shortDesc = descPrefix + "-Recovery3"
+ longDesc = "%s Recovery: Bring upn %s/%s" % ( descPrefix, device, port3 )
+ main.funcs.linkUp( device, port3, srcComponentList, dstComponent, shortDesc, longDesc )
+ ## Forth Link Up
+ shortDesc = descPrefix + "-Recovery4"
+ longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port4 )
+ main.funcs.linkUp( device, port4, srcComponentList, dstComponent, shortDesc, longDesc )
+
+ main.log.warn( json.dumps( main.downtimeResults, indent=4, sort_keys=True ) )
+ main.funcs.cleanup( main )
+
+ def CASE7( self, main ):
+ """
+ Connect to Pod
+ Perform Upstream Leaf-Spine Link, portstate failure/recovery test
+ Collect logs and analyze results
+ """
+ try:
+ from tests.USECASE.SegmentRouting.SRStaging.dependencies.SRStagingTest import SRStagingTest
+ import json
+ except ImportError:
+ main.log.error( "SRStagingTest not found. Exiting the test" )
+ main.cleanAndExit()
+ try:
+ main.funcs
+ except ( NameError, AttributeError ):
+ main.funcs = SRStagingTest()
+
+ descPrefix = "Upstream_Leaf_Spine_Portstate"
+ main.funcs.setupTest( main,
+ topology='2x2staging',
+ onosNodes=3,
+ description="%s tests on the staging pod" % descPrefix )
+ srcComponentNames = main.params[ 'PERF' ][ 'traffic_host' ].split()
+ srcComponentList = []
+ for name in srcComponentNames:
+ srcComponentList.append( getattr( main, name ) )
+ dstComponent = getattr( main, main.params[ 'PERF' ][ 'pcap_host' ] )
+
+ main.downtimeResults = {}
+
+ # TODO: MOVE TO CONFIG FILE
+ device = "device:leaf2"
+ portsList = [260, 268, 276, 284 ]
+ port1 = None
+ port2 = None
+ port3 = None
+ port4 = None
+
+ ## First Link Down
+ shortDesc = descPrefix + "-Failure1"
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port1 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
+ ## Second Link Down
+ shortDesc = descPrefix + "-Failure2"
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port2 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
+ ## First Link Up
+ shortDesc = descPrefix + "-Recovery1"
+ longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port1 )
+ main.funcs.linkUp( device, port1, srcComponentList, dstComponent, shortDesc, longDesc )
+ ## Second Link Up
+ shortDesc = descPrefix + "-Recovery2"
+ longDesc = "%s Recovery: Bring up %s/%s" % ( descPrefix, device, port2 )
+ main.funcs.linkUp( device, port2, srcComponentList, dstComponent, shortDesc, longDesc )
+ ## Third Link Down
+ shortDesc = descPrefix + "-Failure3"
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port3 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
+ ## Forth Link Down
+ shortDesc = descPrefix + "-Failure4"
+ longDesc = "%s Failure: Bring down port with most traffic on %s" % ( descPrefix, device )
+ port4 = main.funcs.linkDown( device, portsList, srcComponentList, dstComponent, shortDesc, longDesc )
## Third Link Up
shortDesc = descPrefix + "-Recovery3"
longDesc = "%s Recovery: Bring upn %s/%s" % ( descPrefix, device, port3 )
@@ -86,6 +184,5 @@
main.funcs.linkUp( device, port4, srcComponentList, dstComponent, shortDesc, longDesc )
main.log.warn( main.downtimeResults )
- import json
main.log.warn( json.dumps( main.downtimeResults, indent=4, sort_keys=True ) )
main.funcs.cleanup( main )