Add Stratum-bmv2 to Trellis SRBridging
TODO:
- Refactor so that we can use with other SR Tests
- Add creating docker image
Change-Id: Ib44418579e6f0eb4a862c36077459ed4dd389f8e
(cherry picked from commit 9bc3fb67167255b8962f4c1e4dc05d7fac10656b)
diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index e67e4e1..55a106f 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -62,6 +62,7 @@
self.bashPrompt = "\$"
self.scapyPrompt = ">>>"
self.graph = Graph()
+ self.sudoRequired = True
def connect( self, **connectargs ):
"""
@@ -75,7 +76,8 @@
for key in self.options:
if key == "home":
self.home = self.options[ 'home' ]
- break
+ elif key == "sudo_required":
+ self.sudoRequired = False if self.options[ key ] == "false" else True
if self.home is None or self.home == "":
self.home = "~/mininet"
@@ -143,7 +145,10 @@
# make sure old networks are cleaned up
main.log.info( self.name +
": Clearing any residual state or processes" )
- self.handle.sendline( "sudo mn -c" )
+ cmd = "mn -c"
+ if self.sudoRequired:
+ cmd = "sudo " + cmd
+ self.handle.sendline( cmd )
i = self.handle.expect( [ 'password\sfor\s',
'Cleanup\scomplete',
pexpect.EOF,
@@ -166,7 +171,10 @@
main.log.error( self.name + ": Something while cleaning " +
"Mininet took too long... " )
# Craft the string to start mininet
- cmdString = "sudo "
+ if self.sudoRequired:
+ cmdString = "sudo "
+ else:
+ cmdString = ""
if not mnCmd:
if topoFile is None or topoFile == '': # If no file is given
main.log.info( self.name + ": building fresh Mininet" )
@@ -185,7 +193,9 @@
main.log.info(
"Starting Mininet from topo file " +
topoFile )
- cmdString += "-E python " + topoFile + " "
+ if self.sudoRequired:
+ cmdString += "-E "
+ cmdString += "python " + topoFile + " "
if args is None:
args = ''
# TODO: allow use of args from .topo file?
@@ -2281,7 +2291,10 @@
prompt=self.prompt,
timeout=exitTimeout )
main.log.info( self.name + ": Stopped\nTime Took : " + str( time.time() - startTime ) )
- self.handle.sendline( "sudo mn -c" )
+ cmd = "mn -c"
+ if self.sudoRequired:
+ cmd = "sudo " + cmd
+ self.handle.sendline( cmd )
response = main.TRUE
elif i == 1:
@@ -2296,15 +2309,20 @@
self.handle.sendline( "" )
self.handle.expect( self.prompt )
- self.handle.sendline( "sudo killall -9 dhclient dhcpd zebra bgpd" )
+ cmd = "killall -9 dhclient dhcpd zebra bgpd"
+ if self.sudoRequired:
+ cmd = "sudo " + cmd
+ self.handle.sendline( cmd )
+ self.handle.expect( self.prompt )
if fileName:
self.handle.sendline( "" )
self.handle.expect( self.prompt )
- self.handle.sendline(
- "sudo kill -9 \`ps -ef | grep \"" +
- fileName +
- "\" | grep -v grep | awk '{print $2}'\`" )
+ cmd = "kill -9 \`ps -ef | grep \"" + fileName + "\" | grep -v grep | awk '{print $2}'\`"
+ if self.sudoRequired:
+ cmd = "sudo " + cmd
+ self.handle.sendline( cmd )
+ self.handle.expect( self.prompt )
except pexpect.TIMEOUT:
main.log.error( self.name + ": TIMEOUT exception found" )
main.log.error( self.name + ": " + self.handle.before )
@@ -2660,14 +2678,14 @@
try:
self.handle.sendline( "" )
self.handle.expect( "mininet>" )
+ if self.sudoRequired:
+ sudoStr = "sudo "
+ else:
+ sudoStr = ""
self.handle.sendline(
- "sh sudo tcpdump -n -i " +
- intf +
- " " +
- port +
- " -w " +
- filename.strip() +
- " &" )
+ "sh " + sudoStr + "tcpdump -n -i " +
+ intf + " " + port + " -w " +
+ filename.strip() + " &" )
self.handle.sendline( "" )
i = self.handle.expect( [ 'No\ssuch\device',
'listening\son',
@@ -2712,7 +2730,11 @@
"""
pkills tcpdump"""
try:
- self.handle.sendline( "sh sudo pkill tcpdump" )
+ if self.sudoRequired:
+ sudoStr = "sudo "
+ else:
+ sudoStr = ""
+ self.handle.sendline( "sh " + sudoStr + " pkill tcpdump" )
self.handle.expect( "mininet>" )
self.handle.sendline( "" )
self.handle.expect( "mininet>" )
@@ -2822,7 +2844,7 @@
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanAndExit()
- def getSwitches( self, verbose=False, updateTimeout=1000, excludeNodes=[] ):
+ def getSwitches( self, verbose=False, updateTimeout=1000, excludeNodes=[], switchRegex=[] ):
"""
Read switches from Mininet.
@@ -2841,7 +2863,10 @@
# <OVSSwitchNS s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None pid=22550>
# <OVSBridge s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=26830>
# <UserSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=14737>
- switchClasses = r"(OVSSwitch)|(OVSBridge)|(OVSSwitchNS)|(IVSSwitch)|(LinuxBridge)|(UserSwitch)"
+ if not switchRegex:
+ switchClasses = r"(OVSSwitch)|(OVSBridge)|(OVSSwitchNS)|(IVSSwitch)|(LinuxBridge)|(UserSwitch)"
+ else:
+ switchClasses = switchRegex
try:
swRE = r"<(?P<class>" + switchClasses + r")" +\
r"(?P<options>\{.*\})?\s" +\
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 78c4531..10a015d 100755
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -437,6 +437,7 @@
response = self.handle.before
if re.search( "Error", response ):
+ main.log.debug( response )
return main.FALSE
return main.TRUE
except pexpect.TIMEOUT: