Merge "[SDFAB-96] Use UP4 APIs from different ONOS instances"
diff --git a/TestON/drivers/common/cli/networkdriver.py b/TestON/drivers/common/cli/networkdriver.py
index 2b70be6..3bc103c 100755
--- a/TestON/drivers/common/cli/networkdriver.py
+++ b/TestON/drivers/common/cli/networkdriver.py
@@ -539,7 +539,6 @@
dstVLANs = hostPair[1].interfaces[0].get( 'vlan' )
# Use scapy to send and recieve packets
hostPair[ 1 ].startScapy( ifaceName=dstIface )
- hostPair[ 1 ].addRoutes()
filters = []
if srcMac:
filters.append( "ether src host %s" % srcMac )
@@ -547,7 +546,6 @@
filters.append( "ip src host %s" % srcIPs[0] )
hostPair[ 1 ].startFilter( ifaceName=dstIface, pktFilter=" and ".join(filters) )
hostPair[ 0 ].startScapy( ifaceName=srcIface )
- hostPair[ 0 ].addRoutes()
hostPair[ 0 ].buildEther( src=srcMac, dst=dstMac )
if VLAN:
hostPair[ 0 ].buildVLAN( vlan=VLAN )
diff --git a/TestON/drivers/common/clidriver.py b/TestON/drivers/common/clidriver.py
index 7d306b9..0dc3787 100644
--- a/TestON/drivers/common/clidriver.py
+++ b/TestON/drivers/common/clidriver.py
@@ -57,7 +57,7 @@
ssh_newkey = 'Are you sure you want to continue connecting'
refused = "ssh: connect to host " + \
self.ip_address + " port 22: Connection refused"
- ssh_options = "-t -X -A -o ServerAliveInterval=120 -o TCPKeepAlive=yes"
+ ssh_options = "-t -X -A -o ServerAliveInterval=50 -o TCPKeepAlive=yes"
ssh_destination = self.user_name + "@" + self.ip_address
envVars = { "TERM": "vt100" }
# TODO: Add option to specify which shell/command to use
diff --git a/TestON/tests/USECASE/SegmentRouting/SRStaging/SRpairedLeaves/SRpairedLeaves.py b/TestON/tests/USECASE/SegmentRouting/SRStaging/SRpairedLeaves/SRpairedLeaves.py
index 668a7a6..a292173 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRStaging/SRpairedLeaves/SRpairedLeaves.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRStaging/SRpairedLeaves/SRpairedLeaves.py
@@ -639,8 +639,14 @@
fabricIntfIp = ipMatch.group(1)
main.log.debug( "Found %s as gateway ip for %s" % ( fabricIntfIp, srcComponent.shortName ) )
# FIXME: How to chose the correct one if there are multiple? look at subnets
- srcComponent.addRouteToHost( route, fabricIntfIp, srcIface, sudoRequired=True, purgeOnDisconnect=True )
+ addResult = srcComponent.addRouteToHost( route, fabricIntfIp, srcIface, sudoRequired=True, purgeOnDisconnect=True )
+ failMsg = "Failed to add static route to host"
+ utilities.assert_equals( expect=main.TRUE, actual=addResult,
+ onpass="Added static route to host",
+ onfail=failMsg )
main.log.debug( srcComponent.getRoutes() )
+ if not addResult:
+ main.skipCase( result="FAIL", msg=failMsg )
# Add route in ONOS
nextHopIface = nextHopComponent.interfaces[0].get( 'name' )
@@ -667,7 +673,10 @@
main.Cluster.active( 0 ).routeRemove( route, nextHopIp )
main.log.debug( main.Cluster.active( 0 ).routes() )
# Remove route on host
- srcComponent.deleteRoute( route, fabricIntfIp, srcIface, sudoRequired=True )
+ delResult = srcComponent.deleteRoute( route, fabricIntfIp, srcIface, sudoRequired=True )
+ utilities.assert_equals( expect=main.TRUE, actual=delResult,
+ onpass="Removed static route from host",
+ onfail="Failed to remove static route from host" )
main.log.debug( srcComponent.getRoutes() )
# Cleanup
main.log.warn( json.dumps( main.downtimeResults, indent=4, sort_keys=True ) )
diff --git a/TestON/tests/USECASE/SegmentRouting/SRStaging/dependencies/SRStagingTest.py b/TestON/tests/USECASE/SegmentRouting/SRStaging/dependencies/SRStagingTest.py
index f0f30a5..4213e0d 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRStaging/dependencies/SRStagingTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRStaging/dependencies/SRStagingTest.py
@@ -148,16 +148,23 @@
src.interfaces[0]['name'] ) )
try:
i = src.handle.expect( [ "password", src.prompt ] )
+ output = src.handle.before + src.handle.after
if i == 0:
src.handle.sendline( src.pwd )
i = src.handle.expect( [ "password", src.prompt ] )
assert i != 0, "Incorrect Password"
+ output = src.handle.before + src.handle.after
except Exception:
main.log.exception( "%s: Unexpected response from ping" % src.name )
src.handle.send( '\x03' ) # ctrl-c
src.handle.expect( src.prompt )
+ return main.FALSE
main.funcs.clearBuffer( src )
main.log.warn( "%s: %s" % ( src.name, str( src.handle.before ) ) )
+ if " 0% packet loss" in output:
+ return main.TRUE
+ else:
+ return main.FALSE
@staticmethod
def startIperf( main, src, dstIp, trafficSelector, trafficDuration ):
@@ -178,6 +185,8 @@
trafficDuration )
main.log.info( "Starting iperf between %s and %s" % ( src.shortName, dstIp ) )
sudoCheck = main.funcs.singlePingWithSudo( main, src, dstIp )
+ if not sudoCheck:
+ main.skipCase( result="FAIL", msg="Incorrect permissions for sudo" )
src.handle.sendline( "/usr/bin/iperf %s " % iperfArgs )
src.preDisconnect = src.exitFromProcess
@@ -249,8 +258,20 @@
dstIp = dst.interfaces[0]['ips'][0]
main.log.info( "Setting up flow between %s and %s%s" % ( src.shortName, dst.shortName, "" if not dstIp else " with dstIp %s" % dstIp ) )
# ping right before to make sure arp is cached and sudo is authenticated
- main.funcs.singlePingWithSudo( main, src, dst.interfaces[0]['ips'][0] )
- main.funcs.singlePingWithSudo( main, dst, src.interfaces[0]['ips'][0] )
+ sudoCheck1 = main.funcs.singlePingWithSudo( main, src, dst.interfaces[0]['ips'][0] )
+ checkDesc = "sudo ping from %s to %s" % ( src.shortName, dst.interfaces[0]['ips'][0] )
+ if not sudoCheck1:
+ main.skipCase( result="FAIL", msg="Incorrect permissions for %s" % checkDesc )
+ utilities.assert_equals( expect=main.TRUE, actual=sudoCheck1,
+ onpass="Successfully %s" % checkDesc ,
+ onfail="Failed to %s" % checkDesc )
+ sudoCheck2 = main.funcs.singlePingWithSudo( main, dst, src.interfaces[0]['ips'][0] )
+ checkDesc = "sudo ping from %s to %s" % ( dst.shortName, src.interfaces[0]['ips'][0] )
+ if not sudoCheck2:
+ main.skipCase( result="FAIL", msg="Incorrect permissions for %s" % checkDesc )
+ utilities.assert_equals( expect=main.TRUE, actual=sudoCheck1,
+ onpass="Successfully %s" % checkDesc ,
+ onfail="Failed to %s" % checkDesc )
# Start traffic
# TODO: ASSERTS
if pingOnly: