Implementing IPv6 System Testing Using TESTON
Change-Id: Icc1b00739532f6da9b4b6770fe0fd12ac5d3bde9
diff --git a/TestON/tests/FUNCipv6Intent/Dependency/FUNCIpv6IntentFunction.py b/TestON/tests/FUNCipv6Intent/Dependency/FUNCIpv6IntentFunction.py
index 6930ef3..b6d706e 100644
--- a/TestON/tests/FUNCipv6Intent/Dependency/FUNCIpv6IntentFunction.py
+++ b/TestON/tests/FUNCipv6Intent/Dependency/FUNCIpv6IntentFunction.py
@@ -116,12 +116,6 @@
main.log.error( itemName + ": Key error Exception" )
return main.FALSE
- # Discover hosts using arping incase pingall discovery failed
- #main.log.info( itemName + ": Discover host using pingall" )
- #main.Mininet1.pingall( protocol='IPv6' )
- #host1 = main.CLIs[ 0 ].getHost( mac=h1Mac )
- #host2 = main.CLIs[ 0 ].getHost( mac=h2Mac )
-
# Check flows count in each node
checkFlowsCount( main )
@@ -146,19 +140,18 @@
checkFlowsState( main )
# Ping hosts
- #firstPingResult = ping6allHosts( main, hostNames )
firstPingResult = main.Mininet1.ping6pair(SRC=hostNames[0], TARGET=main.hostsData[ host2 ][ 'ipAddresses' ][ 0 ])
if not firstPingResult:
main.log.debug( "First ping failed, there must be" +
" something wrong with ONOS performance" )
# Ping hosts again...
- pingTemp = main.Mininet1.ping6pair(SRC=hostNames[0], TARGET=main.hostsData[ host2 ][ 'ipAddresses' ][ 0 ])
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Initial Pingall Passed\n'
+ main.assertReturnString += 'Initial Ping6all Passed\n'
else:
- main.assertReturnString += 'Initial Pingall Failed\n'
+ main.assertReturnString += 'Initial Ping6all Failed\n'
# Test rerouting if these variables exist
if sw1 and sw2 and expectedLink:
@@ -183,13 +176,13 @@
main.assertReturnString += 'Link Down Topology State Failed\n'
# Ping hosts
- pingTemp = pingallHosts( main, hostNames )
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Link Down Pingall Passed\n'
+ main.assertReturnString += 'Link Down Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Down Pingall Failed\n'
+ main.assertReturnString += 'Link Down Ping6all Failed\n'
# Check intent states
intentTemp = checkIntentState( main, intentsId )
@@ -228,13 +221,13 @@
main.assertReturnString += 'Link Up Topology State Failed\n'
# Ping hosts
- pingTemp = pingallHosts( main, hostNames )
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Link Up Pingall Passed\n'
+ main.assertReturnString += 'Link Up Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Up Pingall Failed\n'
+ main.assertReturnString += 'Link Up Ping6all Failed\n'
intentTemp = checkIntentState( main, intentsId )
intentResult = intentResult and intentTemp
@@ -405,12 +398,12 @@
checkFlowsState( main )
# Ping hosts
- pingTemp = main.Mininet1.ping6pair(SRC=host1, TARGET=main.hostsData[ host2 ][ 'ipAddresses' ][ 0 ])
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Initial Ping6 pair Passed\n'
+ main.assertReturnString += 'Initial Ping6all Passed\n'
else:
- main.assertReturnString += 'Initial Ping6 pair Failed\n'
+ main.assertReturnString += 'Initial Ping6all Failed\n'
# Test rerouting if these variables exist
if sw1 and sw2 and expectedLink:
@@ -438,9 +431,9 @@
pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Link Down Pingall Passed\n'
+ main.assertReturnString += 'Link Down Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Down Pingall Failed\n'
+ main.assertReturnString += 'Link Down Ping6all Failed\n'
# Check intent state
intentTemp = checkIntentState( main, intentsId )
@@ -478,13 +471,12 @@
main.assertReturnString += 'Link Up Topology State Failed\n'
# Ping hosts
- pingTemp = pingallHosts( main, hostNames )
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
-
if pingTemp:
- main.assertReturnString += 'Link Up Pingall Passed\n'
+ main.assertReturnString += 'Link Up Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Up Pingall Failed\n'
+ main.assertReturnString += 'Link Up Ping6all Failed\n'
intentTemp = checkIntentState( main, intentsId )
intentResult = intentResult and intentTemp
@@ -687,12 +679,12 @@
checkFlowsState( main )
# Run iperf to both host
- iperfTemp = main.Mininet1.iperftcp( host1,host2,timeout=10 )
+ iperfTemp = main.Mininet1.iperftcpipv6( host1,host2 )
iperfResult = iperfResult and iperfTemp
if iperfTemp:
- main.assertReturnString += 'Initial Iperf Passed\n'
+ main.assertReturnString += 'Initial Iperf6 Passed\n'
else:
- main.assertReturnString += 'Initial Iperf Failed\n'
+ main.assertReturnString += 'Initial Iperf6 Failed\n'
# Test rerouting if these variables exist
if sw1 and sw2 and expectedLink:
@@ -717,12 +709,12 @@
main.assertReturnString += 'Link Down Topology State Failed\n'
# Run iperf to both host
- iperfTemp = main.Mininet1.iperftcp( host1,host2,timeout=10 )
+ iperfTemp = main.Mininet1.iperftcpipv6( host1,host2 )
iperfResult = iperfResult and iperfTemp
if iperfTemp:
- main.assertReturnString += 'Link Down Iperf Passed\n'
+ main.assertReturnString += 'Link Down Iperf6 Passed\n'
else:
- main.assertReturnString += 'Link Down Iperf Failed\n'
+ main.assertReturnString += 'Link Down Iperf6 Failed\n'
# Check intent state
intentTemp = checkIntentState( main, intentsId )
@@ -740,7 +732,7 @@
# link up
linkUpResult = link( main, sw1, sw2, "up" )
- if linkUpTemp:
+ if linkUpResult:
main.assertReturnString += 'Link Up Passed\n'
else:
main.assertReturnString += 'Link Up Failed\n'
@@ -761,12 +753,12 @@
main.assertReturnString += 'Link Up Topology State Failed\n'
# Run iperf to both host
- iperfTemp = main.Mininet1.iperftcp( host1,host2,timeout=10 )
+ iperfTemp = main.Mininet1.iperftcpipv6( host1,host2,timeout=10 )
iperfResult = iperfResult and iperfTemp
if iperfTemp:
- main.assertReturnString += 'Link Up Iperf Passed\n'
+ main.assertReturnString += 'Link Up Iperf6 Passed\n'
else:
- main.assertReturnString += 'Link Up Iperf Failed\n'
+ main.assertReturnString += 'Link Up Iperf6 Failed\n'
# Check intent state
intentTemp = checkIntentState( main, intentsId )
@@ -796,12 +788,12 @@
def singleToMultiIntent( main,
name,
- hostNames,
+ hostNames="",
onosNode=0,
devices="",
- ports=None,
+ ports="",
ethType="",
- macs=None,
+ macs="",
bandwidth="",
lambdaAlloc=False,
ipProto="",
@@ -880,15 +872,11 @@
if hostNames and devices:
if len( hostNames ) != len( devices ):
main.log.debug( "hosts and devices does not have the same length" )
- #print "len hostNames = ", len( hostNames )
- #print "len devices = ", len( devices )
return main.FALSE
if ports:
if len( ports ) != len( devices ):
main.log.error( "Ports and devices does " +
"not have the same length" )
- #print "len devices = ", len( devices )
- #print "len ports = ", len( ports )
return main.FALSE
else:
main.log.info( "Device Ports are not specified" )
@@ -905,12 +893,7 @@
main.hostsData.get( host ).get( 'mac' )
ipDict[ main.hostsData.get( host ).get( 'location' ) ] = \
main.hostsData.get( host ).get( 'ipAddresses' )
- #print main.hostsData
-
- #print 'host names = ', hostNames
- #print 'devices = ', devices
- #print "macsDict = ", macsDict
-
+
pingResult = main.TRUE
intentResult = main.TRUE
removeIntentResult = main.TRUE
@@ -963,9 +946,7 @@
tcpSrc="",
tcpDst="" ) )
- # Wait some time for the flow to go through when using multi instance
- pingTemp = pingallHosts( main, hostNames )
-
+
# Check intents state
time.sleep( main.checkIntentSleep )
intentResult = checkIntentState( main, intentsId )
@@ -979,12 +960,18 @@
# Verify flows
checkFlowsState( main )
- pingTemp = pingallHosts( main, hostNames )
+ firstPingResult = main.Mininet1.ping6pair(SRC=hostNames[0], TARGET=main.hostsData[ hostNames[1] ][ 'ipAddresses' ][0])
+ if not firstPingResult:
+ main.log.debug( "First ping failed, there must be" +
+ " something wrong with ONOS performance" )
+
+ # Ping hosts again...
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Initial Pingall Passed\n'
+ main.assertReturnString += 'Initial Ping6all Passed\n'
else:
- main.assertReturnString += 'Initial Pingall Failed\n'
+ main.assertReturnString += 'Initial Ping6all Failed\n'
# Test rerouting if these variables exist
if sw1 and sw2 and expectedLink:
@@ -1009,12 +996,12 @@
main.assertReturnString += 'Link Down Topology State Failed\n'
# Ping hosts
- pingTemp = pingallHosts( main, hostNames )
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Link Down Pingall Passed\n'
+ main.assertReturnString += 'Link Down Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Down Pingall Failed\n'
+ main.assertReturnString += 'Link Down Ping6all Failed\n'
# Check intent state
intentTemp = checkIntentState( main, intentsId )
@@ -1052,12 +1039,12 @@
main.assertReturnString += 'Link Up Topology State Failed\n'
# Ping hosts
- pingTemp = pingallHosts( main, hostNames )
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Link Up Pingall Passed\n'
+ main.assertReturnString += 'Link Up Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Up Pingall Failed\n'
+ main.assertReturnString += 'Link Up Ping6all Failed\n'
# Check Intents
intentTemp = checkIntentState( main, intentsId )
@@ -1087,12 +1074,12 @@
def multiToSingleIntent( main,
name,
- hostNames,
+ hostNames="",
onosNode=0,
devices="",
- ports=None,
+ ports="",
ethType="",
- macs=None,
+ macs="",
bandwidth="",
lambdaAlloc=False,
ipProto="",
@@ -1170,15 +1157,11 @@
if hostNames and devices:
if len( hostNames ) != len( devices ):
main.log.debug( "hosts and devices does not have the same length" )
- #print "len hostNames = ", len( hostNames )
- #print "len devices = ", len( devices )
return main.FALSE
if ports:
if len( ports ) != len( devices ):
main.log.error( "Ports and devices does " +
"not have the same length" )
- #print "len devices = ", len( devices )
- #print "len ports = ", len( ports )
return main.FALSE
else:
main.log.info( "Device Ports are not specified" )
@@ -1194,11 +1177,6 @@
main.hostsData.get( host ).get( 'mac' )
ipDict[ main.hostsData.get( host ).get( 'location' ) ] = \
main.hostsData.get( host ).get( 'ipAddresses' )
- #print main.hostsData
-
- #print 'host names = ', hostNames
- #print 'devices = ', devices
- #print "macsDict = ", macsDict
pingResult = main.TRUE
intentResult = main.TRUE
@@ -1251,9 +1229,6 @@
ipDst="",
tcpSrc="",
tcpDst="" ) )
-
- pingTemp = pingallHosts( main, hostNames )
-
# Check intents state
time.sleep( main.checkIntentSleep )
intentResult = checkIntentState( main, intentsId )
@@ -1267,16 +1242,13 @@
# Verify flows
checkFlowsState( main )
- # Ping hosts
- pingTemp = pingallHosts( main, hostNames )
-
- # Ping hosts again...
- pingTemp = pingallHosts( main, hostNames )
+ # Ping hosts...
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Initial Pingall Passed\n'
+ main.assertReturnString += 'Initial Ping6all Passed\n'
else:
- main.assertReturnString += 'Initial Pingall Failed\n'
+ main.assertReturnString += 'Initial Ping6all Failed\n'
# Test rerouting if these variables exist
if sw1 and sw2 and expectedLink:
@@ -1301,12 +1273,12 @@
main.assertReturnString += 'Link Down Topology State Failed\n'
# Ping hosts
- pingTemp = pingallHosts( main, hostNames )
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Link Down Pingall Passed\n'
+ main.assertReturnString += 'Link Down Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Down Pingall Failed\n'
+ main.assertReturnString += 'Link Down Ping6all Failed\n'
# Check intent state
intentTemp = checkIntentState( main, intentsId )
@@ -1344,12 +1316,12 @@
main.assertReturnString += 'Link Up Topology State Failed\n'
# Ping hosts
- pingTemp = pingallHosts( main, hostNames )
+ pingTemp = ping6allHosts( main, hostNames )
pingResult = pingResult and pingTemp
if pingTemp:
- main.assertReturnString += 'Link Up Pingall Passed\n'
+ main.assertReturnString += 'Link Up Ping6all Passed\n'
else:
- main.assertReturnString += 'Link Up Pingall Failed\n'
+ main.assertReturnString += 'Link Up Ping6all Failed\n'
# Check Intents
intentTemp = checkIntentState( main, intentsId )
@@ -1392,8 +1364,8 @@
getDataResult = main.TRUE
main.log.info( "Activating reactive forwarding app " )
activateResult = main.CLIs[ 0 ].activateApp( "org.onosproject.fwd" )
- main.CLIs[ 0 ].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true")
- main.CLIs[ 0 ].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true")
+ main.CLIs[ 0 ].setCfg( "org.onosproject.provider.host.impl.HostLocationProvider", "ipv6NeighborDiscovery", "true")
+ main.CLIs[ 0 ].setCfg( "org.onosproject.proxyarp.ProxyArp", "ipv6NeighborDiscovery", "true")
main.CLIs[ 0 ].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true")
main.CLIs[ 0 ].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true")
time.sleep( main.fwdSleep )
@@ -1407,7 +1379,6 @@
pingResult = main.Mininet1.pingall( protocol="IPv6", timeout = 600 )
hostsJson = json.loads( main.CLIs[ 0 ].hosts() )
hosts = main.Mininet1.getHosts().keys()
- # TODO: Make better use of new getHosts function
for host in hosts:
main.hostsData[ host ] = {}
main.hostsData[ host ][ 'mac' ] = \
@@ -1430,8 +1401,11 @@
main.log.info( "Failed to use fwd app to discover hosts " )
getDataResult = main.FALSE
+ main.log.info( "Removing the automatically configured ipv6 link-local addresses in hostsData to avoid unnecessary ping with these addresses during initial ping test - link-local starts with 'fe' " )
+ for host in main.hostsData.keys():
+ if main.hostsData[ host ].get( 'ipAddresses' ) != None:
+ main.hostsData[ host ][ 'ipAddresses' ] = [ v for v in main.hostsData[ host ][ 'ipAddresses' ] if not v.startswith('fe') ]
print main.hostsData
-
return getDataResult
def checkTopology( main, expectedLink ):