Merge "Add Jenkins test-station requirements to install.sh"
diff --git a/TestON/drivers/common/cli/emulator/mininetscapyclidriver.py b/TestON/drivers/common/cli/emulator/mininetscapyclidriver.py
new file mode 100644
index 0000000..4874c02
--- /dev/null
+++ b/TestON/drivers/common/cli/emulator/mininetscapyclidriver.py
@@ -0,0 +1,257 @@
+#!/usr/bin/env python
+"""
+2015-2016
+Copyright 2016 Open Networking Foundation (ONF)
+
+Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+
+TestON is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+( at your option ) any later version.
+
+TestON is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with TestON. If not, see <http://www.gnu.org/licenses/>.
+
+MininetScapyCliDriver is for controlling scapy hosts running in Mininet
+
+TODO: Add Explanation on how to install scapy
+"""
+import pexpect
+import re
+import sys
+import types
+import os
+from drivers.common.cli.emulator.scapyclidriver import ScapyCliDriver
+
+
+class MininetScapyCliDriver( ScapyCliDriver ):
+ """
+ MininetScapyCliDriver is for controlling scapy hosts running in Mininet
+ """
+ def __init__( self ):
+ super( MininetScapyCliDriver, self ).__init__()
+ self.handle = self
+ self.name = None
+ self.home = None
+ self.wrapped = sys.modules[ __name__ ]
+ self.flag = 0
+ self.hostPrompt = "~#"
+ self.scapyPrompt = ">>>"
+
+ def connect( self, **connectargs ):
+ """
+ Here the main is the TestON instance after creating
+ all the log handles.
+ """
+ try:
+ for key in connectargs:
+ vars( self )[ key ] = connectargs[ key ]
+ self.home = self.options[ 'home' ] if 'home' in self.options.keys() else "~/mininet"
+ self.name = self.options[ 'name' ]
+ self.ifaceName = self.options[ 'ifaceName' ] if 'ifaceName' in self.options.keys() else self.name + "-eth0"
+
+ try:
+ if os.getenv( str( self.ip_address ) ) is not None:
+ self.ip_address = os.getenv( str( self.ip_address ) )
+ else:
+ main.log.info( self.name +
+ ": Trying to connect to " +
+ self.ip_address )
+
+ except KeyError:
+ main.log.info( "Invalid host name," +
+ " connecting to local host instead" )
+ self.ip_address = 'localhost'
+ except Exception as inst:
+ main.log.error( "Uncaught exception: " + str( inst ) )
+
+ self.handle = super(
+ ScapyCliDriver,
+ self ).connect(
+ user_name=self.user_name,
+ ip_address=self.ip_address,
+ port=None,
+ pwd=self.pwd )
+
+ if self.handle:
+ main.log.info( "Connection successful to the host " +
+ self.user_name +
+ "@" +
+ self.ip_address )
+ return main.TRUE
+ else:
+ main.log.error( "Connection failed to the host " +
+ self.user_name +
+ "@" +
+ self.ip_address )
+ main.log.error( "Failed to connect to the Mininet Host" )
+ return main.FALSE
+ except pexpect.EOF:
+ main.log.error( self.name + ": EOF exception found" )
+ main.log.error( self.name + ": " + self.handle.before )
+ main.cleanAndExit()
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanAndExit()
+
+ def disconnect( self ):
+ """
+ Called at the end of the test to stop the scapy component and
+ disconnect the handle.
+ """
+ self.handle.sendline( '' )
+ i = self.handle.expect( [ 'mininet>', pexpect.EOF, pexpect.TIMEOUT ],
+ timeout=2 )
+ response = main.TRUE
+ if i == 0:
+ response = self.stopNet()
+ elif i == 1:
+ return main.TRUE
+ # print "Disconnecting Mininet"
+ if self.handle:
+ self.handle.sendline( "exit" )
+ self.handle.expect( "exit" )
+ self.handle.expect( "(.*)" )
+ else:
+ main.log.error( "Connection failed to the host" )
+ return response
+
+ def stopNet( self, fileName="", timeout=5 ):
+ """
+ Stops mininet.
+ Returns main.TRUE if the mininet successfully stops and
+ main.FALSE if the pexpect handle does not exist.
+
+ Will cleanup and exit the test if scapy fails to stop
+ """
+ main.log.info( self.name + ": Stopping scapy..." )
+ response = ''
+ if self.handle:
+ try:
+ self.handle.sendline( "" )
+ i = self.handle.expect( [ '>>>',
+ self.prompt,
+ pexpect.EOF,
+ pexpect.TIMEOUT ],
+ timeout )
+ if i == 0:
+ main.log.info( "Exiting scapy..." )
+ response = self.execute(
+ cmd="exit",
+ prompt="(.*)",
+ timeout=120 )
+ main.log.info( self.name + ": Stopped" )
+ response = main.TRUE
+
+ if i == 1:
+ main.log.info( " Mininet trying to exit while not " +
+ "in the mininet prompt" )
+ elif i == 2:
+ main.log.error( "Something went wrong exiting mininet" )
+ elif i == 3: # timeout
+ main.log.error( "Something went wrong exiting mininet " +
+ "TIMEOUT" )
+
+ 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}'\`" )
+ except pexpect.EOF:
+ main.log.error( self.name + ": EOF exception found" )
+ main.log.error( self.name + ": " + self.handle.before )
+ main.cleanAndExit()
+ else:
+ main.log.error( self.name + ": Connection failed to the host" )
+ response = main.FALSE
+ return response
+
+ def createHostComponent( self, name ):
+ """
+ Creates a new mininet cli component with the same parameters as self.
+ This new component is intended to be used to login to the hosts created
+ by mininet.
+
+ Arguments:
+ name - The string of the name of this component. The new component
+ will be assigned to main.<name> .
+ In addition, main.<name>.name = str( name )
+ """
+ try:
+ # look to see if this component already exists
+ getattr( main, name )
+ except AttributeError:
+ # namespace is clear, creating component
+ main.componentDictionary[ name ] = main.componentDictionary[ self.name ].copy()
+ main.componentDictionary[ name ][ 'connect_order' ] = str( int( main.componentDictionary[ name ][ 'connect_order' ] ) + 1 )
+ main.componentInit( name )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanAndExit()
+ else:
+ # namespace is not clear!
+ main.log.error( name + " component already exists!" )
+ main.cleanAndExit()
+
+ def removeHostComponent( self, name ):
+ """
+ Remove host component
+ Arguments:
+ name - The string of the name of the component to delete.
+ """
+ try:
+ # Get host component
+ component = getattr( main, name )
+ except AttributeError:
+ main.log.error( "Component " + name + " does not exist." )
+ return main.FALSE
+ try:
+ # Disconnect from component
+ component.disconnect()
+ # Delete component
+ delattr( main, name )
+ # Delete component from ComponentDictionary
+ del( main.componentDictionary[ name ] )
+ return main.TRUE
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanAndExit()
+
+ def startHostCli( self, host=None ):
+ """
+ Use the mininet m utility to connect to the host's cli
+ """
+ # These are fields that can be used by scapy packets. Initialized to None
+ self.hostIp = None
+ self.hostMac = None
+ try:
+ if not host:
+ host = self.name
+ self.handle.sendline( self.home + "/util/m " + host )
+ self.handle.sendline( "cd" )
+ self.handle.expect( self.hostPrompt )
+ self.handle.sendline( "" )
+ self.handle.expect( self.hostPrompt )
+ return main.TRUE
+ except pexpect.TIMEOUT:
+ main.log.exception( self.name + ": Command timed out" )
+ return main.FALSE
+ except pexpect.EOF:
+ main.log.exception( self.name + ": connection closed." )
+ main.cleanAndExit()
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanAndExit()
+
+if __name__ != "__main__":
+ sys.modules[ __name__ ] = MininetScapyCliDriver()
diff --git a/TestON/drivers/common/cli/emulator/scapyclidriver.py b/TestON/drivers/common/cli/emulator/scapyclidriver.py
index 6ef63c4..418aa9e 100644
--- a/TestON/drivers/common/cli/emulator/scapyclidriver.py
+++ b/TestON/drivers/common/cli/emulator/scapyclidriver.py
@@ -45,8 +45,7 @@
self.wrapped = sys.modules[ __name__ ]
self.flag = 0
# TODO: Refactor driver to use these everywhere
- self.hostPrompt = "~#"
- self.bashPrompt = "\$"
+ self.hostPrompt = "\$"
self.scapyPrompt = ">>>"
def connect( self, **connectargs ):
@@ -56,15 +55,9 @@
try:
for key in connectargs:
vars( self )[ key ] = connectargs[ key ]
- self.home = "~/mininet"
+ self.home = self.options[ 'home' ] if 'home' in self.options.keys() else "~/"
self.name = self.options[ 'name' ]
- for key in self.options:
- if key == "home":
- self.home = self.options[ 'home' ]
- break
- if self.home is None or self.home == "":
- self.home = "~/mininet"
-
+ self.ifaceName = self.options[ 'ifaceName' ] if 'ifaceName' in self.options.keys() else self.name + "-eth0"
try:
if os.getenv( str( self.ip_address ) ) is not None:
self.ip_address = os.getenv( str( self.ip_address ) )
@@ -114,152 +107,19 @@
Called at the end of the test to stop the scapy component and
disconnect the handle.
"""
- self.handle.sendline( '' )
- i = self.handle.expect( [ 'mininet>', pexpect.EOF, pexpect.TIMEOUT ],
- timeout=2 )
response = main.TRUE
- if i == 0:
- response = self.stopNet()
- elif i == 1:
- return main.TRUE
- # print "Disconnecting Mininet"
- if self.handle:
- self.handle.sendline( "exit" )
- self.handle.expect( "exit" )
- self.handle.expect( "(.*)" )
- else:
- main.log.error( "Connection failed to the host" )
- return response
-
- def stopNet( self, fileName="", timeout=5 ):
- """
- Stops mininet.
- Returns main.TRUE if the mininet successfully stops and
- main.FALSE if the pexpect handle does not exist.
-
- Will cleanup and exit the test if scapy fails to stop
- """
- main.log.info( self.name + ": Stopping scapy..." )
- response = ''
- if self.handle:
- try:
- self.handle.sendline( "" )
- i = self.handle.expect( [ '>>>',
- self.prompt,
- pexpect.EOF,
- pexpect.TIMEOUT ],
- timeout )
- if i == 0:
- main.log.info( "Exiting scapy..." )
- response = self.execute(
- cmd="exit",
- prompt="(.*)",
- timeout=120 )
- main.log.info( self.name + ": Stopped" )
- response = main.TRUE
-
- if i == 1:
- main.log.info( " Mininet trying to exit while not " +
- "in the mininet prompt" )
- elif i == 2:
- main.log.error( "Something went wrong exiting mininet" )
- elif i == 3: # timeout
- main.log.error( "Something went wrong exiting mininet " +
- "TIMEOUT" )
-
- 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}'\`" )
- except pexpect.EOF:
- main.log.error( self.name + ": EOF exception found" )
- main.log.error( self.name + ": " + self.handle.before )
- main.cleanAndExit()
- else:
- main.log.error( self.name + ": Connection failed to the host" )
+ try:
+ if self.handle:
+ self.handle.sendline( "exit" )
+ self.handle.expect( "closed" )
+ except pexpect.EOF:
+ main.log.error( self.name + ": EOF exception found" )
+ main.log.error( self.name + ": " + self.handle.before )
+ except Exception:
+ main.log.exception( self.name + ": Connection failed to the host" )
response = main.FALSE
return response
- def createHostComponent( self, name ):
- """
- Creates a new mininet cli component with the same parameters as self.
- This new component is intended to be used to login to the hosts created
- by mininet.
-
- Arguments:
- name - The string of the name of this component. The new component
- will be assigned to main.<name> .
- In addition, main.<name>.name = str( name )
- """
- try:
- # look to see if this component already exists
- getattr( main, name )
- except AttributeError:
- # namespace is clear, creating component
- main.componentDictionary[ name ] = main.componentDictionary[ self.name ].copy()
- main.componentDictionary[ name ][ 'connect_order' ] = str( int( main.componentDictionary[ name ][ 'connect_order' ] ) + 1 )
- main.componentInit( name )
- except Exception:
- main.log.exception( self.name + ": Uncaught exception!" )
- main.cleanAndExit()
- else:
- # namespace is not clear!
- main.log.error( name + " component already exists!" )
- main.cleanAndExit()
-
- def removeHostComponent( self, name ):
- """
- Remove host component
- Arguments:
- name - The string of the name of the component to delete.
- """
- try:
- # Get host component
- component = getattr( main, name )
- except AttributeError:
- main.log.error( "Component " + name + " does not exist." )
- return main.FALSE
- try:
- # Disconnect from component
- component.disconnect()
- # Delete component
- delattr( main, name )
- # Delete component from ComponentDictionary
- del( main.componentDictionary[ name ] )
- return main.TRUE
- except Exception:
- main.log.exception( self.name + ": Uncaught exception!" )
- main.cleanAndExit()
-
- def startHostCli( self, host=None ):
- """
- Use the mininet m utility to connect to the host's cli
- """
- # These are fields that can be used by scapy packets. Initialized to None
- self.hostIp = None
- self.hostMac = None
- try:
- if not host:
- host = self.name
- self.handle.sendline( self.home + "/util/m " + host )
- self.handle.sendline( "cd" )
- self.handle.expect( self.hostPrompt )
- self.handle.sendline( "" )
- self.handle.expect( self.hostPrompt )
- return main.TRUE
- except pexpect.TIMEOUT:
- main.log.exception( self.name + ": Command timed out" )
- return main.FALSE
- except pexpect.EOF:
- main.log.exception( self.name + ": connection closed." )
- main.cleanAndExit()
- except Exception:
- main.log.exception( self.name + ": Uncaught exception!" )
- main.cleanAndExit()
-
def startScapy( self, mplsPath="" ):
"""
Start the Scapy cli
@@ -847,7 +707,7 @@
Options:
ifaceName - the name of the interface to listen on. If none is given,
- defaults to <host name>-eth0
+ defaults to self.ifaceName which is <host name>-eth0
pktFilter - A string in Berkeley Packet Filter (BPF) format which
specifies which packets to sniff
sniffCount - The number of matching packets to capture before returning
@@ -856,7 +716,7 @@
"""
try:
# TODO: add all params, or use kwargs
- ifaceName = str( ifaceName ) if ifaceName else self.name + "-eth0"
+ ifaceName = str( ifaceName ) if ifaceName else self.ifaceName
# Set interface
self.handle.sendline( ' conf.iface = "' + ifaceName + '"' )
self.handle.expect( self.scapyPrompt )
@@ -946,7 +806,7 @@
Save host's MAC address
"""
try:
- ifaceName = str( ifaceName ) if ifaceName else self.name + "-eth0"
+ ifaceName = str( ifaceName ) if ifaceName else self.ifaceName
cmd = 'get_if_hwaddr("' + str( ifaceName ) + '")'
self.handle.sendline( cmd )
self.handle.expect( self.scapyPrompt )
diff --git a/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.topo b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.topo
index c8b48a0..1dd294d 100755
--- a/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.topo
+++ b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.topo
@@ -25,7 +25,7 @@
<host>OCN</host>
<user>sdn</user>
<password>rocks</password>
- <type>ScapyCliDriver</type>
+ <type>MininetScapyCliDriver</type>
<connect_order>2</connect_order>
<COMPONENTS>
<prompt></prompt>
diff --git a/TestON/tests/FUNC/FUNCflow/FUNCflow.params b/TestON/tests/FUNC/FUNCflow/FUNCflow.params
index 6eda334..f40372c 100755
--- a/TestON/tests/FUNC/FUNCflow/FUNCflow.params
+++ b/TestON/tests/FUNC/FUNCflow/FUNCflow.params
@@ -6,6 +6,8 @@
# 1 - Variable initialization and optional pull and build ONOS package
# 2 - install ONOS
# 10 - Start mininet and verify topology
+ # 11 - Start mininet scapy hosts
+ # 12 - Stop mininet and scapy hosts
# 66 - Testing Scapy
# 100 - Check logs for Errors and Warnings
# 1000 - Add flows with MAC selector
@@ -21,7 +23,7 @@
# 2000 - Add flows with ICMPv6 selector
# 3000 - Delete flows
- <testcases>1,2,10,1000,3000,1100,3000,1200,3000,1300,3000,1400,3000,1500,3000,1600,3000,1700,3000,1800,3000,1900,3000,2000,100</testcases>
+ <testcases>1,2,10,11,1000,3000,1100,3000,1200,3000,1300,3000,1400,3000,1500,3000,1600,3000,1700,3000,1800,3000,1900,3000,2000,12,100</testcases>
<GRAPH>
<nodeCluster>VM</nodeCluster>
@@ -82,4 +84,8 @@
<delFlow>10</delFlow>
</SLEEP>
+ <SCAPY>
+ <HOSTNAMES>h1,h2,h3,h4,h5,h6</HOSTNAMES>
+ </SCAPY>
+
</PARAMS>
diff --git a/TestON/tests/FUNC/FUNCflow/FUNCflow.py b/TestON/tests/FUNC/FUNCflow/FUNCflow.py
index 7f2f01c..f161202 100644
--- a/TestON/tests/FUNC/FUNCflow/FUNCflow.py
+++ b/TestON/tests/FUNC/FUNCflow/FUNCflow.py
@@ -59,6 +59,8 @@
main.delFlowSleep = int( main.params[ 'SLEEP' ][ 'delFlow' ] )
main.debug = main.params[ 'DEBUG' ]
main.swDPID = main.params[ 'TEST' ][ 'swDPID' ]
+ main.scapyHostNames = main.params[ 'SCAPY' ][ 'HOSTNAMES' ].split( ',' )
+ main.scapyHosts = [] # List of scapy hosts for iterating
main.debug = True if "on" in main.debug else False
@@ -145,17 +147,77 @@
main.topoRelated.compareTopos( main.Mininet1 )
+ def CASE11( self, main ):
+ """
+ Start Scapy with Mininet
+ """
+ main.case( "Starting scapy with Mininet" )
+ main.step( "Creating Host component" )
+ scapyResult = main.TRUE
+ for hostName in main.scapyHostNames:
+ main.Scapy.createHostComponent( hostName )
+ main.scapyHosts.append( getattr( main, hostName ) )
+
+ main.step( "Start scapy components" )
+ for host in main.scapyHosts:
+ host.startHostCli()
+ host.startScapy()
+ host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
+
+ utilities.assert_equals( expect=main.TRUE,
+ actual=scapyResult,
+ onpass="Successfully created Scapy Components",
+ onfail="Failed to discover Scapy Components" )
+
+ def CASE12( self, main ):
+ """
+ Stop mininet and remove scapy host
+ """
+ try:
+ from tests.dependencies.utils import Utils
+ except ImportError:
+ main.log.error( "Utils not found exiting the test" )
+ main.cleanAndExit()
+ try:
+ main.Utils
+ except ( NameError, AttributeError ):
+ main.Utils = Utils()
+ main.log.report( "Stop Mininet and Scapy" )
+ main.case( "Stop Mininet and Scapy" )
+ main.caseExplanation = "Stopping the current mininet topology " +\
+ "to start up fresh"
+ main.step( "Stopping and Removing Scapy Host Components" )
+ scapyResult = main.TRUE
+ for host in main.scapyHosts:
+ scapyResult = scapyResult and host.stopScapy()
+ main.log.info( "Stopped Scapy Host: {0}".format( host.name ) )
+
+ for host in main.scapyHosts:
+ scapyResult = scapyResult and main.Scapy.removeHostComponent( host.name )
+ main.log.info( "Removed Scapy Host Component: {0}".format( host.name ) )
+
+ main.scapyHosts = []
+
+ utilities.assert_equals( expect=main.TRUE,
+ actual=scapyResult,
+ onpass="Successfully stopped scapy and removed host components",
+ onfail="Failed to stop mininet and scapy" )
+
+ mininetResult = main.Utils.mininetCleanup( main.Mininet1 )
+ # Exit if topology did not load properly
+ if not ( mininetResult and scapyResult ):
+ main.cleanAndExit()
+
def CASE66( self, main ):
"""
Testing scapy
"""
main.case( "Testing scapy" )
- main.step( "Creating Host1 component" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
main.log.debug( host.name )
@@ -210,12 +272,6 @@
onpass="Pass",
onfail="Fail" )
- main.step( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
def CASE1000( self, main ):
"""
Add flows with MAC selectors and verify the flows
@@ -229,15 +285,13 @@
"send a packet that only specifies the MAC src and dst."
main.step( "Add flows with MAC addresses as the only selectors" )
-
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
# send output on port2
@@ -288,12 +342,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -312,15 +360,13 @@
"send a packet that only specifies the IP src and dst."
main.step( "Add flows with IPv4 addresses as the only selectors" )
-
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
# send output on port2
@@ -371,12 +417,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -394,17 +434,13 @@
"send a packet that only specifies the IP src and dst."
main.step( "Add flows with IPv6 addresses as the only selectors" )
-
- main.log.info( "Creating host components" )
- ctrl = main.Cluster.active( 0 )
- main.Scapy.createHostComponent( "h5" )
- main.Scapy.createHostComponent( "h6" )
- hosts = [ main.h5, main.h6 ]
-
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf( IPv6=True )
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
# send output on port2
@@ -454,12 +490,6 @@
else:
main.h6.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h5" )
- main.Mininet1.removeHostComponent( "h6" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -477,16 +507,13 @@
"specified, then verify the flow is added in ONOS, and finally " +\
"broadcast a packet with the correct VLAN tag."
- # We do this here to utilize the hosts information
- main.log.info( "Creating host components" )
- ctrl = main.Cluster.active( 0 )
- main.Scapy.createHostComponent( "h3" )
- main.Scapy.createHostComponent( "h4" )
- hosts = [ main.h3, main.h4 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
main.step( "Add a flow with the VLAN tag as the only selector" )
@@ -539,12 +566,6 @@
else:
main.h4.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h3" )
- main.Mininet1.removeHostComponent( "h4" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -563,16 +584,15 @@
"send a packet via scapy that has a MPLS label."
main.step( "Add a flow with a MPLS selector" )
-
- main.log.info( "Creating host components" )
- ctrl = main.Cluster.active( 0 )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy( main.dependencyPath )
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
+
+ ctrl = main.Cluster.active( 0 )
# ports
egress = 2
@@ -655,12 +675,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -680,14 +694,13 @@
main.step( "Add a flow with a TCP selector" )
ctrl = main.Cluster.active( 0 )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
egress = 2
@@ -740,12 +753,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -765,14 +772,13 @@
main.step( "Add a flow with a UDP selector" )
ctrl = main.Cluster.active( 0 )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
egress = 2
@@ -825,12 +831,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -850,14 +850,13 @@
main.step( "Add a flow with a ICMPv4 selector" )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
egress = 2
@@ -907,12 +906,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -932,14 +925,13 @@
main.step( "Add a flow with a ICMPv6 selector" )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h5" )
- main.Scapy.createHostComponent( "h6" )
- hosts = [ main.h5, main.h6 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf( IPv6=True )
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
egress = 6
@@ -989,12 +981,6 @@
else:
main.h6.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h5" )
- main.Mininet1.removeHostComponent( "h6" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -1047,14 +1033,14 @@
main.step( "Add flows with ARP addresses as the only selectors" )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
+
ctrl = main.Cluster.active( 0 )
# Add a flow that connects host1 on port1 to host2 on port2
# send output on port2
@@ -1104,12 +1090,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
@@ -1129,14 +1109,13 @@
main.step( "Add a flow with a SCTP selector" )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
# Add a flow that connects host1 on port1 to host2 on port2
egress = 2
@@ -1186,12 +1165,6 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully sent a packet",
diff --git a/TestON/tests/FUNC/FUNCflow/FUNCflow.topo b/TestON/tests/FUNC/FUNCflow/FUNCflow.topo
index 41c97e3..6959073 100755
--- a/TestON/tests/FUNC/FUNCflow/FUNCflow.topo
+++ b/TestON/tests/FUNC/FUNCflow/FUNCflow.topo
@@ -36,7 +36,7 @@
<host>OCN</host>
<user>sdn</user>
<password>rocks</password>
- <type>ScapyCliDriver</type>
+ <type>MininetScapyCliDriver</type>
<connect_order>3</connect_order>
<COMPONENTS>
<prompt></prompt>
diff --git a/TestON/tests/FUNC/FUNCgroup/FUNCgroup.params b/TestON/tests/FUNC/FUNCgroup/FUNCgroup.params
index 90a5082..99a8e01 100644
--- a/TestON/tests/FUNC/FUNCgroup/FUNCgroup.params
+++ b/TestON/tests/FUNC/FUNCgroup/FUNCgroup.params
@@ -3,14 +3,15 @@
# CASE - Description
# 1 - Variable initialization and optional pull and build ONOS package
# 2 - install ONOS
- # 3 - Start mininet and verify topology
+ # 3 - Start mininet and scapy and verify topology
# 4 - Testing Scapy
# 5 - Testing GROUP with type "ALL"
# 6 - Deleting the Group and Flow
# 7 - Testing GROUP with type "INDIRECT"
# 8 - Deleting the group and flow
+ # 10 - Stop mininet and scapy
# 100 - Check logs for Errors and Warnings
- <testcases>1,2,3,5,6,7,6,100</testcases>
+ <testcases>1,2,3,5,6,7,6,10,100</testcases>
<GRAPH>
<nodeCluster>VM</nodeCluster>
@@ -68,4 +69,8 @@
<delGroup>10</delGroup>
</SLEEP>
+ <SCAPY>
+ <HOSTNAMES>h1,h2,h3,h4</HOSTNAMES>
+ </SCAPY>
+
</PARAMS>
diff --git a/TestON/tests/FUNC/FUNCgroup/FUNCgroup.py b/TestON/tests/FUNC/FUNCgroup/FUNCgroup.py
index 80ffe94..bbe759d 100644
--- a/TestON/tests/FUNC/FUNCgroup/FUNCgroup.py
+++ b/TestON/tests/FUNC/FUNCgroup/FUNCgroup.py
@@ -73,6 +73,8 @@
groupId = main.params[ 'TEST' ][ 'groupId' ]
priority = main.params[ 'TEST' ][ 'priority' ]
deviceId = main.params[ 'TEST' ][ 'swDPID' ]
+ main.scapyHostNames = main.params[ 'SCAPY' ][ 'HOSTNAMES' ].split( ',' )
+ main.scapyHosts = [] # List of scapy hosts for iterating
main.debug = True if "on" in main.debug else False
# -- INIT SECTION, ONLY RUNS ONCE -- #
@@ -153,17 +155,33 @@
main.topoRelated.compareTopos( main.Mininet1 )
+ main.step( "Create hosts and start scapy" )
+ scapyResult = main.TRUE
+ for hostName in main.scapyHostNames:
+ main.Scapy.createHostComponent( hostName )
+ main.scapyHosts.append( getattr( main, hostName ) )
+
+ main.step( "Start scapy components" )
+ for host in main.scapyHosts:
+ host.startHostCli()
+ host.startScapy()
+ host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
+
+ utilities.assert_equals( expect=main.TRUE,
+ actual=scapyResult,
+ onpass="Successfully created Scapy Components",
+ onfail="Failed to discover Scapy Components" )
+
def CASE4( self, main ):
"""
Testing scapy
"""
main.case( "Testing scapy" )
- main.step( "Creating Host1 component" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
main.log.debug( host.name )
@@ -218,12 +236,6 @@
onpass="Pass",
onfail="Fail" )
- main.step( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
def CASE5( self, main ):
"""
Adding Group of type "ALL" using Rest api
@@ -307,17 +319,14 @@
Sends a packet using scapy
"""
main.step( "Testing Group by sending packet using Scapy" )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
- main.Scapy.createHostComponent( "h3" )
- main.Scapy.createHostComponent( "h4" )
-
- hosts = [ main.h1, main.h2, main.h3, main.h4 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
+
main.log.info( "Constructing Packet" )
main.h1.buildEther( dst=main.h1.hostMac )
main.h1.buildIP( dst=main.h1.hostIp )
@@ -354,14 +363,6 @@
main.log.info( "Failure!!!Packet sent to port 1 is not received at port 2,3 and 4" )
stepResult = main.FALSE
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
- main.Mininet1.removeHostComponent( "h3" )
- main.Mininet1.removeHostComponent( "h4" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Packet sent to port 1 is received at port 2,3,4 ",
@@ -489,15 +490,14 @@
Sends a packet using scapy
"""
main.step( "Testing Group by sending packet using Scapy" )
- main.log.info( "Creating host components" )
- main.Scapy.createHostComponent( "h1" )
- main.Scapy.createHostComponent( "h2" )
-
- hosts = [ main.h1, main.h2 ]
- for host in hosts:
- host.startHostCli()
+ for host in main.scapyHosts:
+ host.stopScapy()
host.startScapy()
host.updateSelf()
+ main.log.debug( host.name )
+ main.log.debug( host.hostIp )
+ main.log.debug( host.hostMac )
+
main.log.info( "Constructing Packet" )
main.h1.buildEther( dst=main.h1.hostMac )
main.h1.buildIP( dst=main.h1.hostIp )
@@ -513,17 +513,50 @@
else:
main.h2.killFilter()
- main.log.info( "Clean up host components" )
- for host in hosts:
- host.stopScapy()
- main.Mininet1.removeHostComponent( "h1" )
- main.Mininet1.removeHostComponent( "h2" )
-
utilities.assert_equals( expect=main.TRUE,
actual=stepResultH2,
onpass="Packet sent to port 1 is received at port 2 successfully!!!",
onfail="Failure!!!Packet sent to port 1 is not received at port 2" )
+ def CASE10( self, main ):
+ """
+ Stop mininet and remove scapy host
+ """
+ try:
+ from tests.dependencies.utils import Utils
+ except ImportError:
+ main.log.error( "Utils not found exiting the test" )
+ main.cleanAndExit()
+ try:
+ main.Utils
+ except ( NameError, AttributeError ):
+ main.Utils = Utils()
+ main.log.report( "Stop Mininet and Scapy" )
+ main.case( "Stop Mininet and Scapy" )
+ main.caseExplanation = "Stopping the current mininet topology " +\
+ "to start up fresh"
+ main.step( "Stopping and Removing Scapy Host Components" )
+ scapyResult = main.TRUE
+ for host in main.scapyHosts:
+ scapyResult = scapyResult and host.stopScapy()
+ main.log.info( "Stopped Scapy Host: {0}".format( host.name ) )
+
+ for host in main.scapyHosts:
+ scapyResult = scapyResult and main.Scapy.removeHostComponent( host.name )
+ main.log.info( "Removed Scapy Host Component: {0}".format( host.name ) )
+
+ main.scapyHosts = []
+
+ utilities.assert_equals( expect=main.TRUE,
+ actual=scapyResult,
+ onpass="Successfully stopped scapy and removed host components",
+ onfail="Failed to stop mininet and scapy" )
+
+ mininetResult = main.Utils.mininetCleanup( main.Mininet1 )
+ # Exit if topology did not load properly
+ if not ( mininetResult and scapyResult ):
+ main.cleanAndExit()
+
def CASE100( self, main ):
"""
Report errors/warnings/exceptions
diff --git a/TestON/tests/FUNC/FUNCgroup/FUNCgroup.topo b/TestON/tests/FUNC/FUNCgroup/FUNCgroup.topo
index 41c97e3..6959073 100644
--- a/TestON/tests/FUNC/FUNCgroup/FUNCgroup.topo
+++ b/TestON/tests/FUNC/FUNCgroup/FUNCgroup.topo
@@ -36,7 +36,7 @@
<host>OCN</host>
<user>sdn</user>
<password>rocks</password>
- <type>ScapyCliDriver</type>
+ <type>MininetScapyCliDriver</type>
<connect_order>3</connect_order>
<COMPONENTS>
<prompt></prompt>
diff --git a/TestON/tests/FUNC/FUNCintent/FUNCintent.topo b/TestON/tests/FUNC/FUNCintent/FUNCintent.topo
index ff5eccd..b5e4f03 100755
--- a/TestON/tests/FUNC/FUNCintent/FUNCintent.topo
+++ b/TestON/tests/FUNC/FUNCintent/FUNCintent.topo
@@ -37,7 +37,7 @@
<host>OCN</host>
<user>sdn</user>
<password>rocks</password>
- <type>ScapyCliDriver</type>
+ <type>MininetScapyCliDriver</type>
<connect_order>3</connect_order>
<COMPONENTS>
<prompt></prompt>
diff --git a/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.topo b/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.topo
index 33bcf52..9f36491 100755
--- a/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.topo
+++ b/TestON/tests/FUNC/FUNCintentRest/FUNCintentRest.topo
@@ -37,7 +37,7 @@
<host>OCN</host>
<user>sdn</user>
<password>rocks</password>
- <type>ScapyCliDriver</type>
+ <type>MininetScapyCliDriver</type>
<connect_order>3</connect_order>
<COMPONENTS>
<prompt></prompt>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params
index 021be12..27a2bae 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params
@@ -2,7 +2,7 @@
<testcases>5,6,7,8,15,16,17,18,25,26,27,28,35,36,37,38,45,46,47,48,55,56,57,58,65,66,67,68,75,76,77,78</testcases>
<GRAPH>
- <nodeCluster>BM</nodeCluster>
+ <nodeCluster>VM</nodeCluster>
<builds>20</builds>
</GRAPH>
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/SRBridgingTest.py b/TestON/tests/USECASE/SegmentRouting/dependencies/SRBridgingTest.py
index f54de7c..1523811 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/SRBridgingTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/SRBridgingTest.py
@@ -50,19 +50,31 @@
( description, topo[ topology ][ 3 ], onosNodes, 's' if onosNodes > 1 else '' ) )
main.cfgName = 'CASE%01d%01d' % ( test_idx / 10, ( ( test_idx - 1 ) % 10 ) % 4 + 1 )
+ main.resultFileName = 'CASE%02d' % test_idx
main.Cluster.setRunningNode( onosNodes )
run.installOnos( main, skipPackage=skipPackage, cliSleep=5 )
- mininet_args = ' --spine=%d --leaf=%d' % ( topo[ topology ][ 0 ], topo[ topology ][ 1 ] )
- if topo[ topology ][ 2 ]:
- mininet_args += ' --dual-homed'
- if len( vlan ) > 0 :
- mininet_args += ' --vlan=%s' % ( ','.join( ['%d' % vlanId for vlanId in vlan ] ) )
+ if hasattr( main, 'Mininet1' ):
+ # Run the test with Mininet
+ mininet_args = ' --spine=%d --leaf=%d' % ( topo[ topology ][ 0 ], topo[ topology ][ 1 ] )
+ if topo[ topology ][ 2 ]:
+ mininet_args += ' --dual-homed'
+ if len( vlan ) > 0 :
+ mininet_args += ' --vlan=%s' % ( ','.join( ['%d' % vlanId for vlanId in vlan ] ) )
- run.startMininet( main, 'trellis_fabric.py', args=mininet_args )
+ run.startMininet( main, 'trellis_fabric.py', args=mininet_args )
+ else:
+ # Run the test with physical devices
+ # TODO: connect TestON to the physical network
+ pass
+
run.checkFlows( main, minFlowCount=topo[ topology ][ 4 ] * topo[ topology ][ 1 ], sleep=5 )
-
leaf_dpid = [ "of:%016d" % ( ls + 1 ) for ls in range( topo[ topology ][ 1 ] ) ]
for dpid in leaf_dpid:
run.checkFlowsByDpid( main, dpid, topo[ topology ][ 4 ], sleep=5 )
run.pingAll( main, 'CASE%02d' % test_idx )
- run.cleanup( main )
+
+ if hasattr( main, 'Mininet1' ):
+ run.cleanup( main )
+ else:
+ # TODO: disconnect TestON from the physical network
+ pass
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 2e0ae48..ba4e0d7 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -47,6 +47,8 @@
except ImportError:
main.log.error( "ONOSSetup not found. exiting the test" )
main.cleanAndExit()
+ from tests.dependencies.Network import Network
+ main.Network = Network()
main.testSetUp.envSetupDescription()
stepResult = main.FALSE
try:
@@ -63,13 +65,7 @@
main.maxNodes = int( main.params[ 'SCALE' ][ 'max' ] )
# main.ONOSport = main.params[ 'CTRL' ][ 'port' ]
main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
- # -- INIT SECTION, ONLY RUNS ONCE -- #
- copyResult1 = main.ONOSbench.scp( main.Mininet1,
- main.dependencyPath +
- main.topology,
- main.Mininet1.home,
- direction="to" )
stepResult = main.testSetUp.envSetup()
except Exception as e:
main.testSetUp.envSetupException( e )
@@ -78,16 +74,6 @@
try:
main.topologyLib1 = main.params[ 'DEPENDENCY' ][ 'lib1' ]
main.topologyLib2 = main.params[ 'DEPENDENCY' ][ 'lib2' ]
- copyResult2 = main.ONOSbench.scp(main.Mininet1,
- main.dependencyPath +
- main.topologyLib1,
- main.Mininet1.home,
- direction="to")
- copyResult3 = main.ONOSbench.scp(main.Mininet1,
- main.dependencyPath +
- main.topologyLib2,
- main.Mininet1.home,
- direction="to")
except:
pass
@@ -144,6 +130,24 @@
@staticmethod
def startMininet( main, topology, args="" ):
+ try:
+ copyResult1 = main.ONOSbench.scp( main.Mininet1,
+ main.dependencyPath +
+ main.topology,
+ main.Mininet1.home,
+ direction="to" )
+ copyResult2 = main.ONOSbench.scp( main.Mininet1,
+ main.dependencyPath +
+ main.topologyLib1,
+ main.Mininet1.home,
+ direction="to" )
+ copyResult3 = main.ONOSbench.scp( main.Mininet1,
+ main.dependencyPath +
+ main.topologyLib2,
+ main.Mininet1.home,
+ direction="to" )
+ except:
+ pass
main.step( "Starting Mininet Topology" )
arg = "--onos-ip=%s %s" % (",".join([ctrl.ipAddress for ctrl in main.Cluster.runningNodes]), args)
main.topology = topology
@@ -231,11 +235,11 @@
main.ONOSbench.dumpONOSCmd( main.Cluster.active( 0 ).ipAddress,
"flows",
main.logdir,
- "flowsBefore" + main.cfgName )
+ main.resultFileName + "_FlowsBefore" )
main.ONOSbench.dumpONOSCmd( main.Cluster.active( 0 ).ipAddress,
"groups",
main.logdir,
- "groupsBefore" + main.cfgName )
+ main.resultFileName + "_GroupsBefore" )
@staticmethod
def checkFlowsByDpid( main, dpid, minFlowCount, sleep=10 ):
@@ -264,7 +268,7 @@
except:
expect = main.FALSE
main.step( "Connectivity for %s %s" % ( str( hosts ), tag ) )
- pa = main.Mininet1.pingallHosts( hosts )
+ pa = main.Network.pingallHosts( hosts )
utilities.assert_equals( expect=expect, actual=pa,
onpass="IP connectivity successfully tested",
@@ -273,11 +277,11 @@
main.ONOSbench.dumpONOSCmd( main.Cluster.active( 0 ).ipAddress,
"flows",
main.logdir,
- "flowsOn" + tag )
+ tag + "_FlowsOn" )
main.ONOSbench.dumpONOSCmd( main.Cluster.active( 0 ).ipAddress,
"groups",
main.logdir,
- "groupsOn" + tag )
+ tag + "_GroupsOn" )
@staticmethod
def killLink( main, end1, end2, switches, links ):
@@ -288,8 +292,8 @@
"""
main.linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
main.step( "Kill link between %s and %s" % ( end1, end2 ) )
- LinkDown = main.Mininet1.link( END1=end1, END2=end2, OPTION="down" )
- LinkDown = main.Mininet1.link( END2=end1, END1=end2, OPTION="down" )
+ LinkDown = main.Network.link( END1=end1, END2=end2, OPTION="down" )
+ LinkDown = main.Network.link( END2=end1, END1=end2, OPTION="down" )
main.log.info(
"Waiting %s seconds for link down to be discovered" % main.linkSleep )
time.sleep( main.linkSleep )
@@ -320,8 +324,8 @@
count = 0
while True:
count += 1
- main.Mininet1.link( END1=end1, END2=end2, OPTION="up" )
- main.Mininet1.link( END2=end1, END1=end2, OPTION="up" )
+ main.Network.link( END1=end1, END2=end2, OPTION="up" )
+ main.Network.link( END2=end1, END1=end2, OPTION="up" )
main.log.info(
"Waiting %s seconds for link up to be discovered" % main.linkSleep )
time.sleep( main.linkSleep )
@@ -351,7 +355,7 @@
main.switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
main.step( "Kill " + switch )
main.log.info( "Stopping" + switch )
- main.Mininet1.switch( SW=switch, OPTION="stop" )
+ main.Network.switch( SW=switch, OPTION="stop" )
# todo make this repeatable
main.log.info( "Waiting %s seconds for switch down to be discovered" % (
main.switchSleep ) )
@@ -375,7 +379,7 @@
# todo make this repeatable
main.step( "Recovering " + switch )
main.log.info( "Starting" + switch )
- main.Mininet1.switch( SW=switch, OPTION="start" )
+ main.Network.switch( SW=switch, OPTION="start" )
main.log.info( "Waiting %s seconds for switch up to be discovered" % (
main.switchSleep ) )
time.sleep( main.switchSleep )
@@ -408,7 +412,7 @@
main.utils.mininetCleanup( main.Mininet1 )
- main.utils.copyKarafLog( main.cfgName )
+ main.utils.copyKarafLog( main.resultFileName, before=True )
for ctrl in main.Cluster.active():
main.ONOSbench.onosStop( ctrl.ipAddress )
diff --git a/TestON/tests/dependencies/utils.py b/TestON/tests/dependencies/utils.py
index e1c2027..6155201 100644
--- a/TestON/tests/dependencies/utils.py
+++ b/TestON/tests/dependencies/utils.py
@@ -54,7 +54,7 @@
onfail="Failed to stopped mininet" )
return topoResult
- def copyKarafLog( self, copyFileName="" ):
+ def copyKarafLog( self, copyFileName="", before=False ):
"""
Description:
copy the karaf log and verify it.
@@ -78,7 +78,10 @@
"/tmp/karaf.log",
direction="from" )
copyResult = copyResult and main.ONOSbench.cpLogsToDir( "/tmp/karaf.log", main.logdir,
- copyFileName=( "karaf.log." + ctrl.name +
+ copyFileName= ( copyFileName + "_karaf.log." +
+ ctrl.name + "_" )
+ if before else
+ ( "karaf.log." + ctrl.name +
"." + copyFileName ) )
if scpResult and copyResult:
stepResult = main.TRUE and stepResult