COMPflow
Change-Id: I9e738b2bea1c3faf2b8e1775c3ce005a093c472b
diff --git a/TestON/drivers/common/api/controller/onosrestdriver.py b/TestON/drivers/common/api/controller/onosrestdriver.py
index 3ed6ab3..da3c994 100644
--- a/TestON/drivers/common/api/controller/onosrestdriver.py
+++ b/TestON/drivers/common/api/controller/onosrestdriver.py
@@ -1193,6 +1193,7 @@
The ip and port option are for the requests input's ip and port
of the ONOS node
"""
+
try:
flowJson = { "priority":100,
"isPermanent":"true",
@@ -1323,13 +1324,18 @@
try:
tempFlows = json.loads( self.flows( ip=ip, port=port ) )
returnValue = main.TRUE
+ numPending = 0
for flow in tempFlows:
if flow.get( 'state' ) != 'ADDED':
- main.log.info( self.name + ": flow Id: " +
- str( flow.get( 'groupId' ) ) +
+ '''
+ main.log.debug( self.name + ": flow Id: " +
+ str( flow.get( 'id' ) ) +
" | state:" +
str( flow.get( 'state' ) ) )
+ '''
returnValue = main.FALSE
+ numPending += 1
+ main.log.info("Number of non-ADDED flows are: " + str(numPending))
return returnValue
except ( AttributeError, TypeError ):
main.log.exception( self.name + ": Object not as expected" )
@@ -1339,6 +1345,407 @@
main.cleanup()
main.exit()
+ def addFlow( self,
+ deviceId,
+ appId=0,
+ ingressPort="",
+ egressPort="",
+ ethType="",
+ ethSrc="",
+ ethDst="",
+ vlan="",
+ ipProto="",
+ ipSrc=(),
+ ipDst=(),
+ tcpSrc="",
+ tcpDst="",
+ udpDst="",
+ udpSrc="",
+ mpls="",
+ ip="DEFAULT",
+ port="DEFAULT",
+ debug=False ):
+
+ """
+ Description:
+ Creates a single flow in the specified device
+ Required:
+ * deviceId: id of the device
+ Optional:
+ * ingressPort: port ingress device
+ * egressPort: port of egress device
+ * ethType: specify ethType
+ * ethSrc: specify ethSrc ( i.e. src mac addr )
+ * ethDst: specify ethDst ( i.e. dst mac addr )
+ * ipProto: specify ip protocol
+ * ipSrc: specify ip source address with mask eg. ip#/24
+ as a tuple (type, ip#)
+ * ipDst: specify ip destination address eg. ip#/24
+ as a tuple (type, ip#)
+ * tcpSrc: specify tcp source port
+ * tcpDst: specify tcp destination port
+ Returns:
+ Returns main.TRUE for successful requests; Returns main.FALSE
+ if error on requests;
+ Returns None for exceptions
+ NOTE:
+ The ip and port option are for the requests input's ip and port
+ of the ONOS node
+ """
+ try:
+ flowJson = { "priority":100,
+ "isPermanent":"true",
+ "timeout":0,
+ "deviceId":deviceId,
+ "treatment":{"instructions":[]},
+ "selector": {"criteria":[]}}
+ if appId:
+ flowJson[ "appId" ] = appId
+ if egressPort:
+ flowJson[ 'treatment' ][ 'instructions' ].append( {
+ "type":"OUTPUT",
+ "port":egressPort } )
+ if ingressPort:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"IN_PORT",
+ "port":ingressPort } )
+ if ethType:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"ETH_TYPE",
+ "ethType":ethType } )
+ if ethSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"ETH_SRC",
+ "mac":ethSrc } )
+ if ethDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"ETH_DST",
+ "mac":ethDst } )
+ if vlan:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"VLAN_VID",
+ "vlanId":vlan } )
+ if mpls:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"MPLS_LABEL",
+ "label":mpls } )
+ if ipSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":ipSrc[0],
+ "ip":ipSrc[1] } )
+ if ipDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":ipDst[0],
+ "ip":ipDst[1] } )
+ if tcpSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"TCP_SRC",
+ "tcpPort": tcpSrc } )
+ if tcpDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"TCP_DST",
+ "tcpPort": tcpDst } )
+ if udpSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"UDP_SRC",
+ "udpPort": udpSrc } )
+ if udpDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"UDP_DST",
+ "udpPort": udpDst } )
+ if ipProto:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"IP_PROTO",
+ "protocol": ipProto } )
+
+ return self.sendFlow( deviceId=deviceId, flowJson=flowJson, debug=debug )
+
+ except ( AttributeError, TypeError ):
+ main.log.exception( self.name + ": Object not as expected" )
+ return None
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
+
+ def removeFlow( self, deviceId, flowId,
+ ip="DEFAULT", port="DEFAULT" ):
+ """
+ Description:
+ Remove specific device flow
+ Required:
+ str deviceId - id of the device
+ str flowId - id of the flow
+ Return:
+ Returns main.TRUE if successfully deletes flows, otherwise
+ Returns main.FALSE, Returns None on error
+ """
+ try:
+ output = None
+ if ip == "DEFAULT":
+ main.log.warn( "No ip given, reverting to ip from topo file" )
+ ip = self.ip_address
+ if port == "DEFAULT":
+ main.log.warn( "No port given, reverting to port " +
+ "from topo file" )
+ port = self.port
+ # NOTE: REST url requires the intent id to be in decimal form
+ query = "/" + str( deviceId ) + "/" + str( int( flowId ) )
+ response = self.send( ip,
+ port,
+ method="DELETE",
+ url="/flows" + query )
+ if response:
+ if 200 <= response[ 0 ] <= 299:
+ return main.TRUE
+ else:
+ main.log.error( "Error with REST request, response was: " +
+ str( response ) )
+ return main.FALSE
+ except ( AttributeError, TypeError ):
+ main.log.exception( self.name + ": Object not as expected" )
+ return None
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
+
+ def createFlowBatch( self,
+ numSw = 1,
+ batchSizePerSw = 1,
+ batchIndex = 1,
+ deviceIdpreFix = "of:",
+ appId=0,
+ deviceID="",
+ ingressPort="",
+ egressPort="",
+ ethType="",
+ ethSrc="",
+ ethDst="",
+ vlan="",
+ ipProto="",
+ ipSrc=(),
+ ipDst=(),
+ tcpSrc="",
+ tcpDst="",
+ udpDst="",
+ udpSrc="",
+ mpls="",
+ ip="DEFAULT",
+ port="DEFAULT",
+ debug=False ):
+ """
+ Description:
+ Creates a single flow in the specified device
+ Required:
+ * deviceId: id of the device
+ Optional:
+ * ingressPort: port ingress device
+ * egressPort: port of egress device
+ * ethType: specify ethType
+ * ethSrc: specify ethSrc ( i.e. src mac addr )
+ * ethDst: specify ethDst ( i.e. dst mac addr )
+ * ipProto: specify ip protocol
+ * ipSrc: specify ip source address with mask eg. ip#/24
+ as a tuple (type, ip#)
+ * ipDst: specify ip destination address eg. ip#/24
+ as a tuple (type, ip#)
+ * tcpSrc: specify tcp source port
+ * tcpDst: specify tcp destination port
+ Returns:
+ Returns main.TRUE for successful requests; Returns main.FALSE
+ if error on requests;
+ Returns None for exceptions
+ NOTE:
+ The ip and port option are for the requests input's ip and port
+ of the ONOS node
+ """
+ from pprint import pprint
+
+ flowJsonList = []
+ flowJsonBatch = {"flows":flowJsonList}
+
+ for dev in range(1, numSw + 1):
+ for size in range(1, batchSizePerSw +1):
+
+ flowJson = { "priority":100,
+ "deviceId":"",
+ "isPermanent":"true",
+ "timeout":0,
+ "treatment":{"instructions":[]},
+ "selector": {"criteria":[]}}
+
+ deviceId = deviceIdpreFix + "{0:0{1}x}".format(dev,16)
+ #print deviceId
+ flowJson['deviceId'] = deviceId
+
+ # ethSrc starts with "0"; ethDst starts with "1"
+ # 3 Hex digit of device number; 4 digits of batch index number; 4 digits of batch size
+ ethS = "{0:0{1}x}".format(dev,4) + "{0:0{1}x}".format(batchIndex,4) + "{0:0{1}x}".format(size,4)
+ ethSrc = ':'.join(ethS[i:i+2] for i in range(0,len(ethS),2))
+ ethD = "1" + "{0:0{1}x}".format(dev,3) + "{0:0{1}x}".format(batchIndex,4) + "{0:0{1}x}".format(size,4)
+ ethDst = ':'.join(ethD[i:i+2] for i in range(0,len(ethD),2))
+
+ if appId:
+ flowJson[ "appId" ] = appId
+
+ if egressPort:
+ flowJson[ 'treatment' ][ 'instructions' ].append( {
+ "type":"OUTPUT",
+ "port":egressPort } )
+ if ingressPort:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"IN_PORT",
+ "port":ingressPort } )
+ if ethType:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"ETH_TYPE",
+ "ethType":ethType } )
+ if ethSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"ETH_SRC",
+ "mac":ethSrc } )
+ if ethDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"ETH_DST",
+ "mac":ethDst } )
+ if vlan:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"VLAN_VID",
+ "vlanId":vlan } )
+ if mpls:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"MPLS_LABEL",
+ "label":mpls } )
+ if ipSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":ipSrc[0],
+ "ip":ipSrc[1] } )
+ if ipDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":ipDst[0],
+ "ip":ipDst[1] } )
+ if tcpSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"TCP_SRC",
+ "tcpPort": tcpSrc } )
+ if tcpDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"TCP_DST",
+ "tcpPort": tcpDst } )
+ if udpSrc:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"UDP_SRC",
+ "udpPort": udpSrc } )
+ if udpDst:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"UDP_DST",
+ "udpPort": udpDst } )
+ if ipProto:
+ flowJson[ 'selector' ][ 'criteria' ].append( {
+ "type":"IP_PROTO",
+ "protocol": ipProto } )
+ #pprint(flowJson)
+ flowJsonList.append(flowJson)
+
+ flowJsonBatch['flows'] = flowJsonList
+ #pprint(flowJsonBatch)
+
+ return flowJsonBatch
+
+ def sendFlowBatch( self, batch={}, ip="DEFAULT", port="DEFAULT", debug=False ):
+ """
+ Description:
+ Sends a single flow to the specified device. This function exists
+ so you can bypass the addFLow driver and send your own custom flow.
+ Required:
+ * The flow in json
+ * the device id to add the flow to
+ Returns:
+ Returns main.TRUE for successful requests; Returns main.FALSE
+ if error on requests;
+ Returns None for exceptions
+ NOTE:
+ The ip and port option are for the requests input's ip and port
+ of the ONOS node
+ """
+ import time
+
+ try:
+ if debug: main.log.debug( "Adding flow: " + self.pprint( batch ) )
+ output = None
+ if ip == "DEFAULT":
+ main.log.warn( "No ip given, reverting to ip from topo file" )
+ ip = self.ip_address
+ if port == "DEFAULT":
+ main.log.warn( "No port given, reverting to port " +
+ "from topo file" )
+ port = self.port
+ url = "/flows/"
+ response = self.send( ip,
+ port,
+ method="POST",
+ url=url,
+ data=json.dumps( batch ) )
+ #main.log.info("Post response is: ", str(response[0]))
+ if response[0] == 200:
+ main.log.info( self.name + ": Successfully POST flow" )
+ return main.TRUE
+ else:
+ main.log.error( "Error with REST request, response was: " +
+ str( response ) )
+ return main.FALSE
+ except NotImplementedError as e:
+ raise e # Inform the caller
+ except ( AttributeError, TypeError ):
+ main.log.exception( self.name + ": Object not as expected" )
+ return None
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
+
+ def removeFlowBatch( self, batch={},
+ ip="DEFAULT", port="DEFAULT" ):
+ """
+ Description:
+ Remove a batch of flows
+ Required:
+ flow batch
+ Return:
+ Returns main.TRUE if successfully deletes flows, otherwise
+ Returns main.FALSE, Returns None on error
+ """
+ try:
+ output = None
+ if ip == "DEFAULT":
+ main.log.warn( "No ip given, reverting to ip from topo file" )
+ ip = self.ip_address
+ if port == "DEFAULT":
+ main.log.warn( "No port given, reverting to port " +
+ "from topo file" )
+ port = self.port
+ # NOTE: REST url requires the intent id to be in decimal form
+
+ response = self.send( ip,
+ port,
+ method="DELETE",
+ url="/flows/" + batch )
+ if response:
+ if 200 <= response[ 0 ] <= 299:
+ return main.TRUE
+ else:
+ main.log.error( "Error with REST request, response was: " +
+ str( response ) )
+ return main.FALSE
+ except ( AttributeError, TypeError ):
+ main.log.exception( self.name + ": Object not as expected" )
+ return None
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
+
def getNetCfg( self, ip="DEFAULT", port="DEFAULT",
subjectClass=None, subjectKey=None, configKey=None ):
"""
diff --git a/TestON/tests/CHOtest/CHOtest.params b/TestON/tests/CHOtest/CHOtest.params
deleted file mode 100644
index 2098689..0000000
--- a/TestON/tests/CHOtest/CHOtest.params
+++ /dev/null
@@ -1,116 +0,0 @@
-<PARAMS>
- # 1,20,3,47,147,[5,60,160,70,170,80,180,10,5,90,190,71,171,81,181,10]*10,200,21,3,48,148,[5,61,161,72,172,82,182,10,5,91,191,73,173,83,183,10]*10,200,22,3,49,149,[5,62,162,74,174,84,184,10,5,92,192,75,175,85,185,10]*10
- # 1. Starts ONOS cluster with 5 nodes
- # 20. Starts Att Topology
- # 21. Starts Chordal Topology
- # 22. Starts Spine-Leaf Topology
- # 3. Checks the consistency of ONOS and Mininet's topologies
- # 4X. Reactive forwarding | host discovery
- # 14X. IPv6 Reative forwarding | host discovery
- # 5. ONOS Topology verification
- # 6X. host intents
- # 16X. IPv6 ping across host intents
- # 7X. Bring random links down( Unique for each topology)
- # 17X. IPv6 ping after link down
- # 8X. Bring random links back up
- # 18X. IPv6 ping after link backs up
- # 9X. Point,Multi-single,Single-Multi Intents
- # 19X. IPv6 ping across Point,Multi-single,Single-Multi Intents
-
- <testcases>
- 1,21,3,48,148,[5,61,161,72,172,82,182,10,5,91,191,73,173,83,183,10]*20,200,20,3,47,147,[5,60,160,70,170,80,180,10,5,90,190,71,171,81,181,10]*20,200,22,3,49,149,[5,62,162,74,174,84,184,10,5,92,192,75,175,85,185,10]*20
- </testcases>
-
- <DEPENDENCY>
- <path>/tests/CHOtest/Dependencies/</path>
- <wrapper>CHOtestFunctions</wrapper>
- </DEPENDENCY>
-
- <GIT>
- #autoPull 'on' or 'off'
- <autoPull>off</autoPull>
- <branch>master</branch>
- </GIT>
-
- <CTRL>
- <numCtrl>3</numCtrl>
- <karafCliTimeout>7200000</karafCliTimeout>
- </CTRL>
-
- <TOPO1>
- <topo>topoAttIpv6.py</topo>
- <numSwitches>25</numSwitches>
- <numHosts>25</numHosts>
- <numLinks>112</numLinks>
- <numPaths>1</numPaths>
- </TOPO1>
-
- <TOPO2>
- <topo>topoChordalIpv6.py</topo>
- <numSwitches>25</numSwitches>
- <numHosts>25</numHosts>
- <numLinks>600</numLinks>
- <numPaths>1</numPaths>
- </TOPO2>
-
- <TOPO3>
- <topo>topoSpineIpv6.py</topo>
- <numSwitches>78</numSwitches>
- <numHosts>68</numHosts>
- <numLinks>284</numLinks>
- <numPaths>1</numPaths>
- </TOPO3>
-
- <HOSTS>
- <startMAC>00:00:00:00:00:01</startMAC>
- <endMAC>00:00:00:00:00:19</endMAC>
- </HOSTS>
-
- <ATTCORELINKS>
- <toggleLinks>1</toggleLinks>
-
- <linkS3a>s3</linkS3a>
- <linkS3b>s1,s4,s7,s10,s16,s17,s18,s21,s22</linkS3b>
- #######s1,s4,s7,s10,s16,s17,s18,s21,s22########
-
- <linkS14a>s14</linkS14a>
- <linkS14b>s6,s9,s10,s11,s12,s13,s16,s17,s23</linkS14b>
- ########s6,s9,s10,s11,s12,s13,s16,s17,s18,s23########
-
- <linkS18a>s18</linkS18a>
- <linkS18b>s14,s16,s17,s19,s20,s21,s22,s23</linkS18b>
- #######s3,s14,s16,s17,s19,s20,s21,s22,s23########
- </ATTCORELINKS>
-
- <SPINECORELINKS>
- <linkS9>s9</linkS9>
- <linkS9top>s1,s3,s5,s7</linkS9top>
- <linkS9bot>s11,s12</linkS9bot>
- <linkS10>s10</linkS10>
- <linkS10top>s2,s4,s6,s8</linkS10top>
- <linkS10bot>s13,s14</linkS10bot>
- </SPINECORELINKS>
-
- <timers>
- <LinkDiscovery>10</LinkDiscovery>
- <SwitchDiscovery>10</SwitchDiscovery>
- <IntentPurgeDelay>15</IntentPurgeDelay>
- <CheckIntentDelay>15</CheckIntentDelay>
- <topoCheckDelay>15</topoCheckDelay>
- <pingSleep>15</pingSleep>
- <pingTimeoutSmallTopo>180</pingTimeoutSmallTopo>
- <pingTimeoutLargeTopo>300</pingTimeoutLargeTopo>
- <remHostDelay>60</remHostDelay>
- <remDevDelay>60</remDevDelay>
- </timers>
-
- <TEST>
- <pauseTest>off</pauseTest>
- <email>off</email>
- <intentChecks>10</intentChecks>
- <linkChecks>3</linkChecks>
- <topoChecks>3</topoChecks>
- <numPings>3</numPings>
- </TEST>
-
-</PARAMS>
diff --git a/TestON/tests/CHOtest/CHOtest.py b/TestON/tests/CHOtest/CHOtest.py
deleted file mode 100644
index 5c9d673..0000000
--- a/TestON/tests/CHOtest/CHOtest.py
+++ /dev/null
@@ -1,3814 +0,0 @@
-import sys
-import os
-import re
-import time
-import json
-import itertools
-
-
-class CHOtest:
-
- def __init__( self ):
- self.default = ''
-
- def CASE1( self, main ):
- """
- Startup sequence:
- apply cell <name>
- git pull
- mvn clean install
- onos-package
- onos-verify-cell
- onos-uninstall
- onos-install
- onos-start-cli
- """
- import time
- import re
- import imp
-
- global intentState
- main.threadID = 0
- main.testOnDirectory = re.sub( "(/tests)$", "", main.testDir )
- main.dependencyPath = main.testOnDirectory + \
- main.params[ 'DEPENDENCY' ][ 'path' ]
- wrapperFile = main.params[ 'DEPENDENCY' ][ 'wrapper' ]
- main.numCtrls = main.params[ 'CTRL' ][ 'numCtrl' ]
- git_pull = main.params[ 'GIT' ][ 'autoPull' ]
- git_branch = main.params[ 'GIT' ][ 'branch' ]
- karafTimeout = main.params['CTRL']['karafCliTimeout']
- main.linkSleep = int( main.params['timers']['LinkDiscovery'] )
- main.checkIntentsDelay = int( main.params['timers']['CheckIntentDelay'] )
- main.pingSleep = int( main.params['timers']['pingSleep'] )
- main.topoCheckDelay = int( main.params['timers']['topoCheckDelay'] )
- main.pingTimeoutSmallTopo = int( main.params['timers']['pingTimeoutSmallTopo'] )
- main.pingTimeoutLargeTopo = int( main.params['timers']['pingTimeoutLargeTopo'] )
- main.remHostDelay = int( main.params['timers']['remHostDelay'] )
- main.remDevDelay = int( main.params['timers']['remDevDelay'] )
- main.failSwitch = main.params['TEST']['pauseTest']
- main.emailOnStop = main.params['TEST']['email']
- main.intentCheck = int( main.params['TEST']['intentChecks'] )
- main.linkCheck = int( main.params['TEST']['linkChecks'] )
- main.topoCheck = int( main.params['TEST']['topoChecks'] )
- main.numPings = int( main.params['TEST']['numPings'] )
- main.newTopo = ""
- main.CLIs = []
-
- main.failSwitch = True if main.failSwitch == "on" else False
- main.emailOnStop = True if main.emailOnStop == "on" else False
-
- for i in range( 1, int(main.numCtrls) + 1 ):
- main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
-
- main.CHOtestFunctions = imp.load_source( wrapperFile,
- main.dependencyPath +
- wrapperFile +
- ".py" )
-
- main.case( "Set up test environment" )
- main.log.report( "Set up test environment" )
- main.log.report( "_______________________" )
-
- main.step( "Apply Cell environment for ONOS" )
- if ( main.onoscell ):
- cellName = main.onoscell
- cell_result = main.ONOSbench.setCell( cellName )
- utilities.assert_equals( expect=main.TRUE, actual=cell_result,
- onpass="Test step PASS",
- onfail="Test step FAIL" )
- else:
- main.log.error( "Please provide onoscell option at TestON CLI to run CHO tests" )
- main.log.error( "Example: ~/TestON/bin/cli.py run OnosCHO onoscell <cellName>" )
- main.cleanup()
- main.exit()
-
- main.step( "Git checkout and pull " + git_branch )
- if git_pull == 'on':
- checkout_result = main.ONOSbench.gitCheckout( git_branch )
- pull_result = main.ONOSbench.gitPull()
- cp_result = ( checkout_result and pull_result )
- else:
- checkout_result = main.TRUE
- pull_result = main.TRUE
- main.log.info( "Skipped git checkout and pull" )
- cp_result = ( checkout_result and pull_result )
- utilities.assert_equals( expect=main.TRUE, actual=cp_result,
- onpass="Test step PASS",
- onfail="Test step FAIL" )
-
- main.step( "mvn clean & install" )
- if git_pull == 'on':
- mvn_result = main.ONOSbench.cleanInstall()
- utilities.assert_equals( expect=main.TRUE, actual=mvn_result,
- onpass="Test step PASS",
- onfail="Test step FAIL" )
- else:
- mvn_result = main.TRUE
- main.log.info("Skipped mvn clean install as git pull is disabled in params file")
-
- main.ONOSbench.getVersion( report=True )
-
- main.step( "Create ONOS package" )
- packageResult = main.ONOSbench.onosPackage()
- utilities.assert_equals( expect=main.TRUE, actual=packageResult,
- onpass="Test step PASS",
- onfail="Test step FAIL" )
-
- main.step( "Uninstall ONOS package on all Nodes" )
- uninstallResult = main.TRUE
- for i in range( int( main.numCtrls ) ):
- main.log.info( "Uninstalling package on ONOS Node IP: " + main.onosIPs[i] )
- u_result = main.ONOSbench.onosUninstall( main.onosIPs[i] )
- utilities.assert_equals( expect=main.TRUE, actual=u_result,
- onpass="Test step PASS",
- onfail="Test step FAIL" )
- uninstallResult = ( uninstallResult and u_result )
-
- main.step( "Install ONOS package on all Nodes" )
- installResult = main.TRUE
- for i in range( int( main.numCtrls ) ):
- main.log.info( "Installing package on ONOS Node IP: " + main.onosIPs[i] )
- i_result = main.ONOSbench.onosInstall( node=main.onosIPs[i] )
- utilities.assert_equals( expect=main.TRUE, actual=i_result,
- onpass="Test step PASS",
- onfail="Test step FAIL" )
- installResult = ( installResult and i_result )
-
- main.step( "Verify ONOS nodes UP status" )
- statusResult = main.TRUE
- for i in range( int( main.numCtrls ) ):
- main.log.info( "ONOS Node " + main.onosIPs[i] + " status:" )
- onos_status = main.ONOSbench.onosStatus( node=main.onosIPs[i] )
- utilities.assert_equals( expect=main.TRUE, actual=onos_status,
- onpass="Test step PASS",
- onfail="Test step FAIL" )
- statusResult = ( statusResult and onos_status )
-
- main.step( "Start ONOS CLI on all nodes" )
- cliResult = main.TRUE
- main.log.step(" Start ONOS cli using thread ")
- startCliResult = main.TRUE
- pool = []
- time1 = time.time()
- for i in range( int( main.numCtrls) ):
- t = main.Thread( target=main.CLIs[i].startOnosCli,
- threadID=main.threadID,
- name="startOnosCli",
- args=[ main.onosIPs[i], karafTimeout ] )
- pool.append(t)
- t.start()
- main.threadID = main.threadID + 1
- for t in pool:
- t.join()
- startCliResult = startCliResult and t.result
- time2 = time.time()
-
- if not startCliResult:
- main.log.info("ONOS CLI did not start up properly")
- main.cleanup()
- main.exit()
- else:
- main.log.info("Successful CLI startup")
- startCliResult = main.TRUE
-
- main.step( "Set IPv6 cfg parameters for Neighbor Discovery" )
- time.sleep(30)
- cfgResult1 = main.CLIs[0].setCfg( "org.onosproject.proxyarp.ProxyArp", "ipv6NeighborDiscovery", "true" )
- cfgResult2 = main.CLIs[0].setCfg( "org.onosproject.provider.host.impl.HostLocationProvider", "ipv6NeighborDiscovery", "true" )
- cfgResult = cfgResult1 and cfgResult2
- utilities.assert_equals( expect=main.TRUE, actual=cfgResult,
- onpass="ipv6NeighborDiscovery cfg is set to true",
- onfail="Failed to cfg set ipv6NeighborDiscovery" )
-
- case1Result = installResult and uninstallResult and statusResult and startCliResult and cfgResult
- main.log.info("Time for connecting to CLI: %2f seconds" %(time2-time1))
- utilities.assert_equals( expect=main.TRUE, actual=case1Result,
- onpass="Set up test environment PASS",
- onfail="Set up test environment FAIL" )
-
- def CASE20( self, main ):
- """
- This test script Loads a new Topology (Att) on CHO setup and balances all switches
- """
- import re
- import time
- import copy
-
- main.prefix = 0
- main.numMNswitches = int ( main.params[ 'TOPO1' ][ 'numSwitches' ] )
- main.numMNlinks = int ( main.params[ 'TOPO1' ][ 'numLinks' ] )
- main.numMNhosts = int ( main.params[ 'TOPO1' ][ 'numHosts' ] )
- main.pingTimeout = main.pingTimeoutSmallTopo
-
- main.log.report(
- "Load Att topology and Balance all Mininet switches across controllers" )
- main.log.report(
- "________________________________________________________________________" )
- main.case(
- "Assign and Balance all Mininet switches across controllers" )
-
- main.step( "Start Mininet with Att topology" )
- main.newTopo = main.params['TOPO1']['topo']
- mininetDir = main.Mininet1.home + "/custom/"
- topoPath = main.testDir + "/" + main.TEST + "/Dependencies/" + main.newTopo
- main.ONOSbench.secureCopy(main.Mininet1.user_name, main.Mininet1.ip_address, topoPath, mininetDir, direction="to")
- topoPath = mininetDir + main.newTopo
- startStatus = main.Mininet1.startNet(topoFile = topoPath)
-
- main.step( "Assign switches to controllers" )
- for i in range( 1, ( main.numMNswitches + 1 ) ): # 1 to ( num of switches +1 )
- main.Mininet1.assignSwController(
- sw="s" + str( i ),
- ip=main.onosIPs )
-
- switch_mastership = main.TRUE
- for i in range( 1, ( main.numMNswitches + 1 ) ):
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + main.onosIPs[0], response ):
- switch_mastership = switch_mastership and main.TRUE
- else:
- switch_mastership = main.FALSE
-
- if switch_mastership == main.TRUE:
- main.log.report( "Controller assignment successfull" )
- else:
- main.log.report( "Controller assignment failed" )
-
- time.sleep(30) # waiting here to make sure topology converges across all nodes
-
- main.step( "Balance devices across controllers" )
- balanceResult = main.ONOScli1.balanceMasters()
- # giving some breathing time for ONOS to complete re-balance
- time.sleep( 5 )
-
- topology_output = main.ONOScli1.topology()
- topology_result = main.ONOSbench.getTopology( topology_output )
- case2Result = ( switch_mastership and startStatus )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case2Result,
- onpass="Starting new Att topology test PASS",
- onfail="Starting new Att topology test FAIL" )
-
- def CASE21( self, main ):
- """
- This test script Loads a new Topology (Chordal) on CHO setup and balances all switches
- """
- import re
- import time
- import copy
-
- main.prefix = 1
- main.newTopo = main.params['TOPO2']['topo']
- main.numMNswitches = int ( main.params[ 'TOPO2' ][ 'numSwitches' ] )
- main.numMNlinks = int ( main.params[ 'TOPO2' ][ 'numLinks' ] )
- main.numMNhosts = int ( main.params[ 'TOPO2' ][ 'numHosts' ] )
- main.pingTimeout = main.pingTimeoutSmallTopo
-
- main.log.report(
- "Load Chordal topology and Balance all Mininet switches across controllers" )
- main.log.report(
- "________________________________________________________________________" )
- main.case(
- "Assign and Balance all Mininet switches across controllers" )
-
- main.step("Start Mininet with Chordal topology")
- mininetDir = main.Mininet1.home + "/custom/"
- topoPath = main.testDir + "/" + main.TEST + "/Dependencies/" + main.newTopo
- main.ONOSbench.secureCopy(main.Mininet1.user_name, main.Mininet1.ip_address, topoPath, mininetDir, direction="to")
- topoPath = mininetDir + main.newTopo
- startStatus = main.Mininet1.startNet(topoFile = topoPath)
-
- main.step( "Assign switches to controllers" )
-
- for i in range( 1, ( main.numMNswitches + 1 ) ): # 1 to ( num of switches +1 )
- main.Mininet1.assignSwController(
- sw="s" + str( i ),
- ip=main.onosIPs )
-
- switch_mastership = main.TRUE
- for i in range( 1, ( main.numMNswitches + 1 ) ):
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + main.onosIPs[0], response ):
- switch_mastership = switch_mastership and main.TRUE
- else:
- switch_mastership = main.FALSE
-
- if switch_mastership == main.TRUE:
- main.log.report( "Controller assignment successfull" )
- else:
- main.log.report( "Controller assignment failed" )
-
- main.step( "Balance devices across controllers" )
- balanceResult = main.ONOScli1.balanceMasters()
- # giving some breathing time for ONOS to complete re-balance
- time.sleep( 5 )
-
- caseResult = switch_mastership
- time.sleep(30)
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Starting new Chordal topology test PASS",
- onfail="Starting new Chordal topology test FAIL" )
-
- def CASE22( self, main ):
- """
- This test script Loads a new Topology (Spine) on CHO setup and balances all switches
- """
- import re
- import time
- import copy
-
- main.prefix = 2
- main.newTopo = main.params['TOPO3']['topo']
- main.numMNswitches = int ( main.params[ 'TOPO3' ][ 'numSwitches' ] )
- main.numMNlinks = int ( main.params[ 'TOPO3' ][ 'numLinks' ] )
- main.numMNhosts = int ( main.params[ 'TOPO3' ][ 'numHosts' ] )
- main.pingTimeout = main.pingTimeoutLargeTopo
-
- main.log.report(
- "Load Spine and Leaf topology and Balance all Mininet switches across controllers" )
- main.log.report(
- "________________________________________________________________________" )
- main.case( "Assign and Balance all Mininet switches across controllers" )
-
- main.step("Start Mininet with Spine topology")
- mininetDir = main.Mininet1.home + "/custom/"
- topoPath = main.testDir + "/" + main.TEST + "/Dependencies/" + main.newTopo
- main.ONOSbench.secureCopy(main.Mininet1.user_name, main.Mininet1.ip_address, topoPath, mininetDir, direction="to")
- topoPath = mininetDir + main.newTopo
- startStatus = main.Mininet1.startNet(topoFile = topoPath)
-
- for i in range( 1, ( main.numMNswitches + 1 ) ): # 1 to ( num of switches +1 )
- main.Mininet1.assignSwController(
- sw="s" + str( i ),
- ip=main.onosIPs )
-
- switch_mastership = main.TRUE
- for i in range( 1, ( main.numMNswitches + 1 ) ):
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + main.onosIPs[0], response ):
- switch_mastership = switch_mastership and main.TRUE
- else:
- switch_mastership = main.FALSE
-
- if switch_mastership == main.TRUE:
- main.log.report( "Controller assignment successfull" )
- else:
- main.log.report( "Controller assignment failed" )
- time.sleep( 5 )
-
- main.step( "Balance devices across controllers" )
- for i in range( int( main.numCtrls ) ):
- balanceResult = main.ONOScli1.balanceMasters()
- # giving some breathing time for ONOS to complete re-balance
- time.sleep( 3 )
-
- caseResult = switch_mastership
- time.sleep(60)
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Starting new Spine topology test PASS",
- onfail="Starting new Spine topology test FAIL" )
-
- def CASE3( self, main ):
- """
- This Test case will be extended to collect and store more data related
- ONOS state.
- """
- import re
- import copy
- main.deviceDPIDs = []
- main.hostMACs = []
- main.deviceLinks = []
- main.deviceActiveLinksCount = []
- main.devicePortsEnabledCount = []
-
- main.log.report(
- "Collect and Store topology details from ONOS before running any Tests" )
- main.log.report(
- "____________________________________________________________________" )
- main.case( "Collect and Store Topology Details from ONOS" )
- main.step( "Collect and store current number of switches and links" )
- topology_output = main.ONOScli1.topology()
- topology_result = main.ONOSbench.getTopology( topology_output )
- numOnosDevices = topology_result[ 'devices' ]
- numOnosLinks = topology_result[ 'links' ]
- topoResult = main.TRUE
-
- for check in range(main.topoCheck):
- if ( ( main.numMNswitches == int(numOnosDevices) ) and ( main.numMNlinks == int(numOnosLinks) ) ):
- main.step( "Store Device DPIDs" )
- for i in range( 1, (main.numMNswitches+1) ):
- main.deviceDPIDs.append( "of:00000000000000" + format( i, "02x" ) )
- print "Device DPIDs in Store: \n", str( main.deviceDPIDs )
-
- main.step( "Store Host MACs" )
- for i in range( 1, ( main.numMNhosts + 1 ) ):
- main.hostMACs.append( "00:00:00:00:00:" + format( i, '02x' ) + "/-1" )
- print "Host MACs in Store: \n", str( main.hostMACs )
- main.MACsDict = {}
- print "Creating dictionary of DPID and HostMacs"
- for i in range(len(main.hostMACs)):
- main.MACsDict[main.deviceDPIDs[i]] = main.hostMACs[i].split('/')[0]
- print main.MACsDict
- main.step( "Collect and store all Devices Links" )
- linksResult = main.ONOScli1.links( jsonFormat=False )
- ansi_escape = re.compile( r'\x1b[^m]*m' )
- linksResult = ansi_escape.sub( '', linksResult )
- linksResult = linksResult.replace( " links", "" ).replace( "\r\r", "" )
- linksResult = linksResult.splitlines()
- main.deviceLinks = copy.copy( linksResult )
- print "Device Links Stored: \n", str( main.deviceLinks )
- # this will be asserted to check with the params provided count of
- # links
- print "Length of Links Store", len( main.deviceLinks )
-
- main.step( "Collect and store each Device ports enabled Count" )
- time1 = time.time()
- for i in xrange(1,(main.numMNswitches + 1), int( main.numCtrls ) ):
- pool = []
- for cli in main.CLIs:
- if i >= main.numMNswitches + 1:
- break
- dpid = "of:00000000000000" + format( i, "02x" )
- t = main.Thread(target = cli.getDevicePortsEnabledCount,threadID = main.threadID, name = "getDevicePortsEnabledCount",args = [dpid])
- t.start()
- pool.append(t)
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- portResult = thread.result
- main.devicePortsEnabledCount.append( portResult )
- print "Device Enabled Port Counts Stored: \n", str( main.devicePortsEnabledCount )
- time2 = time.time()
- main.log.info("Time for counting enabled ports of the switches: %2f seconds" %(time2-time1))
-
- main.step( "Collect and store each Device active links Count" )
- time1 = time.time()
-
- for i in xrange( 1,( main.numMNswitches + 1 ), int( main.numCtrls) ):
- pool = []
- for cli in main.CLIs:
- if i >= main.numMNswitches + 1:
- break
- dpid = "of:00000000000000" + format( i, "02x" )
- t = main.Thread( target = cli.getDeviceLinksActiveCount,
- threadID = main.threadID,
- name = "getDevicePortsEnabledCount",
- args = [dpid])
- t.start()
- pool.append(t)
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- linkCountResult = thread.result
- main.deviceActiveLinksCount.append( linkCountResult )
- print "Device Active Links Count Stored: \n", str( main.deviceActiveLinksCount )
- time2 = time.time()
- main.log.info("Time for counting all enabled links of the switches: %2f seconds" %(time2-time1))
-
- # Exit out of the topo check loop
- break
-
- else:
- main.log.info("Devices (expected): %s, Links (expected): %s" %
- ( str( main.numMNswitches ), str( main.numMNlinks ) ) )
- main.log.info("Devices (actual): %s, Links (actual): %s" %
- ( numOnosDevices , numOnosLinks ) )
- main.log.info("Topology does not match, trying again...")
- topoResult = main.FALSE
- time.sleep(main.topoCheckDelay)
-
- # just returning TRUE for now as this one just collects data
- case3Result = topoResult
- utilities.assert_equals( expect=main.TRUE, actual=case3Result,
- onpass="Saving ONOS topology data test PASS",
- onfail="Saving ONOS topology data test FAIL" )
-
-
-
- def CASE200( self, main ):
-
- import time
- main.log.report( "Clean up ONOS" )
- main.log.case( "Stop topology and remove hosts and devices" )
-
- main.step( "Stop Topology" )
- stopStatus = main.Mininet1.stopNet()
- utilities.assert_equals( expect=main.TRUE, actual=stopStatus,
- onpass="Stopped mininet",
- onfail="Failed to stop mininet" )
-
-
- main.log.info( "Constructing host id list" )
- hosts = []
- for i in range( main.numMNhosts ):
- hosts.append( "h" + str(i+1) )
-
- main.step( "Getting host ids" )
- hostList = main.CLIs[0].getHostsId( hosts )
- hostIdResult = True if hostList else False
- utilities.assert_equals( expect=True, actual=hostIdResult,
- onpass="Successfully obtained the host ids.",
- onfail="Failed to obtain the host ids" )
-
- main.step( "Removing hosts" )
- hostResult = main.CLIs[0].removeHost( hostList )
- utilities.assert_equals( expect=main.TRUE, actual=hostResult,
- onpass="Successfully removed hosts",
- onfail="Failed remove hosts" )
-
- time.sleep( main.remHostDelay )
-
- main.log.info( "Constructing device uri list" )
- deviceList = []
- for i in range( main.numMNswitches ):
- deviceList.append( "of:00000000000000" + format( i+1, "02x" ) )
-
- main.step( "Removing devices" )
- deviceResult = main.CLIs[0].removeDevice( deviceList )
- utilities.assert_equals( expect=main.TRUE, actual=deviceResult,
- onpass="Successfully removed devices",
- onfail="Failed remove devices" )
-
- time.sleep( main.remDevDelay )
-
- main.log.info( "Summary\n{}".format( main.CLIs[0].summary( jsonFormat=False ) ) )
-
-
- def CASE40( self, main ):
- """
- Verify Reactive forwarding
- """
- import time
- main.log.report( "Verify Reactive forwarding" )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding, verify pingall, and disable reactive forwarding" )
-
- main.step( "Enable Reactive forwarding" )
- appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully install fwd app",
- onfail="Failed to install fwd app" )
-
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else:
- break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- utilities.assert_equals( expect=main.TRUE, actual=pingResult,
- onpass="Reactive Mode IPv4 Pingall test PASS",
- onfail="Reactive Mode IPv4 Pingall test FAIL" )
-
- if not pingResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- main.step( "Disable Reactive forwarding" )
- appResult = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully deactivated fwd app",
- onfail="Failed to deactivate fwd app" )
-
- def CASE41( self, main ):
- """
- Verify Reactive forwarding (Chordal Topology)
- """
- import re
- import copy
- import time
- main.log.report( "Verify Reactive forwarding (Chordal Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding and Verify ping all" )
- main.step( "Enable Reactive forwarding" )
- installResult = main.TRUE
- # Activate fwd app
- appResults = main.CLIs[0].activateApp( "org.onosproject.fwd" )
-
- appCheck = main.TRUE
- pool = []
- for cli in main.CLIs:
- t = main.Thread( target=cli.appToIDCheck,
- name="appToIDCheck-" + str( i ),
- args=[] )
- pool.append( t )
- t.start()
- for t in pool:
- t.join()
- appCheck = appCheck and t.result
- utilities.assert_equals( expect=main.TRUE, actual=appCheck,
- onpass="App Ids seem to be correct",
- onfail="Something is wrong with app Ids" )
- if appCheck != main.TRUE:
- main.log.warn( main.CLIs[0].apps() )
- main.log.warn( main.CLIs[0].appIDs() )
-
- time.sleep( 10 )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- if not pingResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- if pingResult == main.TRUE:
- main.log.report( "IPv4 Pingall Test in Reactive mode successful" )
- else:
- main.log.report( "IPv4 Pingall Test in Reactive mode failed" )
-
- caseResult = appCheck and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Reactive Mode IPv4 Pingall test PASS",
- onfail="Reactive Mode IPv4 Pingall test FAIL" )
-
- def CASE42( self, main ):
- """
- Verify Reactive forwarding (Spine Topology)
- """
- import re
- import copy
- import time
- main.log.report( "Verify Reactive forwarding (Spine Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding and Verify ping all" )
- main.step( "Enable Reactive forwarding" )
- installResult = main.TRUE
- # Activate fwd app
- appResults = main.CLIs[0].activateApp( "org.onosproject.fwd" )
-
- appCheck = main.TRUE
- pool = []
- for cli in main.CLIs:
- t = main.Thread( target=cli.appToIDCheck,
- name="appToIDCheck-" + str( i ),
- args=[] )
- pool.append( t )
- t.start()
- for t in pool:
- t.join()
- appCheck = appCheck and t.result
- utilities.assert_equals( expect=main.TRUE, actual=appCheck,
- onpass="App Ids seem to be correct",
- onfail="Something is wrong with app Ids" )
- if appCheck != main.TRUE:
- main.log.warn( main.CLIs[0].apps() )
- main.log.warn( main.CLIs[0].appIDs() )
-
- time.sleep( 10 )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- if not pingResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- if pingResult == main.TRUE:
- main.log.report( "IPv4 Pingall Test in Reactive mode successful" )
- else:
- main.log.report( "IPv4 Pingall Test in Reactive mode failed" )
-
- caseResult = appCheck and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Reactive Mode IPv4 Pingall test PASS",
- onfail="Reactive Mode IPv4 Pingall test FAIL" )
-
- def CASE47( self, main ):
- """
- Verify reactive forwarding in ATT topology, use a different ping method than CASE40
- """
- import time
- main.log.report( "Verify Reactive forwarding (ATT Topology) " )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding, verify ping, and disable reactive forwarding" )
-
- main.step( "Enable Reactive forwarding" )
- appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully install fwd app",
- onfail="Failed to install fwd app" )
-
- numHosts = int( main.params['TOPO1']['numHosts'] )
-
- for i in range(numHosts):
- src = "h1"
- dest = "h" + str(i+1)
- main.Mininet1.handle.sendline( src + " ping " + dest + " -c 3 -i 1 -W 1" )
- main.Mininet1.handle.expect( "mininet>" )
- main.log.info( main.Mininet1.handle.before )
-
- hosts = main.CLIs[0].hosts( jsonFormat=False )
-
- main.log.info( hosts )
-
- main.step( "Disable Reactive forwarding" )
- appResult = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully deactivated fwd app",
- onfail="Failed to deactivate fwd app" )
-
- def CASE48( self, main ):
- """
- Verify reactive forwarding in Chordal topology, use a different ping method than CASE41
- """
- import time
- main.log.report( "Verify Reactive forwarding (Chordal Topology) " )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding, verify ping, and disable reactive forwarding" )
-
- main.step( "Enable Reactive forwarding" )
- appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully install fwd app",
- onfail="Failed to install fwd app" )
-
- numHosts = int( main.params['TOPO2']['numHosts'] )
-
- for i in range(numHosts):
- src = "h1"
- dest = "h" + str(i+1)
- main.Mininet1.handle.sendline( src + " ping " + dest + " -c 3 -i 1 -W 1" )
- main.Mininet1.handle.expect( "mininet>" )
- main.log.info( main.Mininet1.handle.before )
-
- hosts = main.CLIs[0].hosts( jsonFormat=False )
-
- main.log.info( hosts )
-
- main.step( "Disable Reactive forwarding" )
- appResult = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully deactivated fwd app",
- onfail="Failed to deactivate fwd app" )
-
- def CASE49( self, main ):
- """
- Verify reactive forwarding in Spine-leaf topology, use a different ping method than CASE42
- """
- import time
- main.log.report( "Verify Reactive forwarding (Spine-leaf Topology) " )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding, verify ping, and disable reactive forwarding" )
-
- main.step( "Enable Reactive forwarding" )
- appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully install fwd app",
- onfail="Failed to install fwd app" )
-
- numHosts = int( main.params['TOPO3']['numHosts'] )
-
- for i in range(11, numHosts+10):
- src = "h11"
- dest = "h" + str(i+1)
- main.Mininet1.handle.sendline( src + " ping " + dest + " -c 3 -i 1 -W 1" )
- main.Mininet1.handle.expect( "mininet>" )
- main.log.info( main.Mininet1.handle.before )
-
- hosts = main.CLIs[0].hosts( jsonFormat=False )
-
- main.log.info( hosts )
-
- main.step( "Disable Reactive forwarding" )
- appResult = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully deactivated fwd app",
- onfail="Failed to deactivate fwd app" )
-
- def CASE140( self, main ):
- """
- Verify IPv6 Reactive forwarding (Att Topology)
- """
- import re
- import copy
- import time
- main.log.report( "Verify IPv6 Reactive forwarding (Att Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable IPv6 Reactive forwarding and Verify ping all" )
- hostList = [ ('h'+ str(x + 1)) for x in range (main.numMNhosts) ]
-
- main.step( "Set IPv6 cfg parameters for Reactive forwarding" )
- cfgResult1 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true" )
- cfgResult2 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true" )
- cfgResult = cfgResult1 and cfgResult2
- utilities.assert_equals( expect=main.TRUE, actual=cfgResult,
- onpass="Reactive mode ipv6Fowarding cfg is set to true",
- onfail="Failed to cfg set Reactive mode ipv6Fowarding" )
-
- main.step( "Verify IPv6 Pingall" )
- pingResult = main.FALSE
- time1 = time.time()
- pingResult = main.Mininet1.pingall( protocol="IPv6", timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Trying again..")
- pingResult = main.Mininet1.pingall( protocol="IPv6", timeout=main.pingTimeout )
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for IPv6 Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- if pingResult == main.TRUE:
- main.log.report( "IPv6 Pingall Test in Reactive mode successful" )
- else:
- main.log.report( "IPv6 Pingall Test in Reactive mode failed" )
-
-
- caseResult = appCheck and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Reactive Mode IPv6 Pingall test PASS",
- onfail="Reactive Mode IPv6 Pingall test FAIL" )
-
- def CASE141( self, main ):
- """
- Verify IPv6 Reactive forwarding (Chordal Topology)
- """
- import re
- import copy
- import time
- main.log.report( "Verify IPv6 Reactive forwarding (Chordal Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable IPv6 Reactive forwarding and Verify ping all" )
- hostList = [ ('h'+ str(x + 1)) for x in range (main.numMNhosts) ]
-
- main.step( "Set IPv6 cfg parameters for Reactive forwarding" )
- cfgResult1 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true" )
- cfgResult2 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true" )
- cfgResult = cfgResult1 and cfgResult2
- utilities.assert_equals( expect=main.TRUE, actual=cfgResult,
- onpass="Reactive mode ipv6Fowarding cfg is set to true",
- onfail="Failed to cfg set Reactive mode ipv6Fowarding" )
-
- main.step( "Verify IPv6 Pingall" )
- pingResult = main.FALSE
- time1 = time.time()
- pingResult = main.Mininet1.pingall( protocol="IPv6", timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Trying again..")
- pingResult = main.Mininet1.pingall( protocol="IPv6", timeout=main.pingTimeout )
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for IPv6 Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- if pingResult == main.TRUE:
- main.log.report( "IPv6 Pingall Test in Reactive mode successful" )
- else:
- main.log.report( "IPv6 Pingall Test in Reactive mode failed" )
-
- main.step( "Disable Reactive forwarding" )
-
- main.log.info( "Uninstall reactive forwarding app" )
- appCheck = main.TRUE
- appResults = appResults and main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- pool = []
- for cli in main.CLIs:
- t = main.Thread( target=cli.appToIDCheck,
- name="appToIDCheck-" + str( i ),
- args=[] )
- pool.append( t )
- t.start()
-
- for t in pool:
- t.join()
- appCheck = appCheck and t.result
- utilities.assert_equals( expect=main.TRUE, actual=appCheck,
- onpass="App Ids seem to be correct",
- onfail="Something is wrong with app Ids" )
- if appCheck != main.TRUE:
- main.log.warn( main.CLIs[0].apps() )
- main.log.warn( main.CLIs[0].appIDs() )
-
- # Waiting for reative flows to be cleared.
- time.sleep( 30 )
- caseResult = appCheck and cfgResult and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Reactive Mode IPv6 Pingall test PASS",
- onfail="Reactive Mode IPv6 Pingall test FAIL" )
-
- def CASE142( self, main ):
- """
- Verify IPv6 Reactive forwarding (Spine Topology)
- """
- import re
- import copy
- import time
- main.log.report( "Verify IPv6 Reactive forwarding (Spine Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable IPv6 Reactive forwarding and Verify ping all" )
- # Spine topology do not have hosts h1-h10
- hostList = [ ('h'+ str(x + 11)) for x in range (main.numMNhosts) ]
- main.step( "Set IPv6 cfg parameters for Reactive forwarding" )
- cfgResult1 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true" )
- cfgResult2 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true" )
- cfgResult = cfgResult1 and cfgResult2
- utilities.assert_equals( expect=main.TRUE, actual=cfgResult,
- onpass="Reactive mode ipv6Fowarding cfg is set to true",
- onfail="Failed to cfg set Reactive mode ipv6Fowarding" )
-
- main.step( "Verify IPv6 Pingall" )
- pingResult = main.FALSE
- time1 = time.time()
- pingResult = main.Mininet1.pingall( protocol="IPv6", timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Trying again...")
- pingResult = main.Mininet1.pingall( protocol="IPv6", timeout=main.pingTimeout )
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for IPv6 Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- if pingResult == main.TRUE:
- main.log.report( "IPv6 Pingall Test in Reactive mode successful" )
- else:
- main.log.report( "IPv6 Pingall Test in Reactive mode failed" )
-
- main.step( "Disable Reactive forwarding" )
-
- main.log.info( "Uninstall reactive forwarding app" )
- appCheck = main.TRUE
- appResults = appResults and main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- pool = []
- for cli in main.CLIs:
- t = main.Thread( target=cli.appToIDCheck,
- name="appToIDCheck-" + str( i ),
- args=[] )
- pool.append( t )
- t.start()
-
- for t in pool:
- t.join()
- appCheck = appCheck and t.result
- utilities.assert_equals( expect=main.TRUE, actual=appCheck,
- onpass="App Ids seem to be correct",
- onfail="Something is wrong with app Ids" )
- if appCheck != main.TRUE:
- main.log.warn( main.CLIs[0].apps() )
- main.log.warn( main.CLIs[0].appIDs() )
-
- # Waiting for reative flows to be cleared.
- time.sleep( 30 )
- caseResult = appCheck and cfgResult and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Reactive Mode IPv6 Pingall test PASS",
- onfail="Reactive Mode IPv6 Pingall test FAIL" )
-
- def CASE147( self, main ):
- """
- Verify IPv6 reactive forwarding in ATT topology, use a different ping method than CASE140
- """
- import time
- main.log.report( "Verify IPv6 Reactive forwarding (ATT Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding, verify ping6, and disable reactive forwarding" )
-
- main.step( "Enable IPv4 Reactive forwarding" )
- appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully install fwd app",
- onfail="Failed to install fwd app" )
-
- main.step( "Set IPv6 cfg parameters for Reactive forwarding" )
- cfgResult1 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true" )
- cfgResult2 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true" )
- cfgResult = cfgResult1 and cfgResult2
- utilities.assert_equals( expect=main.TRUE, actual=cfgResult,
- onpass="Reactive mode ipv6Fowarding cfg is set to true",
- onfail="Failed to cfg set Reactive mode ipv6Fowarding" )
-
- main.step( "Discover hosts using ping" )
- numHosts = int( main.params['TOPO1']['numHosts'] )
- for i in range(numHosts):
- src = "h1"
- dest = "1000::" + str(i+1)
- main.Mininet1.handle.sendline( src + " ping6 " + dest + " -c 3 -i 1 -W 1")
- main.Mininet1.handle.expect( "mininet>" )
- main.log.info( main.Mininet1.handle.before )
- hosts = main.CLIs[0].hosts( jsonFormat=False )
- main.log.info( hosts )
-
- main.step( "Disable Reactive forwarding" )
- main.log.info( "Uninstall IPv6 reactive forwarding app" )
- appCheck = main.TRUE
- appResults = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- pool = []
- for cli in main.CLIs:
- t = main.Thread( target=cli.appToIDCheck,
- name="appToIDCheck-" + str( i ),
- args=[] )
- pool.append( t )
- t.start()
-
- for t in pool:
- t.join()
- appCheck = appCheck and t.result
- utilities.assert_equals( expect=main.TRUE, actual=appCheck,
- onpass="App Ids seem to be correct",
- onfail="Something is wrong with app Ids" )
-
- if appCheck != main.TRUE:
- main.log.warn( main.CLIs[0].apps() )
- main.log.warn( main.CLIs[0].appIDs() )
-
- # Waiting for reative flows to be cleared.
- time.sleep( 30 )
-
- main.step( "Disable IPv4 Reactive forwarding" )
- appResult = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully deactivated IPv4 fwd app",
- onfail="Failed to deactivate IPv4 fwd app" )
-
- def CASE148( self, main ):
- """
- Verify reactive forwarding in Chordal topology, use a different ping method than CASE141
- """
- import time
- main.log.report( "Verify IPv6 Reactive forwarding (Chordal Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding, verify ping6, and disable reactive forwarding" )
-
- main.step( "Enable IPv4 Reactive forwarding" )
- appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully install fwd app",
- onfail="Failed to install fwd app" )
-
- main.step( "Set IPv6 cfg parameters for Reactive forwarding" )
- cfgResult1 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true" )
- cfgResult2 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true" )
- cfgResult = cfgResult1 and cfgResult2
- utilities.assert_equals( expect=main.TRUE, actual=cfgResult,
- onpass="Reactive mode ipv6Fowarding cfg is set to true",
- onfail="Failed to cfg set Reactive mode ipv6Fowarding" )
-
- main.step( "Discover hosts using ping" )
- numHosts = int( main.params['TOPO2']['numHosts'] )
- for i in range(numHosts):
- src = "h1"
- dest = "1000::" + str(i+1)
- main.Mininet1.handle.sendline( src + " ping6 " + dest + " -c 3 -i 1 -W 1")
- main.Mininet1.handle.expect( "mininet>" )
- main.log.info( main.Mininet1.handle.before )
- hosts = main.CLIs[0].hosts( jsonFormat=False )
- main.log.info( hosts )
-
- main.step( "Disable Reactive forwarding" )
- main.log.info( "Uninstall IPv6 reactive forwarding app" )
- appCheck = main.TRUE
- appResults = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- pool = []
- for cli in main.CLIs:
- t = main.Thread( target=cli.appToIDCheck,
- name="appToIDCheck-" + str( i ),
- args=[] )
- pool.append( t )
- t.start()
-
- for t in pool:
- t.join()
- appCheck = appCheck and t.result
- utilities.assert_equals( expect=main.TRUE, actual=appCheck,
- onpass="App Ids seem to be correct",
- onfail="Something is wrong with app Ids" )
-
- if appCheck != main.TRUE:
- main.log.warn( main.CLIs[0].apps() )
- main.log.warn( main.CLIs[0].appIDs() )
-
- # Waiting for reative flows to be cleared.
- time.sleep( 30 )
-
- main.step( "Disable IPv4 Reactive forwarding" )
- appResult = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully deactivated IPv4 fwd app",
- onfail="Failed to deactivate IPv4 fwd app" )
-
- def CASE149( self, main ):
- """
- Verify reactive forwarding in Spine-leaf topology, use a different ping method than CASE142
- """
- import time
- main.log.report( "Verify IPv6 Reactive forwarding (Spine-leaf Topology)" )
- main.log.report( "______________________________________________" )
- main.case( "Enable Reactive forwarding, verify ping6, and disable reactive forwarding" )
-
- main.step( "Enable IPv4 Reactive forwarding" )
- appResult = main.CLIs[0].activateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully install fwd app",
- onfail="Failed to install fwd app" )
-
- main.step( "Set IPv6 cfg parameters for Reactive forwarding" )
- cfgResult1 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "ipv6Forwarding", "true" )
- cfgResult2 = main.CLIs[0].setCfg( "org.onosproject.fwd.ReactiveForwarding", "matchIpv6Address", "true" )
- cfgResult = cfgResult1 and cfgResult2
- utilities.assert_equals( expect=main.TRUE, actual=cfgResult,
- onpass="Reactive mode ipv6Fowarding cfg is set to true",
- onfail="Failed to cfg set Reactive mode ipv6Fowarding" )
-
- main.step( "Discover hosts using ping" )
- numHosts = int( main.params['TOPO3']['numHosts'] )
- for i in range(11, numHosts+10):
- src = "h11"
- dest = "1000::" + str(i+1)
- main.Mininet1.handle.sendline( src + " ping6 " + dest + " -c 3 -i 1 -W 1")
- main.Mininet1.handle.expect( "mininet>" )
- main.log.info( main.Mininet1.handle.before )
- hosts = main.CLIs[0].hosts( jsonFormat=False )
- main.log.info( hosts )
-
- main.step( "Disable Reactive forwarding" )
- main.log.info( "Uninstall IPv6 reactive forwarding app" )
- appCheck = main.TRUE
- appResults = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- pool = []
- for cli in main.CLIs:
- t = main.Thread( target=cli.appToIDCheck,
- name="appToIDCheck-" + str( i ),
- args=[] )
- pool.append( t )
- t.start()
-
- for t in pool:
- t.join()
- appCheck = appCheck and t.result
- utilities.assert_equals( expect=main.TRUE, actual=appCheck,
- onpass="App Ids seem to be correct",
- onfail="Something is wrong with app Ids" )
-
- if appCheck != main.TRUE:
- main.log.warn( main.CLIs[0].apps() )
- main.log.warn( main.CLIs[0].appIDs() )
-
- # Waiting for reative flows to be cleared.
- time.sleep( 30 )
-
- main.step( "Disable IPv4 Reactive forwarding" )
- appResult = main.CLIs[0].deactivateApp( "org.onosproject.fwd" )
- utilities.assert_equals( expect=main.TRUE, actual=appResult,
- onpass="Successfully deactivated IPv4 fwd app",
- onfail="Failed to deactivate IPv4 fwd app" )
-
- def CASE5( self, main ):
- """
- Compare current ONOS topology with reference data
- """
- import re
-
- devicesDPIDTemp = []
- hostMACsTemp = []
- deviceLinksTemp = []
- deviceActiveLinksCountTemp = []
- devicePortsEnabledCountTemp = []
-
- main.log.report(
- "Compare ONOS topology with reference data in Stores" )
- main.log.report( "__________________________________________________" )
- main.case( "Compare ONOS topology with reference data" )
-
- main.step( "Compare current Device ports enabled with reference" )
-
- for check in range(main.topoCheck):
- time1 = time.time()
- for i in xrange( 1,(main.numMNswitches + 1), int( main.numCtrls ) ):
- pool = []
- for cli in main.CLIs:
- if i >= main.numMNswitches + 1:
- break
- dpid = "of:00000000000000" + format( i, "02x" )
- t = main.Thread(target = cli.getDevicePortsEnabledCount,
- threadID = main.threadID,
- name = "getDevicePortsEnabledCount",
- args = [dpid])
- t.start()
- pool.append(t)
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- portResult = thread.result
- #portTemp = re.split( r'\t+', portResult )
- #portCount = portTemp[ 1 ].replace( "\r\r\n\x1b[32m", "" )
- devicePortsEnabledCountTemp.append( portResult )
-
- time2 = time.time()
- main.log.info("Time for counting enabled ports of the switches: %2f seconds" %(time2-time1))
- main.log.info (
- "Device Enabled ports EXPECTED: %s" %
- str( main.devicePortsEnabledCount ) )
- main.log.info (
- "Device Enabled ports ACTUAL: %s" %
- str( devicePortsEnabledCountTemp ) )
-
- if ( cmp( main.devicePortsEnabledCount,
- devicePortsEnabledCountTemp ) == 0 ):
- stepResult1 = main.TRUE
- else:
- stepResult1 = main.FALSE
-
- main.step( "Compare Device active links with reference" )
- time1 = time.time()
- for i in xrange( 1, ( main.numMNswitches + 1) , int( main.numCtrls ) ):
- pool = []
- for cli in main.CLIs:
- if i >= main.numMNswitches + 1:
- break
- dpid = "of:00000000000000" + format( i, "02x" )
- t = main.Thread(target = cli.getDeviceLinksActiveCount,
- threadID = main.threadID,
- name = "getDeviceLinksActiveCount",
- args = [dpid])
- t.start()
- pool.append(t)
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- linkCountResult = thread.result
- #linkCountTemp = re.split( r'\t+', linkCountResult )
- #linkCount = linkCountTemp[ 1 ].replace( "\r\r\n\x1b[32m", "" )
- deviceActiveLinksCountTemp.append( linkCountResult )
-
- time2 = time.time()
- main.log.info("Time for counting all enabled links of the switches: %2f seconds" %(time2-time1))
- main.log.info (
- "Device Active links EXPECTED: %s" %
- str( main.deviceActiveLinksCount ) )
- main.log.info (
- "Device Active links ACTUAL: %s" % str( deviceActiveLinksCountTemp ) )
- if ( cmp( main.deviceActiveLinksCount, deviceActiveLinksCountTemp ) == 0 ):
- stepResult2 = main.TRUE
- else:
- stepResult2 = main.FALSE
-
- """
- place holder for comparing devices, hosts, paths and intents if required.
- Links and ports data would be incorrect with out devices anyways.
- """
- caseResult = ( stepResult1 and stepResult2 )
-
- if caseResult:
- break
- else:
- time.sleep( main.topoCheckDelay )
- main.log.warn( "Topology check failed. Trying again..." )
-
-
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Compare Topology test PASS",
- onfail="Compare Topology test FAIL" )
-
- def CASE60( self ):
- """
- Install 300 host intents and verify ping all (Att Topology)
- """
- main.log.report( "Add 300 host intents and verify pingall (Att Topology)" )
- main.log.report( "_______________________________________" )
- main.case( "Install 300 host intents" )
-
- main.step( "Add host Intents" )
- intentIdList = main.CHOtestFunctions.installHostIntents()
- main.intentIds = list(intentIdList)
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE, actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = ( intentState and pingResult )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 300 Host Intents and Ping All test PASS",
- onfail="Install 300 Host Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE61( self ):
- """
- Install 300 host intents and verify ping all for Chordal Topology
- """
- main.log.report( "Add 300 host intents and verify pingall (Chordal Topo)" )
- main.log.report( "_______________________________________" )
- main.case( "Install 300 host intents" )
-
- main.step( "Add host Intents" )
- intentIdList = main.CHOtestFunctions.installHostIntents()
- main.intentIds = list(intentIdList)
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE, actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = ( intentState and pingResult )
- utilities.assert_equals( expect=main.TRUE,
- actual=caseResult,
- onpass="Install 300 Host Intents and Ping All test PASS",
- onfail="Install 300 Host Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE62( self ):
- """
- Install 2278 host intents and verify ping all for Spine Topology
- """
- main.log.report( "Add 2278 host intents and verify pingall (Spine Topo)" )
- main.log.report( "_______________________________________" )
- main.case( "Install 2278 host intents" )
-
- main.step( "Add host Intents" )
- intentIdList = main.CHOtestFunctions.installHostIntents()
- main.intentIds = list(intentIdList)
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE, actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = ( intentState and pingResult )
- utilities.assert_equals( expect=main.TRUE,
- actual=caseResult,
- onpass="Install 2278 Host Intents and Ping All test PASS",
- onfail="Install 2278 Host Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE160( self ):
- """
- Verify IPv6 ping across 300 host intents (Att Topology)
- """
- main.log.report( "Verify IPv6 ping across 300 host intents (Att Topology)" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all 300 host intents" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 300 host intents test PASS",
- onfail="IPv6 Ping across 300 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE161( self ):
- """
- Verify IPv6 ping across 300 host intents (Chordal Topology)
- """
- main.log.report( "Verify IPv6 ping across 300 host intents (Chordal Topology)" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all 300 host intents" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE, actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 300 host intents test PASS",
- onfail="IPv6 Ping across 300 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE162( self ):
- """
- Verify IPv6 ping across 2278 host intents (Spine Topology)
- """
- main.log.report( "Verify IPv6 ping across 2278 host intents (Spine Topology)" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all 2278 host intents" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE, actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 2278 host intents test PASS",
- onfail="IPv6 Ping across 2278 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE70( self, main ):
- """
- Randomly bring some core links down and verify ping all ( Host Intents-Att Topo)
- """
- import random
- main.randomLink1 = []
- main.randomLink2 = []
- main.randomLink3 = []
- link1End1 = main.params[ 'ATTCORELINKS' ][ 'linkS3a' ]
- link1End2 = main.params[ 'ATTCORELINKS' ][ 'linkS3b' ].split( ',' )
- link2End1 = main.params[ 'ATTCORELINKS' ][ 'linkS14a' ]
- link2End2 = main.params[ 'ATTCORELINKS' ][ 'linkS14b' ].split( ',' )
- link3End1 = main.params[ 'ATTCORELINKS' ][ 'linkS18a' ]
- link3End2 = main.params[ 'ATTCORELINKS' ][ 'linkS18b' ].split( ',' )
- switchLinksToToggle = main.params[ 'ATTCORELINKS' ][ 'toggleLinks' ]
-
- main.log.report( "Randomly bring some core links down and verify ping all (Host Intents-Att Topo)" )
- main.log.report( "___________________________________________________________________________" )
- main.case( "Host intents - Randomly bring some core links down and verify ping all" )
- main.step( "Verify number of Switch links to toggle on each Core Switch are between 1 - 5" )
- if ( int( switchLinksToToggle ) ==
- 0 or int( switchLinksToToggle ) > 5 ):
- main.log.info( "Please check your PARAMS file. Valid range for number of switch links to toggle is between 1 to 5" )
- #main.cleanup()
- #main.exit()
- else:
- main.log.info( "User provided Core switch links range to toggle is correct, proceeding to run the test" )
-
- main.step( "Cut links on Core devices using user provided range" )
- main.randomLink1 = random.sample( link1End2, int( switchLinksToToggle ) )
- main.randomLink2 = random.sample( link2End2, int( switchLinksToToggle ) )
- main.randomLink3 = random.sample( link3End2, int( switchLinksToToggle ) )
- for i in range( int( switchLinksToToggle ) ):
- main.Mininet1.link(
- END1=link1End1,
- END2=main.randomLink1[ i ],
- OPTION="down" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link2End1,
- END2=main.randomLink2[ i ],
- OPTION="down" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link3End1,
- END2=main.randomLink3[ i ],
- OPTION="down" )
- time.sleep( main.linkSleep )
-
- main.step("Verify link down is discoverd by onos")
- linkDown = main.CHOtestFunctions.checkLinkEvents( "down",
- int( main.numMNlinks ) -
- int( switchLinksToToggle ) * 6 )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkDown,
- onpass="Link down discovered properly",
- onfail="Link down was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkDown and pingResult and intentState
- utilities.assert_equals( expect=main.TRUE,
- actual=caseResult,
- onpass="Random Link cut Test PASS",
- onfail="Random Link cut Test FAIL" )
-
- # Printing what exactly failed
- if not linkDown:
- main.log.debug( "Link down was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE80( self, main ):
- """
- Bring the core links up that are down and verify ping all ( Host Intents-Att Topo )
- """
- import random
- link1End1 = main.params[ 'ATTCORELINKS' ][ 'linkS3a' ]
- link2End1 = main.params[ 'ATTCORELINKS' ][ 'linkS14a' ]
- link3End1 = main.params[ 'ATTCORELINKS' ][ 'linkS18a' ]
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
- switchLinksToToggle = main.params[ 'ATTCORELINKS' ][ 'toggleLinks' ]
-
- main.log.report(
- "Bring the core links up that are down and verify ping all (Host Intents-Att Topo" )
- main.log.report(
- "__________________________________________________________________" )
- main.case(
- "Host intents - Bring the core links up that are down and verify ping all" )
- main.step( "Bring randomly cut links on Core devices up" )
- for i in range( int( switchLinksToToggle ) ):
- main.Mininet1.link(
- END1=link1End1,
- END2=main.randomLink1[ i ],
- OPTION="up" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link2End1,
- END2=main.randomLink2[ i ],
- OPTION="up" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link3End1,
- END2=main.randomLink3[ i ],
- OPTION="up" )
- time.sleep( main.linkSleep )
-
- main.step("Verify link up is discoverd by onos")
- linkUp = main.CHOtestFunctions.checkLinkEvents( "up",
- int( main.numMNlinks ) )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkUp,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkUp and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Link Up Test PASS",
- onfail="Link Up Test FAIL" )
- # Printing what exactly failed
- if not linkUp:
- main.log.debug( "Link up was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE71( self, main ):
- """
- Randomly bring some core links down and verify ping all ( Point Intents-Att Topo)
- """
- import random
- main.randomLink1 = []
- main.randomLink2 = []
- main.randomLink3 = []
- link1End1 = main.params[ 'ATTCORELINKS' ][ 'linkS3a' ]
- link1End2 = main.params[ 'ATTCORELINKS' ][ 'linkS3b' ].split( ',' )
- link2End1 = main.params[ 'ATTCORELINKS' ][ 'linkS14a' ]
- link2End2 = main.params[ 'ATTCORELINKS' ][ 'linkS14b' ].split( ',' )
- link3End1 = main.params[ 'ATTCORELINKS' ][ 'linkS18a' ]
- link3End2 = main.params[ 'ATTCORELINKS' ][ 'linkS18b' ].split( ',' )
- switchLinksToToggle = main.params[ 'ATTCORELINKS' ][ 'toggleLinks' ]
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report( "Randomly bring some core links down and verify ping all (Point Intents-Att Topo)" )
- main.log.report( "___________________________________________________________________________" )
- main.case( "Point intents - Randomly bring some core links down and verify ping all" )
- main.step( "Verify number of Switch links to toggle on each Core Switch are between 1 - 5" )
- if ( int( switchLinksToToggle ) ==
- 0 or int( switchLinksToToggle ) > 5 ):
- main.log.info( "Please check your PARAMS file. Valid range for number of switch links to toggle is between 1 to 5" )
- #main.cleanup()
- #main.exit()
- else:
- main.log.info( "User provided Core switch links range to toggle is correct, proceeding to run the test" )
-
- main.step( "Cut links on Core devices using user provided range" )
- main.randomLink1 = random.sample( link1End2, int( switchLinksToToggle ) )
- main.randomLink2 = random.sample( link2End2, int( switchLinksToToggle ) )
- main.randomLink3 = random.sample( link3End2, int( switchLinksToToggle ) )
- for i in range( int( switchLinksToToggle ) ):
- main.Mininet1.link(
- END1=link1End1,
- END2=main.randomLink1[ i ],
- OPTION="down" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link2End1,
- END2=main.randomLink2[ i ],
- OPTION="down" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link3End1,
- END2=main.randomLink3[ i ],
- OPTION="down" )
- time.sleep( main.linkSleep )
-
- main.step("Verify link down is discoverd by onos")
- linkDown = main.CHOtestFunctions.checkLinkEvents( "down",
- int( main.numMNlinks ) - int( switchLinksToToggle ) * 6 )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkDown,
- onpass="Link down discovered properly",
- onfail="Link down was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkDown and pingResult and intentState
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Random Link cut Test PASS",
- onfail="Random Link cut Test FAIL" )
-
- # Printing what exactly failed
- if not linkDown:
- main.log.debug( "Link down was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE81( self, main ):
- """
- Bring the core links up that are down and verify ping all ( Point Intents-Att Topo )
- """
- import random
- link1End1 = main.params[ 'ATTCORELINKS' ][ 'linkS3a' ]
- link2End1 = main.params[ 'ATTCORELINKS' ][ 'linkS14a' ]
- link3End1 = main.params[ 'ATTCORELINKS' ][ 'linkS18a' ]
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
- switchLinksToToggle = main.params[ 'ATTCORELINKS' ][ 'toggleLinks' ]
-
- main.log.report(
- "Bring the core links up that are down and verify ping all ( Point Intents-Att Topo" )
- main.log.report(
- "__________________________________________________________________" )
- main.case(
- "Point intents - Bring the core links up that are down and verify ping all" )
- main.step( "Bring randomly cut links on Core devices up" )
- for i in range( int( switchLinksToToggle ) ):
- main.Mininet1.link(
- END1=link1End1,
- END2=main.randomLink1[ i ],
- OPTION="up" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link2End1,
- END2=main.randomLink2[ i ],
- OPTION="up" )
- time.sleep( main.linkSleep )
- main.Mininet1.link(
- END1=link3End1,
- END2=main.randomLink3[ i ],
- OPTION="up" )
- time.sleep( main.linkSleep )
-
- main.step("Verify link up is discoverd by onos")
- linkUp = main.CHOtestFunctions.checkLinkEvents( "up", int( main.numMNlinks ) )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkUp,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkUp and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Link Up Test PASS",
- onfail="Link Up Test FAIL" )
- # Printing what exactly failed
- if not linkUp:
- main.log.debug( "Link up was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE72( self, main ):
- """
- Randomly bring some links down and verify ping all ( Host Intents-Chordal Topo)
- """
- import random
- import itertools
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report( "Randomly bring some core links down and verify ping all (Host Intents-Chordal Topo)" )
- main.log.report( "___________________________________________________________________________" )
- main.case( "Host intents - Randomly bring some core links down and verify ping all" )
- switches = []
- switchesComb = []
- for i in range( main.numMNswitches ):
- switches.append('s%d'%(i+1))
- switchesLinksComb = list(itertools.combinations(switches,2))
- main.randomLinks = random.sample(switchesLinksComb, 5 )
- print main.randomLinks
- main.step( "Cut links on random devices" )
-
- for switch in main.randomLinks:
- main.Mininet1.link(
- END1=switch[0],
- END2=switch[1],
- OPTION="down")
- time.sleep( main.linkSleep )
-
- main.step("Verify link down is discoverd by onos")
- linkDown = main.CHOtestFunctions.checkLinkEvents( "down", int( main.numMNlinks ) - 5 * 2 )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkDown,
- onpass="Link down discovered properly",
- onfail="Link down was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkDown and pingResult and intentState
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Random Link cut Test PASS",
- onfail="Random Link cut Test FAIL" )
-
- # Printing what exactly failed
- if not linkDown:
- main.log.debug( "Link down was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE82( self, main ):
- """
- Bring the core links up that are down and verify ping all ( Host Intents Chordal Topo )
- """
- import random
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report(
- "Bring the core links up that are down and verify ping all (Host Intents-Chordal Topo" )
- main.log.report(
- "__________________________________________________________________" )
- main.case(
- "Host intents - Bring the core links up that are down and verify ping all" )
- main.step( "Bring randomly cut links on devices up" )
-
- for switch in main.randomLinks:
- main.Mininet1.link(
- END1=switch[0],
- END2=switch[1],
- OPTION="up")
- time.sleep( main.linkSleep )
-
- main.step("Verify link up is discoverd by onos")
- linkUp = main.CHOtestFunctions.checkLinkEvents( "up", int( main.numMNlinks ) )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkUp,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkUp and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Link Up Test PASS",
- onfail="Link Up Test FAIL" )
- # Printing what exactly failed
- if not linkUp:
- main.log.debug( "Link up was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE73( self, main ):
- """
- Randomly bring some links down and verify ping all ( Point Intents-Chordal Topo)
- """
- import random
- import itertools
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report( "Randomly bring some core links down and verify ping all ( Point Intents-Chordal Topo)" )
- main.log.report( "___________________________________________________________________________" )
- main.case( "Point intents - Randomly bring some core links down and verify ping all" )
- switches = []
- switchesComb = []
- for i in range( main.numMNswitches ):
- switches.append('s%d'%(i+1))
- switchesLinksComb = list(itertools.combinations(switches,2))
- main.randomLinks = random.sample(switchesLinksComb, 5 )
- print main.randomLinks
- main.step( "Cut links on random devices" )
-
- for switch in main.randomLinks:
- main.Mininet1.link(
- END1=switch[0],
- END2=switch[1],
- OPTION="down")
- time.sleep( main.linkSleep )
-
- main.step("Verify link down is discoverd by onos")
- linkDown = main.CHOtestFunctions.checkLinkEvents( "down", int( main.numMNlinks ) - 5 * 2 )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkDown,
- onpass="Link down discovered properly",
- onfail="Link down was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkDown and pingResult and intentState
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Random Link cut Test PASS",
- onfail="Random Link cut Test FAIL" )
-
- # Printing what exactly failed
- if not linkDown:
- main.log.debug( "Link down was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE83( self, main ):
- """
- Bring the core links up that are down and verify ping all ( Point Intents Chordal Topo )
- """
- import random
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report(
- "Bring the core links up that are down and verify ping all ( Point Intents-Chordal Topo" )
- main.log.report(
- "__________________________________________________________________" )
- main.case(
- "Point intents - Bring the core links up that are down and verify ping all" )
- main.step( "Bring randomly cut links on devices up" )
-
- for switch in main.randomLinks:
- main.Mininet1.link(
- END1=switch[0],
- END2=switch[1],
- OPTION="up")
- time.sleep( main.linkSleep )
-
- main.step("Verify link up is discoverd by onos")
- linkUp = main.CHOtestFunctions.checkLinkEvents( "up", int( main.numMNlinks ) )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkUp,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkUp and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Link Up Test PASS",
- onfail="Link Up Test FAIL" )
- # Printing what exactly failed
- if not linkUp:
- main.log.debug( "Link up was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE74( self, main ):
- """
- Randomly bring some core links down and verify ping all ( Host Intents-Spine Topo)
- """
- import random
- main.randomLink1 = []
- main.randomLink2 = []
- main.randomLink3 = []
- main.randomLink4 = []
- link1End1 = main.params[ 'SPINECORELINKS' ][ 'linkS9' ]
- link1End2top = main.params[ 'SPINECORELINKS' ][ 'linkS9top' ].split( ',' )
- link1End2bot = main.params[ 'SPINECORELINKS' ][ 'linkS9bot' ].split( ',' )
- link2End1 = main.params[ 'SPINECORELINKS' ][ 'linkS10' ]
- link2End2top = main.params[ 'SPINECORELINKS' ][ 'linkS10top' ].split( ',' )
- link2End2bot = main.params[ 'SPINECORELINKS' ][ 'linkS10bot' ].split( ',' )
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report( "Bring some core links down and verify ping all (Host Intents-Spine Topo)" )
- main.log.report( "___________________________________________________________________________" )
- main.log.case( "Bring some core links down and verify ping all (Host Intents-Spine Topo)" )
-
- main.step( "Bring some core links down" )
- linkIndex = range(4)
- linkIndexS9 = random.sample(linkIndex,1)[0]
- linkIndex.remove(linkIndexS9)
- linkIndexS10 = random.sample(linkIndex,1)[0]
- main.randomLink1 = link1End2top[linkIndexS9]
- main.randomLink2 = link2End2top[linkIndexS10]
- main.randomLink3 = random.sample(link1End2bot,1)[0]
- main.randomLink4 = random.sample(link2End2bot,1)[0]
-
- # Work around for link state propagation delay. Added some sleep time.
- # main.Mininet1.link( END1=link1End1, END2=main.randomLink1, OPTION="down" )
- # main.Mininet1.link( END1=link2End1, END2=main.randomLink2, OPTION="down" )
- main.Mininet1.link( END1=link1End1, END2=main.randomLink3, OPTION="down" )
- time.sleep( main.linkSleep )
- main.Mininet1.link( END1=link2End1, END2=main.randomLink4, OPTION="down" )
- time.sleep( main.linkSleep )
-
- main.step( "Verify link down is discoverd by onos" )
- linkDown = main.CHOtestFunctions.checkLinkEvents( "down", int( main.numMNlinks ) - 4 )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkDown,
- onpass="Link down discovered properly",
- onfail="Link down was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step( "Verify intents are installed" )
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkDown and pingResult and intentState
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Random Link cut Test PASS",
- onfail="Random Link cut Test FAIL" )
-
- # Printing what exactly failed
- if not linkDown:
- main.log.debug( "Link down was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE84( self, main ):
- """
- Bring the core links up that are down and verify ping all ( Host Intents-Spine Topo )
- """
- import random
- link1End1 = main.params[ 'SPINECORELINKS' ][ 'linkS9' ]
- link2End1 = main.params[ 'SPINECORELINKS' ][ 'linkS10' ]
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
- main.log.report(
- "Bring the core links up that are down and verify ping all (Host Intents-Spine Topo" )
- main.log.report(
- "__________________________________________________________________" )
- main.case(
- "Host intents - Bring the core links up that are down and verify ping all" )
-
- main.step( "Bring up the core links that are down" )
- # Work around for link state propagation delay. Added some sleep time.
- # main.Mininet1.link( END1=link1End1, END2=main.randomLink1, OPTION="up" )
- # main.Mininet1.link( END1=link2End1, END2=main.randomLink2, OPTION="up" )
- main.Mininet1.link( END1=link1End1, END2=main.randomLink3, OPTION="up" )
- time.sleep( main.linkSleep )
- main.Mininet1.link( END1=link2End1, END2=main.randomLink4, OPTION="up" )
- time.sleep( main.linkSleep )
-
- main.step("Verify link up is discoverd by onos")
- linkUp = main.CHOtestFunctions.checkLinkEvents( "up", int( main.numMNlinks ) )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkUp,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkUp and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Link Up Test PASS",
- onfail="Link Up Test FAIL" )
- # Printing what exactly failed
- if not linkUp:
- main.log.debug( "Link up was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE75( self, main ):
- """
- Randomly bring some core links down and verify ping all ( Point Intents-Spine Topo)
- """
- import random
- main.randomLink1 = []
- main.randomLink2 = []
- main.randomLink3 = []
- main.randomLink4 = []
- link1End1 = main.params[ 'SPINECORELINKS' ][ 'linkS9' ]
- link1End2top = main.params[ 'SPINECORELINKS' ][ 'linkS9top' ].split( ',' )
- link1End2bot = main.params[ 'SPINECORELINKS' ][ 'linkS9bot' ].split( ',' )
- link2End1 = main.params[ 'SPINECORELINKS' ][ 'linkS10' ]
- link2End2top = main.params[ 'SPINECORELINKS' ][ 'linkS10top' ].split( ',' )
- link2End2bot = main.params[ 'SPINECORELINKS' ][ 'linkS10bot' ].split( ',' )
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report( "Bring some core links down and verify ping all (Point Intents-Spine Topo)" )
- main.log.report( "___________________________________________________________________________" )
- main.case( "Bring some core links down and verify ping all (Point Intents-Spine Topo)" )
-
- main.step( "Bring some core links down" )
- linkIndex = range(4)
- linkIndexS9 = random.sample(linkIndex,1)[0]
- linkIndex.remove(linkIndexS9)
- linkIndexS10 = random.sample(linkIndex,1)[0]
- main.randomLink1 = link1End2top[linkIndexS9]
- main.randomLink2 = link2End2top[linkIndexS10]
- main.randomLink3 = random.sample(link1End2bot,1)[0]
- main.randomLink4 = random.sample(link2End2bot,1)[0]
-
- # Work around for link state propagation delay. Added some sleep time.
- # main.Mininet1.link( END1=link1End1, END2=main.randomLink1, OPTION="down" )
- # main.Mininet1.link( END1=link2End1, END2=main.randomLink2, OPTION="down" )
- main.Mininet1.link( END1=link1End1, END2=main.randomLink3, OPTION="down" )
- time.sleep( main.linkSleep )
- main.Mininet1.link( END1=link2End1, END2=main.randomLink4, OPTION="down" )
- time.sleep( main.linkSleep )
-
- main.step("Verify link down is discoverd by onos")
- linkDown = main.CHOtestFunctions.checkLinkEvents( "down", int( main.numMNlinks ) - 4 )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkDown,
- onpass="Link down discovered properly",
- onfail="Link down was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkDown and pingResult and intentState
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Random Link cut Test PASS",
- onfail="Random Link cut Test FAIL" )
-
- # Printing what exactly failed
- if not linkDown:
- main.log.debug( "Link down was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE85( self, main ):
- """
- Bring the core links up that are down and verify ping all ( Point Intents-Spine Topo )
- """
- import random
- link1End1 = main.params[ 'SPINECORELINKS' ][ 'linkS9' ]
- link2End1 = main.params[ 'SPINECORELINKS' ][ 'linkS10' ]
- main.linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
- main.log.report(
- "Bring the core links up that are down and verify ping all (Point Intents-Spine Topo" )
- main.log.report(
- "__________________________________________________________________" )
- main.case(
- "Point intents - Bring the core links up that are down and verify ping all" )
-
- main.step( "Bring up the core links that are down" )
- # Work around for link state propagation delay. Added some sleep time.
- # main.Mininet1.link( END1=link1End1, END2=main.randomLink1, OPTION="up" )
- # main.Mininet1.link( END1=link2End1, END2=main.randomLink2, OPTION="up" )
- main.Mininet1.link( END1=link1End1, END2=main.randomLink3, OPTION="up" )
- time.sleep( main.linkSleep )
- main.Mininet1.link( END1=link2End1, END2=main.randomLink4, OPTION="up" )
- time.sleep( main.linkSleep )
-
- main.step("Verify link up is discoverd by onos")
- linkUp = main.CHOtestFunctions.checkLinkEvents( "up", int( main.numMNlinks ) )
- utilities.assert_equals( expect=main.TRUE,
- actual=linkUp,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( main.linkSleep * main.linkCheck ) +
- " seconds" )
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = linkUp and pingResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Link Up Test PASS",
- onfail="Link Up Test FAIL" )
- # Printing what exactly failed
- if not linkUp:
- main.log.debug( "Link up was not discovered correctly" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not intentState:
- main.log.debug( "Intents are not all installed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE170( self ):
- """
- IPv6 ping all with some core links down( Host Intents-Att Topo)
- """
- main.log.report( "IPv6 ping all with some core links down( Host Intents-Att Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with some core links down( Host Intents-Att Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 300 host intents test PASS",
- onfail="IPv6 Ping across 300 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE180( self ):
- """
- IPv6 ping all with after core links back up( Host Intents-Att Topo)
- """
- main.log.report( "IPv6 ping all with after core links back up( Host Intents-Att Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with after core links back up( Host Intents-Att Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 300 host intents test PASS",
- onfail="IPv6 Ping across 300 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE171( self ):
- """
- IPv6 ping all with some core links down( Point Intents-Att Topo)
- """
- main.log.report( "IPv6 ping all with some core links down( Point Intents-Att Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with some core links down( Point Intents-Att Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 600 point intents test PASS",
- onfail="IPv6 Ping across 600 point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE181( self ):
- """
- IPv6 ping all with after core links back up( Point Intents-Att Topo)
- """
- main.log.report( "IPv6 ping all with after core links back up( Point Intents-Att Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with after core links back up( Point Intents-Att Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 600 Point intents test PASS",
- onfail="IPv6 Ping across 600 Point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE172( self ):
- """
- IPv6 ping all with some core links down( Host Intents-Chordal Topo)
- """
- main.log.report( "IPv6 ping all with some core links down( Host Intents-Chordal Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with some core links down( Host Intents-Chordal Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 300 host intents test PASS",
- onfail="IPv6 Ping across 300 host intents test FAIL" )
-
- def CASE182( self ):
- """
- IPv6 ping all with after core links back up( Host Intents-Chordal Topo)
- """
- main.log.report( "IPv6 ping all with after core links back up( Host Intents-Chordal Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with after core links back up( Host Intents-Chordal Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 300 host intents test PASS",
- onfail="IPv6 Ping across 300 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE173( self ):
- """
- IPv6 ping all with some core links down( Point Intents-Chordal Topo)
- """
- main.log.report( "IPv6 ping all with some core links down( Point Intents-Chordal Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with some core links down( Point Intents-Chordal Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 600 point intents test PASS",
- onfail="IPv6 Ping across 600 point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE183( self ):
- """
- IPv6 ping all with after core links back up( Point Intents-Chordal Topo)
- """
- main.log.report( "IPv6 ping all with after core links back up( Point Intents-Chordal Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with after core links back up( Point Intents-Chordal Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 600 Point intents test PASS",
- onfail="IPv6 Ping across 600 Point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE174( self ):
- """
- IPv6 ping all with some core links down( Host Intents-Spine Topo)
- """
- main.log.report( "IPv6 ping all with some core links down( Host Intents-Spine Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with some core links down( Host Intents-Spine Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 2278 host intents test PASS",
- onfail="IPv6 Ping across 2278 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE184( self ):
- """
- IPv6 ping all with after core links back up( Host Intents-Spine Topo)
- """
- main.log.report( "IPv6 ping all with after core links back up( Host Intents-Spine Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with after core links back up( Host Intents-Spine Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 2278 host intents test PASS",
- onfail="IPv6 Ping across 2278 host intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE175( self ):
- """
- IPv6 ping all with some core links down( Point Intents-Spine Topo)
- """
- main.log.report( "IPv6 ping all with some core links down( Point Intents-Spine Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with some core links down( Point Intents-Spine Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 4556 point intents test PASS",
- onfail="IPv6 Ping across 4556 point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE185( self ):
- """
- IPv6 ping all with after core links back up( Point Intents-Spine Topo)
- """
- main.log.report( "IPv6 ping all with after core links back up( Point Intents-Spine Topo )" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all with after core links back up( Point Intents-Spine Topo )" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 4556 Point intents test PASS",
- onfail="IPv6 Ping across 4556 Point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE90( self ):
- """
- Install 600 point intents and verify ping all (Att Topology)
- """
- main.log.report( "Add 600 point intents and verify pingall (Att Topology)" )
- main.log.report( "_______________________________________" )
- main.case( "Install 600 point intents" )
-
- main.step( "Add point Intents" )
- intentIdList = main.CHOtestFunctions.installPointIntents()
- main.intentIds = list(intentIdList)
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = ( intentState and pingResult )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 600 point Intents and Ping All test PASS",
- onfail="Install 600 point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE91( self ):
- """
- Install 600 point intents and verify ping all (Chordal Topology)
- """
- main.log.report( "Add 600 point intents and verify pingall (Chordal Topology)" )
- main.log.report( "_______________________________________" )
- main.case( "Install 600 point intents" )
-
- main.step( "Add point Intents" )
- intentIdList = main.CHOtestFunctions.installPointIntents()
- main.intentIds = list(intentIdList)
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = ( intentState and pingResult )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 600 point Intents and Ping All test PASS",
- onfail="Install 600 point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE92( self ):
- """
- Install 4556 point intents and verify ping all (Spine Topology)
- """
- main.log.report( "Add 4556 point intents and verify pingall (Spine Topology)" )
- main.log.report( "_______________________________________" )
- main.case( "Install 4556 point intents" )
-
- main.step( "Add point Intents" )
- intentIdList = main.CHOtestFunctions.installPointIntents()
- main.intentIds = list(intentIdList)
-
- main.step("Verify intents are installed")
- intentState = main.CHOtestFunctions.checkIntents()
- utilities.assert_equals( expect=main.TRUE,
- actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step( "Verify Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall()
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = ( intentState and pingResult )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 4556 point Intents and Ping All test PASS",
- onfail="Install 4556 point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE93( self ):
- """
- Install multi-single point intents and verify Ping all works
- for att topology
- """
- import copy
- import time
- from collections import Counter
- main.log.report( "Install multi-single point intents and verify Ping all" )
- main.log.report( "___________________________________________" )
- main.case( "Install multi-single point intents and Ping all" )
- deviceDPIDsCopy = copy.copy(main.deviceDPIDs)
- portIngressList = ['1']*(len(deviceDPIDsCopy) - 1)
- intentIdList = []
- main.log.info( "MACsDict" + str(main.MACsDict) )
- time1 = time.time()
- for i in xrange(0,len(deviceDPIDsCopy),int(main.numCtrls)):
- pool = []
- for cli in main.CLIs:
- egressDevice = deviceDPIDsCopy[i]
- ingressDeviceList = copy.copy(deviceDPIDsCopy)
- ingressDeviceList.remove(egressDevice)
- if i >= len( deviceDPIDsCopy ):
- break
- t = main.Thread( target=cli.addMultipointToSinglepointIntent,
- threadID=main.threadID,
- name="addMultipointToSinglepointIntent",
- args =[ingressDeviceList,egressDevice,portIngressList,'1','','',main.MACsDict.get(egressDevice)])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append(thread.result)
- time2 = time.time()
- main.log.info("Time for adding point intents: %2f seconds" %(time2-time1))
-
- main.step("Verify intents are installed")
- # Giving onos multiple chances to install intents
- for i in range( main.intentCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info("Waiting for onos to install intents...")
- time.sleep( main.checkIntentsDelay )
-
- intentState = main.TRUE
- for e in range(int(main.numCtrls)):
- main.log.info( "Checking intents on CLI %s" % (e+1) )
- IntentStateIndividual = main.CLIs[e].checkIntentState( intentsId=intentIdList )
- if not IntentStateIndividual:
- main.log.warn( "Not all intents installed on ONOS%s" % (e+1) )
- intentState = intentState and IntentStateIndividual
- if intentState:
- break
- if not intentState:
- #Dumping intent summary
- main.log.info( "**** Intent Summary ****\n" + str(main.ONOScli1.intents( jsonFormat=False, summary=True)) )
-
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step("Verify flows are all added")
-
- for i in range( main.flowCheck ):
- if i != 0:
- main.log.warn( "verification failed. Retrying..." )
- main.log.info( "Waiting for onos to add flows..." )
- time.sleep( main.checkFlowsDelay )
-
- flowState = main.TRUE
- for cli in main.CLIs:
- flowState = cli.checkFlowState()
- if not flowState:
- main.log.warn( "Not all flows added" )
- if flowState:
- break
- else:
- #Dumping summary
- main.log.info( "Summary:\n" + str( main.ONOScli1.summary(jsonFormat=False) ) )
-
- utilities.assert_equals( expect=main.TRUE, actual=flowState,
- onpass="FLOWS INSTALLED",
- onfail="SOME FLOWS NOT ADDED" )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- caseResult = ( checkFlowsState and pingResult and intentState )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 25 multi to single point Intents and Ping All test PASS",
- onfail="Install 25 multi to single point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not checkFlowsState:
- main.log.debug( "Flows failed to add completely" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE94( self ):
- """
- Install multi-single point intents and verify Ping all works
- for Chordal topology
- """
- import copy
- import time
- main.log.report( "Install multi-single point intents and verify Ping all" )
- main.log.report( "___________________________________________" )
- main.case( "Install multi-single point intents and Ping all" )
- deviceDPIDsCopy = copy.copy(main.deviceDPIDs)
- portIngressList = ['1']*(len(deviceDPIDsCopy) - 1)
- intentIdList = []
- main.log.info( "MACsDict" + str(main.MACsDict) )
- time1 = time.time()
- for i in xrange(0,len(deviceDPIDsCopy),int(main.numCtrls)):
- pool = []
- for cli in main.CLIs:
- egressDevice = deviceDPIDsCopy[i]
- ingressDeviceList = copy.copy(deviceDPIDsCopy)
- ingressDeviceList.remove(egressDevice)
- if i >= len( deviceDPIDsCopy ):
- break
- t = main.Thread( target=cli.addMultipointToSinglepointIntent,
- threadID=main.threadID,
- name="addMultipointToSinglepointIntent",
- args =[ingressDeviceList,egressDevice,portIngressList,'1','','',main.MACsDict.get(egressDevice)])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append(thread.result)
- time2 = time.time()
- main.log.info("Time for adding point intents: %2f seconds" %(time2-time1))
-
- main.step("Verify intents are installed")
- # Giving onos multiple chances to install intents
- for i in range( main.intentCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info("Waiting for onos to install intents...")
- time.sleep( main.checkIntentsDelay )
-
- intentState = main.TRUE
- for e in range(int(main.numCtrls)):
- main.log.info( "Checking intents on CLI %s" % (e+1) )
- IntentStateIndividual = main.CLIs[e].checkIntentState( intentsId=intentIdList )
- if not IntentStateIndividual:
- main.log.warn( "Not all intents installed on ONOS%s" % (e+1) )
- intentState = intentState and IntentStateIndividual
- if intentState:
- break
- if not intentState:
- #Dumping intent summary
- main.log.info( "**** Intent Summary ****\n" + str(main.ONOScli1.intents( jsonFormat=False, summary=True)) )
-
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step("Verify flows are all added")
-
- for i in range( main.flowCheck ):
- if i != 0:
- main.log.warn( "verification failed. Retrying..." )
- main.log.info( "Waiting for onos to add flows..." )
- time.sleep( main.checkFlowsDelay )
-
- flowState = main.TRUE
- for cli in main.CLIs:
- flowState = cli.checkFlowState()
- if not flowState:
- main.log.warn( "Not all flows added" )
- if flowState:
- break
- else:
- #Dumping summary
- main.log.info( "Summary:\n" + str( main.ONOScli1.summary(jsonFormat=False) ) )
-
- utilities.assert_equals( expect=main.TRUE, actual=flowState,
- onpass="FLOWS INSTALLED",
- onfail="SOME FLOWS NOT ADDED" )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- caseResult = ( checkFlowsState and pingResult and intentState )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 25 multi to single point Intents and Ping All test PASS",
- onfail="Install 25 multi to single point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not checkFlowsState:
- main.log.debug( "Flows failed to add completely" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE95( self ):
- """
- Install multi-single point intents and verify Ping all works
- for Spine topology
- """
- import copy
- import time
- main.log.report( "Install multi-single point intents and verify Ping all" )
- main.log.report( "___________________________________________" )
- main.case( "Install multi-single point intents and Ping all" )
- deviceDPIDsCopy = copy.copy(main.deviceDPIDs)
- portIngressList = ['1']*(len(deviceDPIDsCopy) - 1)
- intentIdList = []
- main.log.info( "MACsDict" + str(main.MACsDict) )
- time1 = time.time()
- for i in xrange(0,len(deviceDPIDsCopy),int(main.numCtrls)):
- pool = []
- for cli in main.CLIs:
- egressDevice = deviceDPIDsCopy[i]
- ingressDeviceList = copy.copy(deviceDPIDsCopy)
- ingressDeviceList.remove(egressDevice)
- if i >= len( deviceDPIDsCopy ):
- break
- t = main.Thread( target=cli.addMultipointToSinglepointIntent,
- threadID=main.threadID,
- name="addMultipointToSinglepointIntent",
- args =[ingressDeviceList,egressDevice,portIngressList,'1','','',main.MACsDict.get(egressDevice)])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append(thread.result)
- time2 = time.time()
- main.log.info("Time for adding point intents: %2f seconds" %(time2-time1))
-
- main.step("Verify intents are installed")
- # Giving onos multiple chances to install intents
- for i in range( main.intentCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info("Waiting for onos to install intents...")
- time.sleep( main.checkIntentsDelay )
-
- intentState = main.TRUE
- for e in range(int(main.numCtrls)):
- main.log.info( "Checking intents on CLI %s" % (e+1) )
- IntentStateIndividual = main.CLIs[e].checkIntentState( intentsId=intentIdList )
- if not IntentStateIndividual:
- main.log.warn( "Not all intents installed on ONOS%s" % (e+1) )
- intentState = intentState and IntentStateIndividual
- if intentState:
- break
- if not intentState:
- #Dumping intent summary
- main.log.info( "**** Intent Summary ****\n" + str(main.ONOScli1.intents( jsonFormat=False, summary=True)) )
-
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step("Verify flows are all added")
-
- for i in range( main.flowCheck ):
- if i != 0:
- main.log.warn( "verification failed. Retrying..." )
- main.log.info( "Waiting for onos to add flows..." )
- time.sleep( main.checkFlowsDelay )
-
- flowState = main.TRUE
- for cli in main.CLIs:
- flowState = cli.checkFlowState()
- if not flowState:
- main.log.warn( "Not all flows added" )
- if flowState:
- break
- else:
- #Dumping summary
- main.log.info( "Summary:\n" + str( main.ONOScli1.summary(jsonFormat=False) ) )
-
- utilities.assert_equals( expect=main.TRUE, actual=flowState,
- onpass="FLOWS INSTALLED",
- onfail="SOME FLOWS NOT ADDED" )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- caseResult = ( checkFlowsState and pingResult and intentState )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 25 multi to single point Intents and Ping All test PASS",
- onfail="Install 25 multi to single point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not checkFlowsState:
- main.log.debug( "Flows failed to add completely" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE96( self ):
- """
- Install single-multi point intents and verify Ping all works
- for att topology
- """
- import copy
- main.log.report( "Install single-multi point intents and verify Ping all" )
- main.log.report( "___________________________________________" )
- main.case( "Install single-multi point intents and Ping all" )
- deviceDPIDsCopy = copy.copy(main.deviceDPIDs)
- portEgressList = ['1']*(len(deviceDPIDsCopy) - 1)
- intentIdList = []
- main.log.info( "MACsDict" + str(main.MACsDict) )
- time1 = time.time()
- for i in xrange(0,len(deviceDPIDsCopy),int(main.numCtrls)):
- pool = []
- for cli in main.CLIs:
- ingressDevice = deviceDPIDsCopy[i]
- egressDeviceList = copy.copy(deviceDPIDsCopy)
- egressDeviceList.remove(ingressDevice)
- if i >= len( deviceDPIDsCopy ):
- break
- t = main.Thread( target=cli.addSinglepointToMultipointIntent,
- threadID=main.threadID,
- name="addSinglepointToMultipointIntent",
- args =[ingressDevice,egressDeviceList,'1',portEgressList,'',main.MACsDict.get(ingressDevice)])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append(thread.result)
- time2 = time.time()
- main.log.info("Time for adding point intents: %2f seconds" %(time2-time1))
-
- main.step("Verify intents are installed")
- # Giving onos multiple chances to install intents
- for i in range( main.intentCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info("Waiting for onos to install intents...")
- time.sleep( main.checkIntentsDelay )
-
- intentState = main.TRUE
- for e in range(int(main.numCtrls)):
- main.log.info( "Checking intents on CLI %s" % (e+1) )
- IntentStateIndividual = main.CLIs[e].checkIntentState( intentsId=intentIdList )
- if not IntentStateIndividual:
- main.log.warn( "Not all intents installed on ONOS%s" % (e+1) )
- intentState = intentState and IntentStateIndividual
- if intentState:
- break
- if not intentState:
- #Dumping intent summary
- main.log.info( "**** Intent Summary ****\n" + str(main.ONOScli1.intents( jsonFormat=False, summary=True)) )
-
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step("Verify flows are all added")
-
- for i in range( main.flowCheck ):
- if i != 0:
- main.log.warn( "verification failed. Retrying..." )
- main.log.info( "Waiting for onos to add flows..." )
- time.sleep( main.checkFlowsDelay )
-
- flowState = main.TRUE
- for cli in main.CLIs:
- flowState = cli.checkFlowState()
- if not flowState:
- main.log.warn( "Not all flows added" )
- if flowState:
- break
- else:
- #Dumping summary
- main.log.info( "Summary:\n" + str( main.ONOScli1.summary(jsonFormat=False) ) )
-
- utilities.assert_equals( expect=main.TRUE, actual=flowState,
- onpass="FLOWS INSTALLED",
- onfail="SOME FLOWS NOT ADDED" )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- caseResult = ( pingResult and intentState and flowState)
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 25 single to multi point Intents and Ping All test PASS",
- onfail="Install 25 single to multi point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not checkFlowsState:
- main.log.debug( "Flows failed to add completely" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE97( self ):
- """
- Install single-multi point intents and verify Ping all works
- for Chordal topology
- """
- import copy
- main.log.report( "Install single-multi point intents and verify Ping all" )
- main.log.report( "___________________________________________" )
- main.case( "Install single-multi point intents and Ping all" )
- deviceDPIDsCopy = copy.copy(main.deviceDPIDs)
- portEgressList = ['1']*(len(deviceDPIDsCopy) - 1)
- intentIdList = []
- main.log.info( "MACsDict" + str(main.MACsDict) )
- time1 = time.time()
- for i in xrange(0,len(deviceDPIDsCopy),int(main.numCtrls)):
- pool = []
- for cli in main.CLIs:
- ingressDevice = deviceDPIDsCopy[i]
- egressDeviceList = copy.copy(deviceDPIDsCopy)
- egressDeviceList.remove(ingressDevice)
- if i >= len( deviceDPIDsCopy ):
- break
- t = main.Thread( target=cli.addSinglepointToMultipointIntent,
- threadID=main.threadID,
- name="addSinglepointToMultipointIntent",
- args =[ingressDevice,egressDeviceList,'1',portEgressList,'',main.MACsDict.get(ingressDevice),''])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append(thread.result)
- time2 = time.time()
- main.log.info("Time for adding point intents: %2f seconds" %(time2-time1))
-
- main.step("Verify intents are installed")
- # Giving onos multiple chances to install intents
- for i in range( main.intentCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info("Waiting for onos to install intents...")
- time.sleep( main.checkIntentsDelay )
-
- intentState = main.TRUE
- for e in range(int(main.numCtrls)):
- main.log.info( "Checking intents on CLI %s" % (e+1) )
- IntentStateIndividual = main.CLIs[e].checkIntentState( intentsId=intentIdList )
- if not IntentStateIndividual:
- main.log.warn( "Not all intents installed on ONOS%s" % (e+1) )
- intentState = intentState and IntentStateIndividual
- if intentState:
- break
- if not intentState:
- #Dumping intent summary
- main.log.info( "**** Intent Summary ****\n" + str(main.ONOScli1.intents( jsonFormat=False, summary=True)) )
-
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step("Verify flows are all added")
-
- for i in range( main.flowCheck ):
- if i != 0:
- main.log.warn( "verification failed. Retrying..." )
- main.log.info( "Waiting for onos to add flows..." )
- time.sleep( main.checkFlowsDelay )
-
- flowState = main.TRUE
- for cli in main.CLIs:
- flowState = cli.checkFlowState()
- if not flowState:
- main.log.warn( "Not all flows added" )
- if flowState:
- break
- else:
- #Dumping summary
- main.log.info( "Summary:\n" + str( main.ONOScli1.summary(jsonFormat=False) ) )
-
- utilities.assert_equals( expect=main.TRUE, actual=flowState,
- onpass="FLOWS INSTALLED",
- onfail="SOME FLOWS NOT ADDED" )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- caseResult = ( pingResult and intentState and flowState)
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 25 single to multi point Intents and Ping All test PASS",
- onfail="Install 25 single to multi point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not checkFlowsState:
- main.log.debug( "Flows failed to add completely" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE98( self ):
- """
- Install single-multi point intents and verify Ping all works
- for Spine topology
- """
- import copy
- main.log.report( "Install single-multi point intents and verify Ping all" )
- main.log.report( "___________________________________________" )
- main.case( "Install single-multi point intents and Ping all" )
- deviceDPIDsCopy = copy.copy( main.deviceDPIDs )
- deviceDPIDsCopy = deviceDPIDsCopy[ 10: ]
- portEgressList = [ '1' ]*(len(deviceDPIDsCopy) - 1)
- intentIdList = []
- MACsDictCopy = {}
- for i in range( len( deviceDPIDsCopy ) ):
- MACsDictCopy[ deviceDPIDsCopy[ i ] ] = main.hostMACs[i].split( '/' )[ 0 ]
-
- main.log.info( "deviceDPIDsCopy" + str(deviceDPIDsCopy) )
- main.log.info( "MACsDictCopy" + str(MACsDictCopy) )
- time1 = time.time()
- for i in xrange(0,len(deviceDPIDsCopy),int(main.numCtrls)):
- pool = []
- for cli in main.CLIs:
- if i >= len( deviceDPIDsCopy ):
- break
- ingressDevice = deviceDPIDsCopy[i]
- egressDeviceList = copy.copy(deviceDPIDsCopy)
- egressDeviceList.remove(ingressDevice)
- t = main.Thread( target=cli.addSinglepointToMultipointIntent,
- threadID=main.threadID,
- name="addSinglepointToMultipointIntent",
- args =[ingressDevice,egressDeviceList,'1',portEgressList,'',MACsDictCopy.get(ingressDevice),''])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append(thread.result)
- time2 = time.time()
- main.log.info("Time for adding point intents: %2f seconds" %(time2-time1))
-
- main.step("Verify intents are installed")
- # Giving onos multiple chances to install intents
- for i in range( main.intentCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info("Waiting for onos to install intents...")
- time.sleep( main.checkIntentsDelay )
-
- intentState = main.TRUE
- for e in range(int(main.numCtrls)):
- main.log.info( "Checking intents on CLI %s" % (e+1) )
- IntentStateIndividual = main.CLIs[e].checkIntentState( intentsId=intentIdList )
- if not IntentStateIndividual:
- main.log.warn( "Not all intents installed on ONOS%s" % (e+1) )
- intentState = intentState and IntentStateIndividual
- if intentState:
- break
- if not intentState:
- #Dumping intent summary
- main.log.info( "**** Intent Summary ****\n" + str(main.ONOScli1.intents( jsonFormat=False, summary=True)) )
-
- utilities.assert_equals( expect=main.TRUE, actual=intentState,
- onpass="INTENTS INSTALLED",
- onfail="SOME INTENTS NOT INSTALLED" )
-
- main.step("Verify flows are all added")
-
- for i in range( main.flowCheck ):
- if i != 0:
- main.log.warn( "verification failed. Retrying..." )
- main.log.info( "Waiting for onos to add flows..." )
- time.sleep( main.checkFlowsDelay )
-
- flowState = main.TRUE
- for cli in main.CLIs:
- flowState = cli.checkFlowState()
- if not flowState:
- main.log.warn( "Not all flows added" )
- if flowState:
- break
- else:
- #Dumping summary
- main.log.info( "Summary:\n" + str( main.ONOScli1.summary(jsonFormat=False) ) )
-
- utilities.assert_equals( expect=main.TRUE, actual=flowState,
- onpass="FLOWS INSTALLED",
- onfail="SOME FLOWS NOT ADDED" )
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- caseResult = ( pingResult and intentState and flowState)
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="Install 25 single to multi point Intents and Ping All test PASS",
- onfail="Install 25 single to multi point Intents and Ping All test FAIL" )
-
- if not intentState:
- main.log.debug( "Intents failed to install completely" )
- if not pingResult:
- main.log.debug( "Pingall failed" )
- if not checkFlowsState:
- main.log.debug( "Flows failed to add completely" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE190( self ):
- """
- Verify IPv6 ping across 600 Point intents (Att Topology)
- """
- main.log.report( "Verify IPv6 ping across 600 Point intents (Att Topology)" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all 600 Point intents" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 600 Point intents test PASS",
- onfail="IPv6 Ping across 600 Point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE191( self ):
- """
- Verify IPv6 ping across 600 Point intents (Chordal Topology)
- """
- main.log.report( "Verify IPv6 ping across 600 Point intents (Chordal Topology)" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all 600 Point intents" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 600 Point intents test PASS",
- onfail="IPv6 Ping across 600 Point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE192( self ):
- """
- Verify IPv6 ping across 4556 Point intents (Spine Topology)
- """
- main.log.report( "Verify IPv6 ping across 4556 Point intents (Spine Topology)" )
- main.log.report( "_________________________________________________" )
- main.case( "IPv6 ping all 4556 Point intents" )
-
- main.step( "Verify IPv6 Ping across all hosts" )
- pingResult = main.CHOtestFunctions.checkPingall( protocol="IPv6" )
- utilities.assert_equals( expect=main.TRUE,
- actual=pingResult,
- onpass="PING ALL PASS",
- onfail="PING ALL FAIL" )
-
- caseResult = pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=caseResult,
- onpass="IPv6 Ping across 4556 Point intents test PASS",
- onfail="IPv6 Ping across 4556 Point intents test FAIL" )
-
- if not caseResult and main.failSwitch:
- main.log.report("Stopping test")
- main.stop( email=main.emailOnStop )
-
- def CASE10( self ):
- import time
- import re
- """
- Remove all Intents
- """
- main.log.report( "Remove all intents that were installed previously" )
- main.log.report( "______________________________________________" )
- main.log.info( "Remove all intents" )
- main.case( "Removing intents" )
- purgeDelay = int( main.params[ "timers" ][ "IntentPurgeDelay" ] )
- main.step( "Obtain the intent id's first" )
- intentsList = main.ONOScli1.getAllIntentIds()
- ansi_escape = re.compile( r'\x1b[^m]*m' )
- intentsList = ansi_escape.sub( '', intentsList )
- intentsList = intentsList.replace(
- " onos:intents | grep id=",
- "" ).replace(
- "id=",
- "" ).replace(
- "\r\r",
- "" )
- intentsList = intentsList.splitlines()
- intentIdList = []
- step1Result = main.TRUE
- moreIntents = main.TRUE
- removeIntentCount = 0
- intentsCount = len(intentsList)
- main.log.info ( "Current number of intents: " + str(intentsCount) )
-
- main.step( "Remove all installed intents" )
- if ( len( intentsList ) > 1 ):
- results = main.TRUE
- main.log.info("Removing intent...")
- while moreIntents:
- # This is a work around only: cycle through intents removal for up to 5 times.
- if removeIntentCount == 5:
- break
- removeIntentCount = removeIntentCount + 1
- intentsList1 = main.ONOScli1.getAllIntentIds()
- if len( intentsList1 ) == 0:
- break
- ansi_escape = re.compile( r'\x1b[^m]*m' )
- intentsList1 = ansi_escape.sub( '', intentsList1 )
- intentsList1 = intentsList1.replace(
- " onos:intents | grep id=",
- "" ).replace(
- " state=",
- "" ).replace(
- "\r\r",
- "" )
- intentsList1 = intentsList1.splitlines()
- main.log.info ( "Round %d intents to remove: " %(removeIntentCount) )
- print intentsList1
- intentIdList1 = []
- if ( len( intentsList1 ) > 0 ):
- moreIntents = main.TRUE
- for i in range( len( intentsList1 ) ):
- intentsTemp1 = intentsList1[ i ].split( ',' )
- intentIdList1.append( intentsTemp1[ 0 ].split('=')[1] )
- main.log.info ( "Leftover Intent IDs: " + str(intentIdList1) )
- main.log.info ( "Length of Leftover Intents list: " + str(len(intentIdList1)) )
- time1 = time.time()
- for i in xrange( 0, len( intentIdList1 ), int(main.numCtrls) ):
- pool = []
- for cli in main.CLIs:
- if i >= len( intentIdList1 ):
- break
- t = main.Thread( target=cli.removeIntent,
- threadID=main.threadID,
- name="removeIntent",
- args=[intentIdList1[i],'org.onosproject.cli',False,False])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append(thread.result)
- #time.sleep(2)
- time2 = time.time()
- main.log.info("Time for removing host intents: %2f seconds" %(time2-time1))
- time.sleep( purgeDelay )
- main.log.info("Purging WITHDRAWN Intents")
- purgeResult = main.ONOScli1.purgeWithdrawnIntents()
- else:
- time.sleep(10)
- if len( main.ONOScli1.intents()):
- continue
- break
- time.sleep( purgeDelay )
- else:
- print "Removed %d intents" %(intentsCount)
- step1Result = main.TRUE
- else:
- print "No Intent IDs found in Intents list: ", intentsList
- step1Result = main.FALSE
-
- print main.ONOScli1.intents()
-
- main.log.info( main.ONOScli1.summary( jsonFormat=False ) )
- caseResult = step1Result
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Intent removal test successful",
- onfail="Intent removal test failed" )
-
- def CASE12( self, main ):
- """
- Enable onos-app-ifwd, Verify Intent based Reactive forwarding through ping all and Disable it
- """
- import re
- import copy
- import time
-
- threadID = 0
-
- main.log.report( "Enable Intent based Reactive forwarding and Verify ping all" )
- main.log.report( "_____________________________________________________" )
- main.case( "Enable Intent based Reactive forwarding and Verify ping all" )
- main.step( "Enable intent based Reactive forwarding" )
- installResult = main.FALSE
- feature = "onos-app-ifwd"
-
- pool = []
- time1 = time.time()
- for cli,feature in main.CLIs:
- t = main.Thread(target=cli,threadID=threadID,
- name="featureInstall",args=[feature])
- pool.append(t)
- t.start()
- threadID = threadID + 1
-
- results = []
- for thread in pool:
- thread.join()
- results.append(thread.result)
- time2 = time.time()
-
- if( all(result == main.TRUE for result in results) == False):
- main.log.info("Did not install onos-app-ifwd feature properly")
- #main.cleanup()
- #main.exit()
- else:
- main.log.info("Successful feature:install onos-app-ifwd")
- installResult = main.TRUE
- main.log.info("Time for feature:install onos-app-ifwd: %2f seconds" %(time2-time1))
-
- main.step( "Verify Ping across all hosts" )
- for i in range(main.numPings):
- time1 = time.time()
- pingResult = main.Mininet1.pingall(timeout=main.pingTimeout)
- if not pingResult:
- main.log.warn("First pingall failed. Retrying...")
- time.sleep(main.pingSleep)
- else: break
-
- time2 = time.time()
- timeDiff = round( ( time2 - time1 ), 2 )
- main.log.report(
- "Time taken for Ping All: " +
- str( timeDiff ) +
- " seconds" )
-
- if pingResult == main.TRUE:
- main.log.report( "Pingall Test in Reactive mode successful" )
- else:
- main.log.report( "Pingall Test in Reactive mode failed" )
-
- main.step( "Disable Intent based Reactive forwarding" )
- uninstallResult = main.FALSE
-
- pool = []
- time1 = time.time()
- for cli,feature in main.CLIs:
- t = main.Thread(target=cli,threadID=threadID,
- name="featureUninstall",args=[feature])
- pool.append(t)
- t.start()
- threadID = threadID + 1
-
- results = []
- for thread in pool:
- thread.join()
- results.append(thread.result)
- time2 = time.time()
-
- if( all(result == main.TRUE for result in results) == False):
- main.log.info("Did not uninstall onos-app-ifwd feature properly")
- uninstallResult = main.FALSE
- #main.cleanup()
- #main.exit()
- else:
- main.log.info("Successful feature:uninstall onos-app-ifwd")
- uninstallResult = main.TRUE
- main.log.info("Time for feature:uninstall onos-app-ifwd: %2f seconds" %(time2-time1))
-
- # Waiting for reative flows to be cleared.
- time.sleep( 10 )
-
- caseResult = installResult and pingResult and uninstallResult
- utilities.assert_equals( expect=main.TRUE, actual=caseResult,
- onpass="Intent based Reactive forwarding Pingall test PASS",
- onfail="Intent based Reactive forwarding Pingall test FAIL" )
diff --git a/TestON/tests/CHOtest/CHOtest.topo b/TestON/tests/CHOtest/CHOtest.topo
deleted file mode 100644
index 8053e31..0000000
--- a/TestON/tests/CHOtest/CHOtest.topo
+++ /dev/null
@@ -1,50 +0,0 @@
-<TOPOLOGY>
- <COMPONENT>
-
- <ONOSbench>
- <host>localhost</host>
- <user>admin</user>
- <password></password>
- <type>OnosDriver</type>
- <connect_order>1</connect_order>
- <COMPONENTS> </COMPONENTS>
- </ONOSbench>
-
- <ONOScli1>
- <host>localhost</host>
- <user>admin</user>
- <password></password>
- <type>OnosCliDriver</type>
- <connect_order>2</connect_order>
- <COMPONENTS> </COMPONENTS>
- </ONOScli1>
-
- <ONOScli2>
- <host>localhost</host>
- <user>admin</user>
- <password></password>
- <type>OnosCliDriver</type>
- <connect_order>3</connect_order>
- <COMPONENTS> </COMPONENTS>
- </ONOScli2>
-
- <ONOScli3>
- <host>localhost</host>
- <user>admin</user>
- <password></password>
- <type>OnosCliDriver</type>
- <connect_order>4</connect_order>
- <COMPONENTS> </COMPONENTS>
- </ONOScli3>
-
- <Mininet1>
- <host>OCN</host>
- <user>admin</user>
- <password></password>
- <type>MininetCliDriver</type>
- <connect_order>12</connect_order>
- <COMPONENTS> </COMPONENTS>
- </Mininet1>
-
- </COMPONENT>
-</TOPOLOGY>
\ No newline at end of file
diff --git a/TestON/tests/CHOtest/Dependencies/CHOtestFunctions.py b/TestON/tests/CHOtest/Dependencies/CHOtestFunctions.py
deleted file mode 100644
index 7441a5b..0000000
--- a/TestON/tests/CHOtest/Dependencies/CHOtestFunctions.py
+++ /dev/null
@@ -1,152 +0,0 @@
-"""
-Wrapper functions for CHOtest
-Author: you@onlab.us
-"""
-
-def __init__( self ):
- self.default = ''
-
-def installHostIntents():
- """
- Install one host intent for each combination of hosts in the topology
- """
- import itertools
- import time
-
- hostCombos = list( itertools.combinations( main.hostMACs, 2 ) )
- intentIdList = []
- for i in xrange( 0, len( hostCombos ), int( main.numCtrls ) ):
- pool = []
- for cli in main.CLIs:
- if i >= len( hostCombos ):
- break
- t = main.Thread( target=cli.addHostIntent,
- threadID=main.threadID,
- name="addHostIntent",
- args=[hostCombos[i][0],
- hostCombos[i][1]])
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append( thread.result )
-
- return intentIdList
-
-def installPointIntents():
- """
- Install one point intent for each permutation of devices in the topology
- """
- import itertools
- import time
-
- if main.prefix == 2:
- # Spine-leaf topology is a special case
- for i in range( len( main.hostMACs ) ):
- main.MACsDict[ main.deviceDPIDs[ i+10 ] ] = main.hostMACs[ i ].split('/')[0]
- deviceCombos = list( itertools.permutations( main.deviceDPIDs[10:], 2 ) )
- else:
- deviceCombos = list( itertools.permutations( main.deviceDPIDs, 2 ) )
- intentIdList = []
- time1 = time.time()
- for i in xrange( 0, len( deviceCombos ), int( main.numCtrls ) ):
- pool = []
- for cli in main.CLIs:
- if i >= len( deviceCombos ):
- break
- t = main.Thread( target=cli.addPointIntent,
- threadID=main.threadID,
- name="addPointIntent",
- args=[ deviceCombos[i][0],
- deviceCombos[i][1],
- 1, 1, '',
- main.MACsDict.get( deviceCombos[i][0] ),
- main.MACsDict.get( deviceCombos[i][1] ) ] )
- pool.append(t)
- t.start()
- i = i + 1
- main.threadID = main.threadID + 1
- for thread in pool:
- thread.join()
- intentIdList.append( thread.result )
- time2 = time.time()
- main.log.info("Time taken for adding point intents: %2f seconds" %( time2 - time1 ) )
-
- return intentIdList
-
-def checkIntents():
- """
- Check if all the intents are in INSTALLED state
- """
- import time
-
- intentResult = main.TRUE
- for i in range( main.intentCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info("Waiting for onos to install intents...")
- time.sleep( main.checkIntentsDelay )
-
- intentResult = main.TRUE
- for e in range(int(main.numCtrls)):
- main.log.info( "Checking intents on CLI %s" % (e+1) )
- intentResultIndividual = main.CLIs[e].checkIntentState( intentsId=main.intentIds )
- if not intentResultIndividual:
- main.log.warn( "Not all intents installed on ONOS%s" % (e+1) )
- intentResult = intentResult and intentResultIndividual
- if intentResult:
- break
- if not intentResult:
- main.log.info( "**** Intent Summary ****\n" + str(main.ONOScli1.intents( jsonFormat=False, summary=True)) )
-
- return intentResult
-
-def checkPingall( protocol="IPv4" ):
- """
- Verify ping across all hosts
- """
- import time
-
- pingResult = main.TRUE
- for i in range( main.numPings ):
- if i != 0:
- main.log.warn( "Pingall failed. Retrying..." )
- main.log.info( "Giving ONOS some time...")
- time.sleep( main.pingSleep )
-
- pingResult = main.Mininet1.pingall( protocol=protocol, timeout=main.pingTimeout )
- if pingResult:
- break
-
- return pingResult
-
-def checkLinkEvents( linkEvent, linkNum ):
- """
- Verify link down/up events are correctly discovered by ONOS
- linkNum: the correct link number after link down/up
- """
- import time
-
- linkResult = main.TRUE
- for i in range( main.linkCheck ):
- if i != 0:
- main.log.warn( "Verification failed. Retrying..." )
- main.log.info( "Giving ONOS some time..." )
- time.sleep( main.linkSleep )
-
- linkResult = main.TRUE
- for e in range( int( main.numCtrls ) ):
- main.log.info( "Checking link number on ONOS%s" % (e+1) )
- topology_output = main.CLIs[e].topology()
- linkResultIndividual = main.ONOSbench.checkStatus( topology_output,
- main.numMNswitches,
- str( linkNum ) )
- if not linkResultIndividual:
- main.log.warn( "Link %s not discovered by ONOS%s" % ( linkEvent, (e+1) ) )
- linkResult = linkResult and linkResultIndividual
- if linkResult:
- break
-
- return linkResult
diff --git a/TestON/tests/CHOtest/Dependencies/topoAtt.py b/TestON/tests/CHOtest/Dependencies/topoAtt.py
deleted file mode 100755
index 4291f8b..0000000
--- a/TestON/tests/CHOtest/Dependencies/topoAtt.py
+++ /dev/null
@@ -1,182 +0,0 @@
-#!/usr/bin/python
-
-"""
-Custom topology for Mininet
-"""
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import RemoteController
-from mininet.node import Node
-from mininet.node import CPULimitedHost
-from mininet.link import TCLink
-from mininet.cli import CLI
-from mininet.log import setLogLevel
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class attTopo( Topo ):
-
- def __init__( self, **opts ):
- "Create a topology."
-
- # Initialize Topology
- Topo.__init__( self, **opts )
-
- # add nodes, switches first...
- NY54 = self.addSwitch( 's1' )
- CMBR = self.addSwitch( 's2' )
- CHCG = self.addSwitch( 's3' )
- CLEV = self.addSwitch( 's4' )
- RLGH = self.addSwitch( 's5' )
- ATLN = self.addSwitch( 's6' )
- PHLA = self.addSwitch( 's7' )
- WASH = self.addSwitch( 's8' )
- NSVL = self.addSwitch( 's9' )
- STLS = self.addSwitch( 's10' )
- NWOR = self.addSwitch( 's11' )
- HSTN = self.addSwitch( 's12' )
- SNAN = self.addSwitch( 's13' )
- DLLS = self.addSwitch( 's14' )
- ORLD = self.addSwitch( 's15' )
- DNVR = self.addSwitch( 's16' )
- KSCY = self.addSwitch( 's17' )
- SNFN = self.addSwitch( 's18' )
- SCRM = self.addSwitch( 's19' )
- PTLD = self.addSwitch( 's20' )
- STTL = self.addSwitch( 's21' )
- SLKC = self.addSwitch( 's22' )
- LA03 = self.addSwitch( 's23' )
- SNDG = self.addSwitch( 's24' )
- PHNX = self.addSwitch( 's25' )
-
- # ... and now hosts
- NY54_host = self.addHost( 'h1' )
- CMBR_host = self.addHost( 'h2' )
- CHCG_host = self.addHost( 'h3' )
- CLEV_host = self.addHost( 'h4' )
- RLGH_host = self.addHost( 'h5' )
- ATLN_host = self.addHost( 'h6' )
- PHLA_host = self.addHost( 'h7' )
- WASH_host = self.addHost( 'h8' )
- NSVL_host = self.addHost( 'h9' )
- STLS_host = self.addHost( 'h10' )
- NWOR_host = self.addHost( 'h11' )
- HSTN_host = self.addHost( 'h12' )
- SNAN_host = self.addHost( 'h13' )
- DLLS_host = self.addHost( 'h14' )
- ORLD_host = self.addHost( 'h15' )
- DNVR_host = self.addHost( 'h16' )
- KSCY_host = self.addHost( 'h17' )
- SNFN_host = self.addHost( 'h18' )
- SCRM_host = self.addHost( 'h19' )
- PTLD_host = self.addHost( 'h20' )
- STTL_host = self.addHost( 'h21' )
- SLKC_host = self.addHost( 'h22' )
- LA03_host = self.addHost( 'h23' )
- SNDG_host = self.addHost( 'h24' )
- PHNX_host = self.addHost( 'h25' )
-
- # add edges between switch and corresponding host
- self.addLink( NY54 , NY54_host )
- self.addLink( CMBR , CMBR_host )
- self.addLink( CHCG , CHCG_host )
- self.addLink( CLEV , CLEV_host )
- self.addLink( RLGH , RLGH_host )
- self.addLink( ATLN , ATLN_host )
- self.addLink( PHLA , PHLA_host )
- self.addLink( WASH , WASH_host )
- self.addLink( NSVL , NSVL_host )
- self.addLink( STLS , STLS_host )
- self.addLink( NWOR , NWOR_host )
- self.addLink( HSTN , HSTN_host )
- self.addLink( SNAN , SNAN_host )
- self.addLink( DLLS , DLLS_host )
- self.addLink( ORLD , ORLD_host )
- self.addLink( DNVR , DNVR_host )
- self.addLink( KSCY , KSCY_host )
- self.addLink( SNFN , SNFN_host )
- self.addLink( SCRM , SCRM_host )
- self.addLink( PTLD , PTLD_host )
- self.addLink( STTL , STTL_host )
- self.addLink( SLKC , SLKC_host )
- self.addLink( LA03 , LA03_host )
- self.addLink( SNDG , SNDG_host )
- self.addLink( PHNX , PHNX_host )
-
- # add edges between switches
- self.addLink( NY54 , CMBR, bw=10, delay='0.979030824185ms')
- self.addLink( NY54 , CHCG, bw=10, delay='0.806374975652ms')
- self.addLink( NY54 , PHLA, bw=10, delay='0.686192970166ms')
- self.addLink( NY54 , WASH, bw=10, delay='0.605826192092ms')
- self.addLink( CMBR , PHLA, bw=10, delay='1.4018238197ms')
- self.addLink( CHCG , CLEV, bw=10, delay='0.232315346482ms')
- self.addLink( CHCG , PHLA, bw=10, delay='1.07297714274ms')
- self.addLink( CHCG , STLS, bw=10, delay='1.12827896944ms')
- self.addLink( CHCG , DNVR, bw=10, delay='1.35964770335ms')
- self.addLink( CHCG , KSCY, bw=10, delay='1.5199778541ms')
- self.addLink( CHCG , SNFN, bw=10, delay='0.620743405435ms')
- self.addLink( CHCG , STTL, bw=10, delay='0.93027212534ms')
- self.addLink( CHCG , SLKC, bw=10, delay='0.735621751348ms')
- self.addLink( CLEV , NSVL, bw=10, delay='0.523419372248ms')
- self.addLink( CLEV , STLS, bw=10, delay='1.00360290845ms')
- self.addLink( CLEV , PHLA, bw=10, delay='0.882912133249ms')
- self.addLink( RLGH , ATLN, bw=10, delay='1.1644489729ms')
- self.addLink( RLGH , WASH, bw=10, delay='1.48176810502ms')
- self.addLink( ATLN , WASH, bw=10, delay='0.557636936322ms')
- self.addLink( ATLN , NSVL, bw=10, delay='1.32869749865ms')
- self.addLink( ATLN , STLS, bw=10, delay='0.767705554748ms')
- self.addLink( ATLN , DLLS, bw=10, delay='0.544782086448ms')
- self.addLink( ATLN , ORLD, bw=10, delay='1.46119152532ms')
- self.addLink( PHLA , WASH, bw=10, delay='0.372209320106ms')
- self.addLink( NSVL , STLS, bw=10, delay='1.43250491305ms')
- self.addLink( NSVL , DLLS, bw=10, delay='1.67698215288ms')
- self.addLink( STLS , DLLS, bw=10, delay='0.256389964194ms')
- self.addLink( STLS , KSCY, bw=10, delay='0.395511571791ms')
- self.addLink( STLS , LA03, bw=10, delay='0.257085227363ms')
- self.addLink( NWOR , HSTN, bw=10, delay='0.0952906633914ms')
- self.addLink( NWOR , DLLS, bw=10, delay='1.60231329739ms')
- self.addLink( NWOR , ORLD, bw=10, delay='0.692731063896ms')
- self.addLink( HSTN , SNAN, bw=10, delay='0.284150653798ms')
- self.addLink( HSTN , DLLS, bw=10, delay='1.65690128332ms')
- self.addLink( HSTN , ORLD, bw=10, delay='0.731886304782ms')
- self.addLink( SNAN , PHNX, bw=10, delay='1.34258627257ms')
- self.addLink( SNAN , DLLS, bw=10, delay='1.50063532341ms')
- self.addLink( DLLS , DNVR, bw=10, delay='0.251471593235ms')
- self.addLink( DLLS , KSCY, bw=10, delay='0.18026026737ms')
- self.addLink( DLLS , SNFN, bw=10, delay='0.74304274592ms')
- self.addLink( DLLS , LA03, bw=10, delay='0.506439293357ms')
- self.addLink( DNVR , KSCY, bw=10, delay='0.223328790403ms')
- self.addLink( DNVR , SNFN, bw=10, delay='0.889017541903ms')
- self.addLink( DNVR , SLKC, bw=10, delay='0.631898982721ms')
- self.addLink( KSCY , SNFN, bw=10, delay='0.922778522233ms')
- self.addLink( SNFN , SCRM, bw=10, delay='0.630352278097ms')
- self.addLink( SNFN , PTLD, bw=10, delay='0.828572513655ms')
- self.addLink( SNFN , STTL, bw=10, delay='1.54076081649ms')
- self.addLink( SNFN , SLKC, bw=10, delay='0.621507502625ms')
- self.addLink( SNFN , LA03, bw=10, delay='0.602936230151ms')
- self.addLink( SCRM , SLKC, bw=10, delay='0.461350343644ms')
- self.addLink( PTLD , STTL, bw=10, delay='1.17591515181ms')
- self.addLink( SLKC , LA03, bw=10, delay='0.243225267023ms')
- self.addLink( LA03 , SNDG, bw=10, delay='0.681264950821ms')
- self.addLink( LA03 , PHNX, bw=10, delay='0.343709457969ms')
- self.addLink( SNDG , PHNX, bw=10, delay='0.345064487693ms')
-
-topos = { 'att': ( lambda: attTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
- "Create network"
- topo = attTopo()
- #if controller_ip == '':
- #controller_ip = '10.0.2.2';
- # controller_ip = '127.0.0.1';
- network = Mininet(topo=topo, link=TCLink, autoSetMacs=True, controller=None)
- network.start()
- CLI( network )
- network.stop()
-
-if __name__ == '__main__':
- setLogLevel('info')
- #setLogLevel('debug')
- setupNetwork()
diff --git a/TestON/tests/CHOtest/Dependencies/topoAttIpv6.py b/TestON/tests/CHOtest/Dependencies/topoAttIpv6.py
deleted file mode 100755
index f9a103c..0000000
--- a/TestON/tests/CHOtest/Dependencies/topoAttIpv6.py
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/python
-
-"""
-Custom topology for Mininet
-"""
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import Host, RemoteController
-from mininet.node import Node
-from mininet.node import CPULimitedHost
-from mininet.link import TCLink
-from mininet.cli import CLI
-from mininet.log import setLogLevel
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class dualStackHost( Host ):
- def config( self, v6Addr='1000:1/64', **params ):
- r = super( Host, self ).config( **params )
- intf = self.defaultIntf()
- self.cmd( 'ip -6 addr add %s dev %s' % ( v6Addr, intf ) )
- return r
-
-class attTopo( Topo ):
-
- def __init__( self, **opts ):
- "Create a topology."
-
- # Initialize Topology
- Topo.__init__( self, **opts )
-
- NY54 = self.addSwitch( 's1' )
- CMBR = self.addSwitch( 's2' )
- CHCG = self.addSwitch( 's3' )
- CLEV = self.addSwitch( 's4' )
- RLGH = self.addSwitch( 's5' )
- ATLN = self.addSwitch( 's6' )
- PHLA = self.addSwitch( 's7' )
- WASH = self.addSwitch( 's8' )
- NSVL = self.addSwitch( 's9' )
- STLS = self.addSwitch( 's10' )
- NWOR = self.addSwitch( 's11' )
- HSTN = self.addSwitch( 's12' )
- SNAN = self.addSwitch( 's13' )
- DLLS = self.addSwitch( 's14' )
- ORLD = self.addSwitch( 's15' )
- DNVR = self.addSwitch( 's16' )
- KSCY = self.addSwitch( 's17' )
- SNFN = self.addSwitch( 's18' )
- SCRM = self.addSwitch( 's19' )
- PTLD = self.addSwitch( 's20' )
- STTL = self.addSwitch( 's21' )
- SLKC = self.addSwitch( 's22' )
- LA03 = self.addSwitch( 's23' )
- SNDG = self.addSwitch( 's24' )
- PHNX = self.addSwitch( 's25' )
-
- # ... and now hosts
- NY54_host = self.addHost( 'h1', ip='10.1.0.1/24', cls=dualStackHost, v6Addr='1000::1/64' )
- CMBR_host = self.addHost( 'h2', ip='10.1.0.2/24', cls=dualStackHost, v6Addr='1000::2/64' )
- CHCG_host = self.addHost( 'h3', ip='10.1.0.3/24', cls=dualStackHost, v6Addr='1000::3/64' )
- CLEV_host = self.addHost( 'h4', ip='10.1.0.4/24', cls=dualStackHost, v6Addr='1000::4/64' )
- RLGH_host = self.addHost( 'h5', ip='10.1.0.5/24', cls=dualStackHost, v6Addr='1000::5/64' )
- ATLN_host = self.addHost( 'h6', ip='10.1.0.6/24', cls=dualStackHost, v6Addr='1000::6/64' )
- PHLA_host = self.addHost( 'h7', ip='10.1.0.7/24', cls=dualStackHost, v6Addr='1000::7/64' )
- WASH_host = self.addHost( 'h8', ip='10.1.0.8/24', cls=dualStackHost, v6Addr='1000::8/64' )
- NSVL_host = self.addHost( 'h9', ip='10.1.0.9/24', cls=dualStackHost, v6Addr='1000::9/64' )
- STLS_host = self.addHost( 'h10', ip='10.1.0.10/24', cls=dualStackHost, v6Addr='1000::10/64' )
- NWOR_host = self.addHost( 'h11', ip='10.1.0.11/24', cls=dualStackHost, v6Addr='1000::11/64' )
- HSTN_host = self.addHost( 'h12', ip='10.1.0.12/24', cls=dualStackHost, v6Addr='1000::12/64' )
- SNAN_host = self.addHost( 'h13', ip='10.1.0.13/24', cls=dualStackHost, v6Addr='1000::13/64' )
- DLLS_host = self.addHost( 'h14', ip='10.1.0.14/24', cls=dualStackHost, v6Addr='1000::14/64' )
- ORLD_host = self.addHost( 'h15', ip='10.1.0.15/24', cls=dualStackHost, v6Addr='1000::15/64' )
- DNVR_host = self.addHost( 'h16', ip='10.1.0.16/24', cls=dualStackHost, v6Addr='1000::16/64' )
- KSCY_host = self.addHost( 'h17', ip='10.1.0.17/24', cls=dualStackHost, v6Addr='1000::17/64' )
- SNFN_host = self.addHost( 'h18', ip='10.1.0.18/24', cls=dualStackHost, v6Addr='1000::18/64' )
- SCRM_host = self.addHost( 'h19', ip='10.1.0.19/24', cls=dualStackHost, v6Addr='1000::19/64' )
- PTLD_host = self.addHost( 'h20', ip='10.1.0.20/24', cls=dualStackHost, v6Addr='1000::20/64' )
- STTL_host = self.addHost( 'h21', ip='10.1.0.21/24', cls=dualStackHost, v6Addr='1000::21/64' )
- SLKC_host = self.addHost( 'h22', ip='10.1.0.22/24', cls=dualStackHost, v6Addr='1000::22/64' )
- LA03_host = self.addHost( 'h23', ip='10.1.0.23/24', cls=dualStackHost, v6Addr='1000::23/64' )
- SNDG_host = self.addHost( 'h24', ip='10.1.0.24/24', cls=dualStackHost, v6Addr='1000::24/64' )
- PHNX_host = self.addHost( 'h25', ip='10.1.0.25/24', cls=dualStackHost, v6Addr='1000::25/64' )
-
- # add edges between switch and corresponding host
- self.addLink( NY54 , NY54_host )
- self.addLink( CMBR , CMBR_host )
- self.addLink( CHCG , CHCG_host )
- self.addLink( CLEV , CLEV_host )
- self.addLink( RLGH , RLGH_host )
- self.addLink( ATLN , ATLN_host )
- self.addLink( PHLA , PHLA_host )
- self.addLink( WASH , WASH_host )
- self.addLink( NSVL , NSVL_host )
- self.addLink( STLS , STLS_host )
- self.addLink( NWOR , NWOR_host )
- self.addLink( HSTN , HSTN_host )
- self.addLink( SNAN , SNAN_host )
- self.addLink( DLLS , DLLS_host )
- self.addLink( ORLD , ORLD_host )
- self.addLink( DNVR , DNVR_host )
- self.addLink( KSCY , KSCY_host )
- self.addLink( SNFN , SNFN_host )
- self.addLink( SCRM , SCRM_host )
- self.addLink( PTLD , PTLD_host )
- self.addLink( STTL , STTL_host )
- self.addLink( SLKC , SLKC_host )
- self.addLink( LA03 , LA03_host )
- self.addLink( SNDG , SNDG_host )
- self.addLink( PHNX , PHNX_host )
-
- # add edges between switches
- self.addLink( NY54 , CMBR, bw=10, delay='0.979030824185ms')
- self.addLink( NY54 , CHCG, bw=10, delay='0.806374975652ms')
- self.addLink( NY54 , PHLA, bw=10, delay='0.686192970166ms')
- self.addLink( NY54 , WASH, bw=10, delay='0.605826192092ms')
- self.addLink( CMBR , PHLA, bw=10, delay='1.4018238197ms')
- self.addLink( CHCG , CLEV, bw=10, delay='0.232315346482ms')
- self.addLink( CHCG , PHLA, bw=10, delay='1.07297714274ms')
- self.addLink( CHCG , STLS, bw=10, delay='1.12827896944ms')
- self.addLink( CHCG , DNVR, bw=10, delay='1.35964770335ms')
- self.addLink( CHCG , KSCY, bw=10, delay='1.5199778541ms')
- self.addLink( CHCG , SNFN, bw=10, delay='0.620743405435ms')
- self.addLink( CHCG , STTL, bw=10, delay='0.93027212534ms')
- self.addLink( CHCG , SLKC, bw=10, delay='0.735621751348ms')
- self.addLink( CLEV , NSVL, bw=10, delay='0.523419372248ms')
- self.addLink( CLEV , STLS, bw=10, delay='1.00360290845ms')
- self.addLink( CLEV , PHLA, bw=10, delay='0.882912133249ms')
- self.addLink( RLGH , ATLN, bw=10, delay='1.1644489729ms')
- self.addLink( RLGH , WASH, bw=10, delay='1.48176810502ms')
- self.addLink( ATLN , WASH, bw=10, delay='0.557636936322ms')
- self.addLink( ATLN , NSVL, bw=10, delay='1.32869749865ms')
- self.addLink( ATLN , STLS, bw=10, delay='0.767705554748ms')
- self.addLink( ATLN , DLLS, bw=10, delay='0.544782086448ms')
- self.addLink( ATLN , ORLD, bw=10, delay='1.46119152532ms')
- self.addLink( PHLA , WASH, bw=10, delay='0.372209320106ms')
- self.addLink( NSVL , STLS, bw=10, delay='1.43250491305ms')
- self.addLink( NSVL , DLLS, bw=10, delay='1.67698215288ms')
- self.addLink( STLS , DLLS, bw=10, delay='0.256389964194ms')
- self.addLink( STLS , KSCY, bw=10, delay='0.395511571791ms')
- self.addLink( STLS , LA03, bw=10, delay='0.257085227363ms')
- self.addLink( NWOR , HSTN, bw=10, delay='0.0952906633914ms')
- self.addLink( NWOR , DLLS, bw=10, delay='1.60231329739ms')
- self.addLink( NWOR , ORLD, bw=10, delay='0.692731063896ms')
- self.addLink( HSTN , SNAN, bw=10, delay='0.284150653798ms')
- self.addLink( HSTN , DLLS, bw=10, delay='1.65690128332ms')
- self.addLink( HSTN , ORLD, bw=10, delay='0.731886304782ms')
- self.addLink( SNAN , PHNX, bw=10, delay='1.34258627257ms')
- self.addLink( SNAN , DLLS, bw=10, delay='1.50063532341ms')
- self.addLink( DLLS , DNVR, bw=10, delay='0.251471593235ms')
- self.addLink( DLLS , KSCY, bw=10, delay='0.18026026737ms')
- self.addLink( DLLS , SNFN, bw=10, delay='0.74304274592ms')
- self.addLink( DLLS , LA03, bw=10, delay='0.506439293357ms')
- self.addLink( DNVR , KSCY, bw=10, delay='0.223328790403ms')
- self.addLink( DNVR , SNFN, bw=10, delay='0.889017541903ms')
- self.addLink( DNVR , SLKC, bw=10, delay='0.631898982721ms')
- self.addLink( KSCY , SNFN, bw=10, delay='0.922778522233ms')
- self.addLink( SNFN , SCRM, bw=10, delay='0.630352278097ms')
- self.addLink( SNFN , PTLD, bw=10, delay='0.828572513655ms')
- self.addLink( SNFN , STTL, bw=10, delay='1.54076081649ms')
- self.addLink( SNFN , SLKC, bw=10, delay='0.621507502625ms')
- self.addLink( SNFN , LA03, bw=10, delay='0.602936230151ms')
- self.addLink( SCRM , SLKC, bw=10, delay='0.461350343644ms')
- self.addLink( PTLD , STTL, bw=10, delay='1.17591515181ms')
- self.addLink( SLKC , LA03, bw=10, delay='0.243225267023ms')
- self.addLink( LA03 , SNDG, bw=10, delay='0.681264950821ms')
- self.addLink( LA03 , PHNX, bw=10, delay='0.343709457969ms')
- self.addLink( SNDG , PHNX, bw=10, delay='0.345064487693ms')
-
-topos = { 'att': ( lambda: attTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
- "Create network"
- topo = attTopo()
- #if controller_ip == '':
- #controller_ip = '10.0.2.2';
- # controller_ip = '127.0.0.1';
- network = Mininet(topo=topo, link=TCLink, autoSetMacs=True, controller=None)
- network.start()
- CLI( network )
- network.stop()
-
-if __name__ == '__main__':
- setLogLevel('info')
- #setLogLevel('debug')
- setupNetwork()
diff --git a/TestON/tests/CHOtest/Dependencies/topoChordal.py b/TestON/tests/CHOtest/Dependencies/topoChordal.py
deleted file mode 100755
index 542c3ed..0000000
--- a/TestON/tests/CHOtest/Dependencies/topoChordal.py
+++ /dev/null
@@ -1,422 +0,0 @@
-#!/usr/bin/python
-"""
-"""
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import RemoteController
-from mininet.node import Node
-from mininet.node import CPULimitedHost
-from mininet.link import TCLink
-from mininet.cli import CLI
-from mininet.log import setLogLevel
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class chordalTopo( Topo ):
-
- def __init__( self, **opts ):
- "Create a topology."
-
- # Initialize Topology
- Topo.__init__( self, **opts )
-
- # add nodes, switches first...
- s1 = self.addSwitch( 's1' )
- s2 = self.addSwitch( 's2' )
- s3 = self.addSwitch( 's3' )
- s4 = self.addSwitch( 's4' )
- s5 = self.addSwitch( 's5' )
- s6 = self.addSwitch( 's6' )
- s7 = self.addSwitch( 's7' )
- s8 = self.addSwitch( 's8' )
- s9 = self.addSwitch( 's9' )
- s10 = self.addSwitch( 's10' )
- s11 = self.addSwitch( 's11' )
- s12 = self.addSwitch( 's12' )
- s13 = self.addSwitch( 's13' )
- s14 = self.addSwitch( 's14' )
- s15 = self.addSwitch( 's15' )
- s16 = self.addSwitch( 's16' )
- s17 = self.addSwitch( 's17' )
- s18 = self.addSwitch( 's18' )
- s19 = self.addSwitch( 's19' )
- s20 = self.addSwitch( 's20' )
- s21 = self.addSwitch( 's21' )
- s22 = self.addSwitch( 's22' )
- s23 = self.addSwitch( 's23' )
- s24 = self.addSwitch( 's24' )
- s25 = self.addSwitch( 's25' )
-
- # ... and now hosts
- s1_host = self.addHost( 'h1' )
- s2_host = self.addHost( 'h2' )
- s3_host = self.addHost( 'h3' )
- s4_host = self.addHost( 'h4' )
- s5_host = self.addHost( 'h5' )
- s6_host = self.addHost( 'h6' )
- s7_host = self.addHost( 'h7' )
- s8_host = self.addHost( 'h8' )
- s9_host = self.addHost( 'h9' )
- s10_host = self.addHost( 'h10' )
- s11_host = self.addHost( 'h11' )
- s12_host = self.addHost( 'h12' )
- s13_host = self.addHost( 'h13' )
- s14_host = self.addHost( 'h14' )
- s15_host = self.addHost( 'h15' )
- s16_host = self.addHost( 'h16' )
- s17_host = self.addHost( 'h17' )
- s18_host = self.addHost( 'h18' )
- s19_host = self.addHost( 'h19' )
- s20_host = self.addHost( 'h20' )
- s21_host = self.addHost( 'h21' )
- s22_host = self.addHost( 'h22' )
- s23_host = self.addHost( 'h23' )
- s24_host = self.addHost( 'h24' )
- s25_host = self.addHost( 'h25' )
-
- # add edges between switch and corresponding host
- self.addLink( s1 , s1_host )
- self.addLink( s2 , s2_host )
- self.addLink( s3 , s3_host )
- self.addLink( s4 , s4_host )
- self.addLink( s5 , s5_host )
- self.addLink( s6 , s6_host )
- self.addLink( s7 , s7_host )
- self.addLink( s8 , s8_host )
- self.addLink( s9 , s9_host )
- self.addLink( s10 , s10_host )
- self.addLink( s11 , s11_host )
- self.addLink( s12 , s12_host )
- self.addLink( s13 , s13_host )
- self.addLink( s14 , s14_host )
- self.addLink( s15 , s15_host )
- self.addLink( s16 , s16_host )
- self.addLink( s17 , s17_host )
- self.addLink( s18 , s18_host )
- self.addLink( s19 , s19_host )
- self.addLink( s20 , s20_host )
- self.addLink( s21 , s21_host )
- self.addLink( s22 , s22_host )
- self.addLink( s23 , s23_host )
- self.addLink( s24 , s24_host )
- self.addLink( s25 , s25_host )
- self.addLink(s1, s2)
- self.addLink(s1, s3)
- self.addLink(s1, s4)
- self.addLink(s1, s5)
- self.addLink(s1, s6)
- self.addLink(s1, s7)
- self.addLink(s1, s8)
- self.addLink(s1, s9)
- self.addLink(s1, s10)
- self.addLink(s1, s11)
- self.addLink(s1, s12)
- self.addLink(s1, s13)
- self.addLink(s1, s14)
- self.addLink(s1, s15)
- self.addLink(s1, s16)
- self.addLink(s1, s17)
- self.addLink(s1, s18)
- self.addLink(s1, s19)
- self.addLink(s1, s20)
- self.addLink(s1, s21)
- self.addLink(s1, s22)
- self.addLink(s1, s23)
- self.addLink(s1, s24)
- self.addLink(s1, s25)
- self.addLink(s2, s3)
- self.addLink(s2, s4)
- self.addLink(s2, s5)
- self.addLink(s2, s6)
- self.addLink(s2, s7)
- self.addLink(s2, s8)
- self.addLink(s2, s9)
- self.addLink(s2, s10)
- self.addLink(s2, s11)
- self.addLink(s2, s12)
- self.addLink(s2, s13)
- self.addLink(s2, s14)
- self.addLink(s2, s15)
- self.addLink(s2, s16)
- self.addLink(s2, s17)
- self.addLink(s2, s18)
- self.addLink(s2, s19)
- self.addLink(s2, s20)
- self.addLink(s2, s21)
- self.addLink(s2, s22)
- self.addLink(s2, s23)
- self.addLink(s2, s24)
- self.addLink(s2, s25)
- self.addLink(s3, s4)
- self.addLink(s3, s5)
- self.addLink(s3, s6)
- self.addLink(s3, s7)
- self.addLink(s3, s8)
- self.addLink(s3, s9)
- self.addLink(s3, s10)
- self.addLink(s3, s11)
- self.addLink(s3, s12)
- self.addLink(s3, s13)
- self.addLink(s3, s14)
- self.addLink(s3, s15)
- self.addLink(s3, s16)
- self.addLink(s3, s17)
- self.addLink(s3, s18)
- self.addLink(s3, s19)
- self.addLink(s3, s20)
- self.addLink(s3, s21)
- self.addLink(s3, s22)
- self.addLink(s3, s23)
- self.addLink(s3, s24)
- self.addLink(s3, s25)
- self.addLink(s4, s5)
- self.addLink(s4, s6)
- self.addLink(s4, s7)
- self.addLink(s4, s8)
- self.addLink(s4, s9)
- self.addLink(s4, s10)
- self.addLink(s4, s11)
- self.addLink(s4, s12)
- self.addLink(s4, s13)
- self.addLink(s4, s14)
- self.addLink(s4, s15)
- self.addLink(s4, s16)
- self.addLink(s4, s17)
- self.addLink(s4, s18)
- self.addLink(s4, s19)
- self.addLink(s4, s20)
- self.addLink(s4, s21)
- self.addLink(s4, s22)
- self.addLink(s4, s23)
- self.addLink(s4, s24)
- self.addLink(s4, s25)
- self.addLink(s5, s6)
- self.addLink(s5, s7)
- self.addLink(s5, s8)
- self.addLink(s5, s9)
- self.addLink(s5, s10)
- self.addLink(s5, s11)
- self.addLink(s5, s12)
- self.addLink(s5, s13)
- self.addLink(s5, s14)
- self.addLink(s5, s15)
- self.addLink(s5, s16)
- self.addLink(s5, s17)
- self.addLink(s5, s18)
- self.addLink(s5, s19)
- self.addLink(s5, s20)
- self.addLink(s5, s21)
- self.addLink(s5, s22)
- self.addLink(s5, s23)
- self.addLink(s5, s24)
- self.addLink(s5, s25)
- self.addLink(s6, s7)
- self.addLink(s6, s8)
- self.addLink(s6, s9)
- self.addLink(s6, s10)
- self.addLink(s6, s11)
- self.addLink(s6, s12)
- self.addLink(s6, s13)
- self.addLink(s6, s14)
- self.addLink(s6, s15)
- self.addLink(s6, s16)
- self.addLink(s6, s17)
- self.addLink(s6, s18)
- self.addLink(s6, s19)
- self.addLink(s6, s20)
- self.addLink(s6, s21)
- self.addLink(s6, s22)
- self.addLink(s6, s23)
- self.addLink(s6, s24)
- self.addLink(s6, s25)
- self.addLink(s7, s8)
- self.addLink(s7, s9)
- self.addLink(s7, s10)
- self.addLink(s7, s11)
- self.addLink(s7, s12)
- self.addLink(s7, s13)
- self.addLink(s7, s14)
- self.addLink(s7, s15)
- self.addLink(s7, s16)
- self.addLink(s7, s17)
- self.addLink(s7, s18)
- self.addLink(s7, s19)
- self.addLink(s7, s20)
- self.addLink(s7, s21)
- self.addLink(s7, s22)
- self.addLink(s7, s23)
- self.addLink(s7, s24)
- self.addLink(s7, s25)
- self.addLink(s8, s9)
- self.addLink(s8, s10)
- self.addLink(s8, s11)
- self.addLink(s8, s12)
- self.addLink(s8, s13)
- self.addLink(s8, s14)
- self.addLink(s8, s15)
- self.addLink(s8, s16)
- self.addLink(s8, s17)
- self.addLink(s8, s18)
- self.addLink(s8, s19)
- self.addLink(s8, s20)
- self.addLink(s8, s21)
- self.addLink(s8, s22)
- self.addLink(s8, s23)
- self.addLink(s8, s24)
- self.addLink(s8, s25)
- self.addLink(s9, s10)
- self.addLink(s9, s11)
- self.addLink(s9, s12)
- self.addLink(s9, s13)
- self.addLink(s9, s14)
- self.addLink(s9, s15)
- self.addLink(s9, s16)
- self.addLink(s9, s17)
- self.addLink(s9, s18)
- self.addLink(s9, s19)
- self.addLink(s9, s20)
- self.addLink(s9, s21)
- self.addLink(s9, s22)
- self.addLink(s9, s23)
- self.addLink(s9, s24)
- self.addLink(s9, s25)
- self.addLink(s10, s11)
- self.addLink(s10, s12)
- self.addLink(s10, s13)
- self.addLink(s10, s14)
- self.addLink(s10, s15)
- self.addLink(s10, s16)
- self.addLink(s10, s17)
- self.addLink(s10, s18)
- self.addLink(s10, s19)
- self.addLink(s10, s20)
- self.addLink(s10, s21)
- self.addLink(s10, s22)
- self.addLink(s10, s23)
- self.addLink(s10, s24)
- self.addLink(s10, s25)
- self.addLink(s11, s12)
- self.addLink(s11, s13)
- self.addLink(s11, s14)
- self.addLink(s11, s15)
- self.addLink(s11, s16)
- self.addLink(s11, s17)
- self.addLink(s11, s18)
- self.addLink(s11, s19)
- self.addLink(s11, s20)
- self.addLink(s11, s21)
- self.addLink(s11, s22)
- self.addLink(s11, s23)
- self.addLink(s11, s24)
- self.addLink(s11, s25)
- self.addLink(s12, s13)
- self.addLink(s12, s14)
- self.addLink(s12, s15)
- self.addLink(s12, s16)
- self.addLink(s12, s17)
- self.addLink(s12, s18)
- self.addLink(s12, s19)
- self.addLink(s12, s20)
- self.addLink(s12, s21)
- self.addLink(s12, s22)
- self.addLink(s12, s23)
- self.addLink(s12, s24)
- self.addLink(s12, s25)
- self.addLink(s13, s14)
- self.addLink(s13, s15)
- self.addLink(s13, s16)
- self.addLink(s13, s17)
- self.addLink(s13, s18)
- self.addLink(s13, s19)
- self.addLink(s13, s20)
- self.addLink(s13, s21)
- self.addLink(s13, s22)
- self.addLink(s13, s23)
- self.addLink(s13, s24)
- self.addLink(s13, s25)
- self.addLink(s14, s15)
- self.addLink(s14, s16)
- self.addLink(s14, s17)
- self.addLink(s14, s18)
- self.addLink(s14, s19)
- self.addLink(s14, s20)
- self.addLink(s14, s21)
- self.addLink(s14, s22)
- self.addLink(s14, s23)
- self.addLink(s14, s24)
- self.addLink(s14, s25)
- self.addLink(s15, s16)
- self.addLink(s15, s17)
- self.addLink(s15, s18)
- self.addLink(s15, s19)
- self.addLink(s15, s20)
- self.addLink(s15, s21)
- self.addLink(s15, s22)
- self.addLink(s15, s23)
- self.addLink(s15, s24)
- self.addLink(s15, s25)
- self.addLink(s16, s17)
- self.addLink(s16, s18)
- self.addLink(s16, s19)
- self.addLink(s16, s20)
- self.addLink(s16, s21)
- self.addLink(s16, s22)
- self.addLink(s16, s23)
- self.addLink(s16, s24)
- self.addLink(s16, s25)
- self.addLink(s17, s18)
- self.addLink(s17, s19)
- self.addLink(s17, s20)
- self.addLink(s17, s21)
- self.addLink(s17, s22)
- self.addLink(s17, s23)
- self.addLink(s17, s24)
- self.addLink(s17, s25)
- self.addLink(s18, s19)
- self.addLink(s18, s20)
- self.addLink(s18, s21)
- self.addLink(s18, s22)
- self.addLink(s18, s23)
- self.addLink(s18, s24)
- self.addLink(s18, s25)
- self.addLink(s19, s20)
- self.addLink(s19, s21)
- self.addLink(s19, s22)
- self.addLink(s19, s23)
- self.addLink(s19, s24)
- self.addLink(s19, s25)
- self.addLink(s20, s21)
- self.addLink(s20, s22)
- self.addLink(s20, s23)
- self.addLink(s20, s24)
- self.addLink(s20, s25)
- self.addLink(s21, s22)
- self.addLink(s21, s23)
- self.addLink(s21, s24)
- self.addLink(s21, s25)
- self.addLink(s22, s23)
- self.addLink(s22, s24)
- self.addLink(s22, s25)
- self.addLink(s23, s24)
- self.addLink(s23, s25)
- self.addLink(s24, s25)
-
-topos = { 'chordal': ( lambda: chordalTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
- "Create network"
- topo = chordalTopo()
- #if controller_ip == '':
- #controller_ip = '10.0.2.2';
- # controller_ip = '127.0.0.1';
- network = Mininet(topo=topo, switch=OVSSwitch,autoSetMacs=True, controller=None)
- network.start()
- CLI( network )
- network.stop()
-
-if __name__ == '__main__':
- setLogLevel('info')
- #setLogLevel('debug')
- setupNetwork()
diff --git a/TestON/tests/CHOtest/Dependencies/topoChordalIpv6.py b/TestON/tests/CHOtest/Dependencies/topoChordalIpv6.py
deleted file mode 100755
index cb065c2..0000000
--- a/TestON/tests/CHOtest/Dependencies/topoChordalIpv6.py
+++ /dev/null
@@ -1,428 +0,0 @@
-#!/usr/bin/python
-"""
-"""
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import Host, RemoteController
-from mininet.node import Node
-from mininet.node import CPULimitedHost
-from mininet.link import TCLink
-from mininet.cli import CLI
-from mininet.log import setLogLevel
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class dualStackHost( Host ):
- def config( self, v6Addr='1000:1/64', **params ):
- r = super( Host, self ).config( **params )
- intf = self.defaultIntf()
- self.cmd( 'ip -6 addr add %s dev %s' % ( v6Addr, intf ) )
- return r
-
-class chordalTopo( Topo ):
-
- def __init__( self, **opts ):
- "Create a topology."
-
- # Initialize Topology
- Topo.__init__( self, **opts )
-
- s1 = self.addSwitch( 's1' )
- s2 = self.addSwitch( 's2' )
- s3 = self.addSwitch( 's3' )
- s4 = self.addSwitch( 's4' )
- s5 = self.addSwitch( 's5' )
- s6 = self.addSwitch( 's6' )
- s7 = self.addSwitch( 's7' )
- s8 = self.addSwitch( 's8' )
- s9 = self.addSwitch( 's9' )
- s10 = self.addSwitch( 's10' )
- s11 = self.addSwitch( 's11' )
- s12 = self.addSwitch( 's12' )
- s13 = self.addSwitch( 's13' )
- s14 = self.addSwitch( 's14' )
- s15 = self.addSwitch( 's15' )
- s16 = self.addSwitch( 's16' )
- s17 = self.addSwitch( 's17' )
- s18 = self.addSwitch( 's18' )
- s19 = self.addSwitch( 's19' )
- s20 = self.addSwitch( 's20' )
- s21 = self.addSwitch( 's21' )
- s22 = self.addSwitch( 's22' )
- s23 = self.addSwitch( 's23' )
- s24 = self.addSwitch( 's24' )
- s25 = self.addSwitch( 's25' )
-
- # ... and now hosts
- s1_host = self.addHost( 'h1', ip='10.1.0.1/24', cls=dualStackHost, v6Addr='1000::1/64' )
- s2_host = self.addHost( 'h2', ip='10.1.0.2/24', cls=dualStackHost, v6Addr='1000::2/64' )
- s3_host = self.addHost( 'h3', ip='10.1.0.3/24', cls=dualStackHost, v6Addr='1000::3/64' )
- s4_host = self.addHost( 'h4', ip='10.1.0.4/24', cls=dualStackHost, v6Addr='1000::4/64' )
- s5_host = self.addHost( 'h5', ip='10.1.0.5/24', cls=dualStackHost, v6Addr='1000::5/64' )
- s6_host = self.addHost( 'h6', ip='10.1.0.6/24', cls=dualStackHost, v6Addr='1000::6/64' )
- s7_host = self.addHost( 'h7', ip='10.1.0.7/24', cls=dualStackHost, v6Addr='1000::7/64' )
- s8_host = self.addHost( 'h8', ip='10.1.0.8/24', cls=dualStackHost, v6Addr='1000::8/64' )
- s9_host = self.addHost( 'h9', ip='10.1.0.9/24', cls=dualStackHost, v6Addr='1000::9/64' )
- s10_host = self.addHost( 'h10', ip='10.1.0.10/24', cls=dualStackHost, v6Addr='1000::10/64' )
- s11_host = self.addHost( 'h11', ip='10.1.0.11/24', cls=dualStackHost, v6Addr='1000::11/64' )
- s12_host = self.addHost( 'h12', ip='10.1.0.12/24', cls=dualStackHost, v6Addr='1000::12/64' )
- s13_host = self.addHost( 'h13', ip='10.1.0.13/24', cls=dualStackHost, v6Addr='1000::13/64' )
- s14_host = self.addHost( 'h14', ip='10.1.0.14/24', cls=dualStackHost, v6Addr='1000::14/64' )
- s15_host = self.addHost( 'h15', ip='10.1.0.15/24', cls=dualStackHost, v6Addr='1000::15/64' )
- s16_host = self.addHost( 'h16', ip='10.1.0.16/24', cls=dualStackHost, v6Addr='1000::16/64' )
- s17_host = self.addHost( 'h17', ip='10.1.0.17/24', cls=dualStackHost, v6Addr='1000::17/64' )
- s18_host = self.addHost( 'h18', ip='10.1.0.18/24', cls=dualStackHost, v6Addr='1000::18/64' )
- s19_host = self.addHost( 'h19', ip='10.1.0.19/24', cls=dualStackHost, v6Addr='1000::19/64' )
- s20_host = self.addHost( 'h20', ip='10.1.0.20/24', cls=dualStackHost, v6Addr='1000::20/64' )
- s21_host = self.addHost( 'h21', ip='10.1.0.21/24', cls=dualStackHost, v6Addr='1000::21/64' )
- s22_host = self.addHost( 'h22', ip='10.1.0.22/24', cls=dualStackHost, v6Addr='1000::22/64' )
- s23_host = self.addHost( 'h23', ip='10.1.0.23/24', cls=dualStackHost, v6Addr='1000::23/64' )
- s24_host = self.addHost( 'h24', ip='10.1.0.24/24', cls=dualStackHost, v6Addr='1000::24/64' )
- s25_host = self.addHost( 'h25', ip='10.1.0.25/24', cls=dualStackHost, v6Addr='1000::25/64' )
-
- # add edges between switch and corresponding host
- self.addLink( s1 , s1_host )
- self.addLink( s2 , s2_host )
- self.addLink( s3 , s3_host )
- self.addLink( s4 , s4_host )
- self.addLink( s5 , s5_host )
- self.addLink( s6 , s6_host )
- self.addLink( s7 , s7_host )
- self.addLink( s8 , s8_host )
- self.addLink( s9 , s9_host )
- self.addLink( s10 , s10_host )
- self.addLink( s11 , s11_host )
- self.addLink( s12 , s12_host )
- self.addLink( s13 , s13_host )
- self.addLink( s14 , s14_host )
- self.addLink( s15 , s15_host )
- self.addLink( s16 , s16_host )
- self.addLink( s17 , s17_host )
- self.addLink( s18 , s18_host )
- self.addLink( s19 , s19_host )
- self.addLink( s20 , s20_host )
- self.addLink( s21 , s21_host )
- self.addLink( s22 , s22_host )
- self.addLink( s23 , s23_host )
- self.addLink( s24 , s24_host )
- self.addLink( s25 , s25_host )
- self.addLink(s1, s2)
- self.addLink(s1, s3)
- self.addLink(s1, s4)
- self.addLink(s1, s5)
- self.addLink(s1, s6)
- self.addLink(s1, s7)
- self.addLink(s1, s8)
- self.addLink(s1, s9)
- self.addLink(s1, s10)
- self.addLink(s1, s11)
- self.addLink(s1, s12)
- self.addLink(s1, s13)
- self.addLink(s1, s14)
- self.addLink(s1, s15)
- self.addLink(s1, s16)
- self.addLink(s1, s17)
- self.addLink(s1, s18)
- self.addLink(s1, s19)
- self.addLink(s1, s20)
- self.addLink(s1, s21)
- self.addLink(s1, s22)
- self.addLink(s1, s23)
- self.addLink(s1, s24)
- self.addLink(s1, s25)
- self.addLink(s2, s3)
- self.addLink(s2, s4)
- self.addLink(s2, s5)
- self.addLink(s2, s6)
- self.addLink(s2, s7)
- self.addLink(s2, s8)
- self.addLink(s2, s9)
- self.addLink(s2, s10)
- self.addLink(s2, s11)
- self.addLink(s2, s12)
- self.addLink(s2, s13)
- self.addLink(s2, s14)
- self.addLink(s2, s15)
- self.addLink(s2, s16)
- self.addLink(s2, s17)
- self.addLink(s2, s18)
- self.addLink(s2, s19)
- self.addLink(s2, s20)
- self.addLink(s2, s21)
- self.addLink(s2, s22)
- self.addLink(s2, s23)
- self.addLink(s2, s24)
- self.addLink(s2, s25)
- self.addLink(s3, s4)
- self.addLink(s3, s5)
- self.addLink(s3, s6)
- self.addLink(s3, s7)
- self.addLink(s3, s8)
- self.addLink(s3, s9)
- self.addLink(s3, s10)
- self.addLink(s3, s11)
- self.addLink(s3, s12)
- self.addLink(s3, s13)
- self.addLink(s3, s14)
- self.addLink(s3, s15)
- self.addLink(s3, s16)
- self.addLink(s3, s17)
- self.addLink(s3, s18)
- self.addLink(s3, s19)
- self.addLink(s3, s20)
- self.addLink(s3, s21)
- self.addLink(s3, s22)
- self.addLink(s3, s23)
- self.addLink(s3, s24)
- self.addLink(s3, s25)
- self.addLink(s4, s5)
- self.addLink(s4, s6)
- self.addLink(s4, s7)
- self.addLink(s4, s8)
- self.addLink(s4, s9)
- self.addLink(s4, s10)
- self.addLink(s4, s11)
- self.addLink(s4, s12)
- self.addLink(s4, s13)
- self.addLink(s4, s14)
- self.addLink(s4, s15)
- self.addLink(s4, s16)
- self.addLink(s4, s17)
- self.addLink(s4, s18)
- self.addLink(s4, s19)
- self.addLink(s4, s20)
- self.addLink(s4, s21)
- self.addLink(s4, s22)
- self.addLink(s4, s23)
- self.addLink(s4, s24)
- self.addLink(s4, s25)
- self.addLink(s5, s6)
- self.addLink(s5, s7)
- self.addLink(s5, s8)
- self.addLink(s5, s9)
- self.addLink(s5, s10)
- self.addLink(s5, s11)
- self.addLink(s5, s12)
- self.addLink(s5, s13)
- self.addLink(s5, s14)
- self.addLink(s5, s15)
- self.addLink(s5, s16)
- self.addLink(s5, s17)
- self.addLink(s5, s18)
- self.addLink(s5, s19)
- self.addLink(s5, s20)
- self.addLink(s5, s21)
- self.addLink(s5, s22)
- self.addLink(s5, s23)
- self.addLink(s5, s24)
- self.addLink(s5, s25)
- self.addLink(s6, s7)
- self.addLink(s6, s8)
- self.addLink(s6, s9)
- self.addLink(s6, s10)
- self.addLink(s6, s11)
- self.addLink(s6, s12)
- self.addLink(s6, s13)
- self.addLink(s6, s14)
- self.addLink(s6, s15)
- self.addLink(s6, s16)
- self.addLink(s6, s17)
- self.addLink(s6, s18)
- self.addLink(s6, s19)
- self.addLink(s6, s20)
- self.addLink(s6, s21)
- self.addLink(s6, s22)
- self.addLink(s6, s23)
- self.addLink(s6, s24)
- self.addLink(s6, s25)
- self.addLink(s7, s8)
- self.addLink(s7, s9)
- self.addLink(s7, s10)
- self.addLink(s7, s11)
- self.addLink(s7, s12)
- self.addLink(s7, s13)
- self.addLink(s7, s14)
- self.addLink(s7, s15)
- self.addLink(s7, s16)
- self.addLink(s7, s17)
- self.addLink(s7, s18)
- self.addLink(s7, s19)
- self.addLink(s7, s20)
- self.addLink(s7, s21)
- self.addLink(s7, s22)
- self.addLink(s7, s23)
- self.addLink(s7, s24)
- self.addLink(s7, s25)
- self.addLink(s8, s9)
- self.addLink(s8, s10)
- self.addLink(s8, s11)
- self.addLink(s8, s12)
- self.addLink(s8, s13)
- self.addLink(s8, s14)
- self.addLink(s8, s15)
- self.addLink(s8, s16)
- self.addLink(s8, s17)
- self.addLink(s8, s18)
- self.addLink(s8, s19)
- self.addLink(s8, s20)
- self.addLink(s8, s21)
- self.addLink(s8, s22)
- self.addLink(s8, s23)
- self.addLink(s8, s24)
- self.addLink(s8, s25)
- self.addLink(s9, s10)
- self.addLink(s9, s11)
- self.addLink(s9, s12)
- self.addLink(s9, s13)
- self.addLink(s9, s14)
- self.addLink(s9, s15)
- self.addLink(s9, s16)
- self.addLink(s9, s17)
- self.addLink(s9, s18)
- self.addLink(s9, s19)
- self.addLink(s9, s20)
- self.addLink(s9, s21)
- self.addLink(s9, s22)
- self.addLink(s9, s23)
- self.addLink(s9, s24)
- self.addLink(s9, s25)
- self.addLink(s10, s11)
- self.addLink(s10, s12)
- self.addLink(s10, s13)
- self.addLink(s10, s14)
- self.addLink(s10, s15)
- self.addLink(s10, s16)
- self.addLink(s10, s17)
- self.addLink(s10, s18)
- self.addLink(s10, s19)
- self.addLink(s10, s20)
- self.addLink(s10, s21)
- self.addLink(s10, s22)
- self.addLink(s10, s23)
- self.addLink(s10, s24)
- self.addLink(s10, s25)
- self.addLink(s11, s12)
- self.addLink(s11, s13)
- self.addLink(s11, s14)
- self.addLink(s11, s15)
- self.addLink(s11, s16)
- self.addLink(s11, s17)
- self.addLink(s11, s18)
- self.addLink(s11, s19)
- self.addLink(s11, s20)
- self.addLink(s11, s21)
- self.addLink(s11, s22)
- self.addLink(s11, s23)
- self.addLink(s11, s24)
- self.addLink(s11, s25)
- self.addLink(s12, s13)
- self.addLink(s12, s14)
- self.addLink(s12, s15)
- self.addLink(s12, s16)
- self.addLink(s12, s17)
- self.addLink(s12, s18)
- self.addLink(s12, s19)
- self.addLink(s12, s20)
- self.addLink(s12, s21)
- self.addLink(s12, s22)
- self.addLink(s12, s23)
- self.addLink(s12, s24)
- self.addLink(s12, s25)
- self.addLink(s13, s14)
- self.addLink(s13, s15)
- self.addLink(s13, s16)
- self.addLink(s13, s17)
- self.addLink(s13, s18)
- self.addLink(s13, s19)
- self.addLink(s13, s20)
- self.addLink(s13, s21)
- self.addLink(s13, s22)
- self.addLink(s13, s23)
- self.addLink(s13, s24)
- self.addLink(s13, s25)
- self.addLink(s14, s15)
- self.addLink(s14, s16)
- self.addLink(s14, s17)
- self.addLink(s14, s18)
- self.addLink(s14, s19)
- self.addLink(s14, s20)
- self.addLink(s14, s21)
- self.addLink(s14, s22)
- self.addLink(s14, s23)
- self.addLink(s14, s24)
- self.addLink(s14, s25)
- self.addLink(s15, s16)
- self.addLink(s15, s17)
- self.addLink(s15, s18)
- self.addLink(s15, s19)
- self.addLink(s15, s20)
- self.addLink(s15, s21)
- self.addLink(s15, s22)
- self.addLink(s15, s23)
- self.addLink(s15, s24)
- self.addLink(s15, s25)
- self.addLink(s16, s17)
- self.addLink(s16, s18)
- self.addLink(s16, s19)
- self.addLink(s16, s20)
- self.addLink(s16, s21)
- self.addLink(s16, s22)
- self.addLink(s16, s23)
- self.addLink(s16, s24)
- self.addLink(s16, s25)
- self.addLink(s17, s18)
- self.addLink(s17, s19)
- self.addLink(s17, s20)
- self.addLink(s17, s21)
- self.addLink(s17, s22)
- self.addLink(s17, s23)
- self.addLink(s17, s24)
- self.addLink(s17, s25)
- self.addLink(s18, s19)
- self.addLink(s18, s20)
- self.addLink(s18, s21)
- self.addLink(s18, s22)
- self.addLink(s18, s23)
- self.addLink(s18, s24)
- self.addLink(s18, s25)
- self.addLink(s19, s20)
- self.addLink(s19, s21)
- self.addLink(s19, s22)
- self.addLink(s19, s23)
- self.addLink(s19, s24)
- self.addLink(s19, s25)
- self.addLink(s20, s21)
- self.addLink(s20, s22)
- self.addLink(s20, s23)
- self.addLink(s20, s24)
- self.addLink(s20, s25)
- self.addLink(s21, s22)
- self.addLink(s21, s23)
- self.addLink(s21, s24)
- self.addLink(s21, s25)
- self.addLink(s22, s23)
- self.addLink(s22, s24)
- self.addLink(s22, s25)
- self.addLink(s23, s24)
- self.addLink(s23, s25)
- self.addLink(s24, s25)
-
-topos = { 'chordal': ( lambda: chordalTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
- "Create network"
- topo = chordalTopo()
- #if controller_ip == '':
- #controller_ip = '10.0.2.2';
- # controller_ip = '127.0.0.1';
- network = Mininet(topo=topo, switch=OVSSwitch,autoSetMacs=True, controller=None)
- network.start()
- CLI( network )
- network.stop()
-
-if __name__ == '__main__':
- setLogLevel('info')
- #setLogLevel('debug')
- setupNetwork()
diff --git a/TestON/tests/CHOtest/Dependencies/topoSpine.py b/TestON/tests/CHOtest/Dependencies/topoSpine.py
deleted file mode 100755
index 5787d93..0000000
--- a/TestON/tests/CHOtest/Dependencies/topoSpine.py
+++ /dev/null
@@ -1,434 +0,0 @@
-#!/usr/bin/python
-
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import Controller, RemoteController, OVSController
-from mininet.node import CPULimitedHost, Host, Node
-from mininet.cli import CLI
-from mininet.log import setLogLevel, info
-from mininet.link import TCLink, Intf
-from subprocess import call
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class spineTopo( Topo ):
-
- def __init__( self, **opts ):
- "Create a topology."
-
- # Initialize Topology
- Topo.__init__( self, **opts )
-
- # add nodes, Leaf switches
- s1 = self.addSwitch( 's1' )
- s2 = self.addSwitch( 's2' )
- s3 = self.addSwitch( 's3' )
- s4 = self.addSwitch( 's4' )
- s5 = self.addSwitch( 's5' )
- s6 = self.addSwitch( 's6' )
- s7 = self.addSwitch( 's7' )
- s8 = self.addSwitch( 's8' )
- s9 = self.addSwitch( 's9' )
- s10 = self.addSwitch( 's10' )
- s11 = self.addSwitch( 's11' )
- s12 = self.addSwitch( 's12' )
- s13 = self.addSwitch( 's13' )
- s14 = self.addSwitch( 's14' )
-
- # add nodes, Spine switches first...
- s15 = self.addSwitch( 's15' )
- s16 = self.addSwitch( 's16' )
- s17 = self.addSwitch( 's17' )
- s18 = self.addSwitch( 's18' )
- s19 = self.addSwitch( 's19' )
- s20 = self.addSwitch( 's20' )
- s21 = self.addSwitch( 's21' )
- s22 = self.addSwitch( 's22' )
- s23 = self.addSwitch( 's23' )
- s24 = self.addSwitch( 's24' )
- s25 = self.addSwitch( 's25' )
- s26 = self.addSwitch( 's26' )
- s27 = self.addSwitch( 's27' )
- s28 = self.addSwitch( 's28' )
- s29 = self.addSwitch( 's29' )
- s30 = self.addSwitch( 's30' )
- s31 = self.addSwitch( 's31' )
- s32 = self.addSwitch( 's32' )
- s33 = self.addSwitch( 's33' )
- s34 = self.addSwitch( 's34' )
- s35 = self.addSwitch( 's35' )
- s36 = self.addSwitch( 's36' )
- s37 = self.addSwitch( 's37' )
- s38 = self.addSwitch( 's38' )
- s39 = self.addSwitch( 's39' )
- s40 = self.addSwitch( 's40' )
- s41 = self.addSwitch( 's41' )
- s42 = self.addSwitch( 's42' )
- s43 = self.addSwitch( 's43' )
- s44 = self.addSwitch( 's44' )
- s45 = self.addSwitch( 's45' )
- s46 = self.addSwitch( 's46' )
- s47 = self.addSwitch( 's47' )
- s48 = self.addSwitch( 's48' )
- s49 = self.addSwitch( 's49' )
- s50 = self.addSwitch( 's50' )
- s51 = self.addSwitch( 's51' )
- s52 = self.addSwitch( 's52' )
- s53 = self.addSwitch( 's53' )
- s54 = self.addSwitch( 's54' )
- s55 = self.addSwitch( 's55' )
- s56 = self.addSwitch( 's56' )
- s57 = self.addSwitch( 's57' )
- s58 = self.addSwitch( 's58' )
- s59 = self.addSwitch( 's59' )
- s60 = self.addSwitch( 's60' )
- s61 = self.addSwitch( 's61' )
- s62 = self.addSwitch( 's62' )
- s63 = self.addSwitch( 's63' )
- s64 = self.addSwitch( 's64' )
- s65 = self.addSwitch( 's65' )
- s66 = self.addSwitch( 's66' )
- s67 = self.addSwitch( 's67' )
- s68 = self.addSwitch( 's68' )
- s69 = self.addSwitch( 's69' )
- s70 = self.addSwitch( 's70' )
- s71 = self.addSwitch( 's71' )
- s72 = self.addSwitch( 's72' )
- s73 = self.addSwitch( 's73' )
- s74 = self.addSwitch( 's74' )
- s75 = self.addSwitch( 's75' )
- s76 = self.addSwitch( 's76' )
- s77 = self.addSwitch( 's77' )
- s78 = self.addSwitch( 's78' )
-
- # ... and now hosts
- #s1_host = self.addHost( 'h1' )
- #s2_host = self.addHost( 'h2' )
- #s3_host = self.addHost( 'h3' )
- #s4_host = self.addHost( 'h4' )
- #s5_host = self.addHost( 'h5' )
- #s6_host = self.addHost( 'h6' )
- #s7_host = self.addHost( 'h7' )
- #s8_host = self.addHost( 'h8' )
- #s9_host = self.addHost( 'h9' )
- #s10_host = self.addHost( 'h10' )
- s11_host = self.addHost( 'h11' )
- s12_host = self.addHost( 'h12' )
- s13_host = self.addHost( 'h13' )
- s14_host = self.addHost( 'h14' )
- s15_host = self.addHost( 'h15' )
- s16_host = self.addHost( 'h16' )
- s17_host = self.addHost( 'h17' )
- s18_host = self.addHost( 'h18' )
- s19_host = self.addHost( 'h19' )
- s20_host = self.addHost( 'h20' )
- s21_host = self.addHost( 'h21' )
- s22_host = self.addHost( 'h22' )
- s23_host = self.addHost( 'h23' )
- s24_host = self.addHost( 'h24' )
- s25_host = self.addHost( 'h25' )
- s26_host = self.addHost( 'h26' )
- s27_host = self.addHost( 'h27' )
- s28_host = self.addHost( 'h28' )
- s29_host = self.addHost( 'h29' )
- s30_host = self.addHost( 'h30' )
- s31_host = self.addHost( 'h31' )
- s32_host = self.addHost( 'h32' )
- s33_host = self.addHost( 'h33' )
- s34_host = self.addHost( 'h34' )
- s35_host = self.addHost( 'h35' )
- s36_host = self.addHost( 'h36' )
- s37_host = self.addHost( 'h37' )
- s38_host = self.addHost( 'h38' )
- s39_host = self.addHost( 'h39' )
- s40_host = self.addHost( 'h40' )
- s41_host = self.addHost( 'h41' )
- s42_host = self.addHost( 'h42' )
- s43_host = self.addHost( 'h43' )
- s44_host = self.addHost( 'h44' )
- s45_host = self.addHost( 'h45' )
- s46_host = self.addHost( 'h46' )
- s47_host = self.addHost( 'h47' )
- s48_host = self.addHost( 'h48' )
- s49_host = self.addHost( 'h49' )
- s50_host = self.addHost( 'h50' )
- s51_host = self.addHost( 'h51' )
- s52_host = self.addHost( 'h52' )
- s53_host = self.addHost( 'h53' )
- s54_host = self.addHost( 'h54' )
- s55_host = self.addHost( 'h55' )
- s56_host = self.addHost( 'h56' )
- s57_host = self.addHost( 'h57' )
- s58_host = self.addHost( 'h58' )
- s59_host = self.addHost( 'h59' )
- s60_host = self.addHost( 'h60' )
- s61_host = self.addHost( 'h61' )
- s62_host = self.addHost( 'h62' )
- s63_host = self.addHost( 'h63' )
- s64_host = self.addHost( 'h64' )
- s65_host = self.addHost( 'h65' )
- s66_host = self.addHost( 'h66' )
- s67_host = self.addHost( 'h67' )
- s68_host = self.addHost( 'h68' )
- s69_host = self.addHost( 'h69' )
- s70_host = self.addHost( 'h70' )
- s71_host = self.addHost( 'h71' )
- s72_host = self.addHost( 'h72' )
- s73_host = self.addHost( 'h73' )
- s74_host = self.addHost( 'h74' )
- s75_host = self.addHost( 'h75' )
- s76_host = self.addHost( 'h76' )
- s77_host = self.addHost( 'h77' )
- s78_host = self.addHost( 'h78' )
-
- # add edges between switch and corresponding host
- #self.addLink( s1 , s1_host )
- #self.addLink( s2 , s2_host )
- #self.addLink( s3 , s3_host )
- #self.addLink( s4 , s4_host )
- #self.addLink( s5 , s5_host )
- #self.addLink( s6 , s6_host )
- #self.addLink( s7 , s7_host )
- #self.addLink( s8 , s8_host )
- #self.addLink( s9 , s9_host )
- #self.addLink( s10 , s10_host )
- self.addLink( s11 , s11_host )
- self.addLink( s12 , s12_host )
- self.addLink( s13 , s13_host )
- self.addLink( s14 , s14_host )
- self.addLink( s15 , s15_host )
- self.addLink( s16 , s16_host )
- self.addLink( s17 , s17_host )
- self.addLink( s18 , s18_host )
- self.addLink( s19 , s19_host )
- self.addLink( s20 , s20_host )
- self.addLink( s21 , s21_host )
- self.addLink( s22 , s22_host )
- self.addLink( s23 , s23_host )
- self.addLink( s24 , s24_host )
- self.addLink( s25 , s25_host )
- self.addLink( s26 , s26_host )
- self.addLink( s27 , s27_host )
- self.addLink( s28 , s28_host )
- self.addLink( s29 , s29_host )
- self.addLink( s30 , s30_host )
- self.addLink( s31 , s31_host )
- self.addLink( s32 , s32_host )
- self.addLink( s33 , s33_host )
- self.addLink( s34 , s34_host )
- self.addLink( s35 , s35_host )
- self.addLink( s36 , s36_host )
- self.addLink( s37 , s37_host )
- self.addLink( s38 , s38_host )
- self.addLink( s39 , s39_host )
- self.addLink( s40 , s40_host )
- self.addLink( s41 , s41_host )
- self.addLink( s42 , s42_host )
- self.addLink( s43 , s43_host )
- self.addLink( s44 , s44_host )
- self.addLink( s45 , s45_host )
- self.addLink( s46 , s46_host )
- self.addLink( s47 , s47_host )
- self.addLink( s48 , s48_host )
- self.addLink( s49 , s49_host )
- self.addLink( s50 , s50_host )
- self.addLink( s51 , s51_host )
- self.addLink( s52 , s52_host )
- self.addLink( s53 , s53_host )
- self.addLink( s54 , s54_host )
- self.addLink( s55 , s55_host )
- self.addLink( s56 , s56_host )
- self.addLink( s57 , s57_host )
- self.addLink( s58 , s58_host )
- self.addLink( s59 , s59_host )
- self.addLink( s60 , s60_host )
- self.addLink( s61 , s61_host )
- self.addLink( s62 , s62_host )
- self.addLink( s63 , s63_host )
- self.addLink( s64 , s64_host )
- self.addLink( s65 , s65_host )
- self.addLink( s66 , s66_host )
- self.addLink( s67 , s67_host )
- self.addLink( s68 , s68_host )
- self.addLink( s69 , s69_host )
- self.addLink( s70 , s70_host )
- self.addLink( s71 , s71_host )
- self.addLink( s72 , s72_host )
- self.addLink( s73 , s73_host )
- self.addLink( s74 , s74_host )
- self.addLink( s75 , s75_host )
- self.addLink( s76 , s76_host )
- self.addLink( s77 , s77_host )
- self.addLink( s78 , s78_host )
-
- #info( '*** Add Leaf links\n')
- self.addLink(s1, s9)
- self.addLink(s2, s10)
- self.addLink(s3, s9)
- self.addLink(s4, s10)
- self.addLink(s5, s9)
- self.addLink(s6, s10)
- self.addLink(s7, s9)
- self.addLink(s8, s10)
- self.addLink(s9, s11)
- self.addLink(s9, s12)
- self.addLink(s10, s13)
- self.addLink(s10, s14)
- self.addLink(s11, s12)
- self.addLink(s13, s14)
-
- #info( '*** Add Spine-1 links\n')
- self.addLink(s15, s1)
- self.addLink(s15, s2)
- self.addLink(s16, s1)
- self.addLink(s16, s2)
- self.addLink(s17, s1)
- self.addLink(s17, s2)
- self.addLink(s18, s1)
- self.addLink(s18, s2)
- self.addLink(s19, s1)
- self.addLink(s19, s2)
- self.addLink(s20, s1)
- self.addLink(s20, s2)
- self.addLink(s21, s1)
- self.addLink(s21, s2)
- self.addLink(s22, s1)
- self.addLink(s22, s2)
- self.addLink(s23, s1)
- self.addLink(s23, s2)
- self.addLink(s24, s1)
- self.addLink(s24, s2)
- self.addLink(s25, s1)
- self.addLink(s25, s2)
- self.addLink(s26, s1)
- self.addLink(s26, s2)
- self.addLink(s27, s1)
- self.addLink(s27, s2)
- self.addLink(s28, s1)
- self.addLink(s28, s2)
- self.addLink(s29, s1)
- self.addLink(s29, s2)
- self.addLink(s30, s1)
- self.addLink(s30, s2)
-
- #info( '*** Add Spine-2 links\n')
- self.addLink(s31, s3)
- self.addLink(s31, s4)
- self.addLink(s32, s3)
- self.addLink(s32, s4)
- self.addLink(s33, s3)
- self.addLink(s33, s4)
- self.addLink(s34, s3)
- self.addLink(s34, s4)
- self.addLink(s35, s3)
- self.addLink(s35, s4)
- self.addLink(s36, s3)
- self.addLink(s36, s4)
- self.addLink(s37, s3)
- self.addLink(s37, s4)
- self.addLink(s38, s3)
- self.addLink(s38, s4)
- self.addLink(s39, s3)
- self.addLink(s39, s4)
- self.addLink(s40, s3)
- self.addLink(s40, s4)
- self.addLink(s41, s3)
- self.addLink(s41, s4)
- self.addLink(s42, s3)
- self.addLink(s42, s4)
- self.addLink(s43, s3)
- self.addLink(s43, s4)
- self.addLink(s44, s3)
- self.addLink(s44, s4)
- self.addLink(s45, s3)
- self.addLink(s45, s4)
- self.addLink(s46, s3)
- self.addLink(s46, s4)
-
- #info( '*** Add Spine-3 links\n')
- self.addLink(s47, s5)
- self.addLink(s47, s6)
- self.addLink(s48, s5)
- self.addLink(s48, s6)
- self.addLink(s49, s5)
- self.addLink(s49, s6)
- self.addLink(s50, s5)
- self.addLink(s50, s6)
- self.addLink(s51, s5)
- self.addLink(s51, s6)
- self.addLink(s52, s5)
- self.addLink(s52, s6)
- self.addLink(s53, s5)
- self.addLink(s53, s6)
- self.addLink(s54, s5)
- self.addLink(s54, s6)
- self.addLink(s55, s5)
- self.addLink(s55, s6)
- self.addLink(s56, s5)
- self.addLink(s56, s6)
- self.addLink(s57, s5)
- self.addLink(s57, s6)
- self.addLink(s58, s5)
- self.addLink(s58, s6)
- self.addLink(s59, s5)
- self.addLink(s59, s6)
- self.addLink(s60, s5)
- self.addLink(s60, s6)
- self.addLink(s61, s5)
- self.addLink(s61, s6)
- self.addLink(s62, s5)
- self.addLink(s62, s6)
-
- #info( '*** Add Spine-4 links\n')
- self.addLink(s63, s7)
- self.addLink(s63, s8)
- self.addLink(s64, s7)
- self.addLink(s64, s8)
- self.addLink(s65, s7)
- self.addLink(s65, s8)
- self.addLink(s66, s7)
- self.addLink(s66, s8)
- self.addLink(s67, s7)
- self.addLink(s67, s8)
- self.addLink(s68, s7)
- self.addLink(s68, s8)
- self.addLink(s69, s7)
- self.addLink(s69, s8)
- self.addLink(s70, s7)
- self.addLink(s70, s8)
- self.addLink(s71, s7)
- self.addLink(s71, s8)
- self.addLink(s72, s7)
- self.addLink(s72, s8)
- self.addLink(s73, s7)
- self.addLink(s73, s8)
- self.addLink(s74, s7)
- self.addLink(s74, s8)
- self.addLink(s75, s7)
- self.addLink(s75, s8)
- self.addLink(s76, s7)
- self.addLink(s76, s8)
- self.addLink(s77, s7)
- self.addLink(s77, s8)
- self.addLink(s78, s7)
- self.addLink(s78, s8)
-
-topos = { 'spine': ( lambda: spineTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
- "Create network"
- topo = spineTopo()
- #if controller_ip == '':
- #controller_ip = '10.0.2.2';
- # controller_ip = '127.0.0.1';
- network = Mininet(topo=topo, switch=OVSSwitch, link=TCLink, autoSetMacs = True, controller=None)
- network.start()
- CLI( network )
- network.stop()
-
-if __name__ == '__main__':
- setLogLevel('info')
- #setLogLevel('debug')
- setupNetwork()
diff --git a/TestON/tests/CHOtest/Dependencies/topoSpineIpv6.py b/TestON/tests/CHOtest/Dependencies/topoSpineIpv6.py
deleted file mode 100755
index 7db4fa1..0000000
--- a/TestON/tests/CHOtest/Dependencies/topoSpineIpv6.py
+++ /dev/null
@@ -1,441 +0,0 @@
-#!/usr/bin/python
-from mininet.topo import Topo
-from mininet.net import Mininet
-from mininet.node import Host, RemoteController
-from mininet.node import Node
-from mininet.node import CPULimitedHost
-from mininet.link import TCLink
-from mininet.cli import CLI
-from mininet.log import setLogLevel
-from mininet.util import dumpNodeConnections
-from mininet.node import ( UserSwitch, OVSSwitch, IVSSwitch )
-
-class dualStackHost( Host ):
- def config( self, v6Addr='1000:1/64', **params ):
- r = super( Host, self ).config( **params )
- intf = self.defaultIntf()
- self.cmd( 'ip -6 addr add %s dev %s' % ( v6Addr, intf ) )
- return r
-
-class spineTopo( Topo ):
-
- def __init__( self, **opts ):
- "Create a topology."
-
- # Initialize Topology
- Topo.__init__( self, **opts )
-
- # add nodes, Leaf switches
- s1 = self.addSwitch( 's1' )
- s2 = self.addSwitch( 's2' )
- s3 = self.addSwitch( 's3' )
- s4 = self.addSwitch( 's4' )
- s5 = self.addSwitch( 's5' )
- s6 = self.addSwitch( 's6' )
- s7 = self.addSwitch( 's7' )
- s8 = self.addSwitch( 's8' )
- s9 = self.addSwitch( 's9' )
- s10 = self.addSwitch( 's10' )
- s11 = self.addSwitch( 's11' )
- s12 = self.addSwitch( 's12' )
- s13 = self.addSwitch( 's13' )
- s14 = self.addSwitch( 's14' )
-
- # add nodes, Spine switches first...
- s15 = self.addSwitch( 's15' )
- s16 = self.addSwitch( 's16' )
- s17 = self.addSwitch( 's17' )
- s18 = self.addSwitch( 's18' )
- s19 = self.addSwitch( 's19' )
- s20 = self.addSwitch( 's20' )
- s21 = self.addSwitch( 's21' )
- s22 = self.addSwitch( 's22' )
- s23 = self.addSwitch( 's23' )
- s24 = self.addSwitch( 's24' )
- s25 = self.addSwitch( 's25' )
- s26 = self.addSwitch( 's26' )
- s27 = self.addSwitch( 's27' )
- s28 = self.addSwitch( 's28' )
- s29 = self.addSwitch( 's29' )
- s30 = self.addSwitch( 's30' )
- s31 = self.addSwitch( 's31' )
- s32 = self.addSwitch( 's32' )
- s33 = self.addSwitch( 's33' )
- s34 = self.addSwitch( 's34' )
- s35 = self.addSwitch( 's35' )
- s36 = self.addSwitch( 's36' )
- s37 = self.addSwitch( 's37' )
- s38 = self.addSwitch( 's38' )
- s39 = self.addSwitch( 's39' )
- s40 = self.addSwitch( 's40' )
- s41 = self.addSwitch( 's41' )
- s42 = self.addSwitch( 's42' )
- s43 = self.addSwitch( 's43' )
- s44 = self.addSwitch( 's44' )
- s45 = self.addSwitch( 's45' )
- s46 = self.addSwitch( 's46' )
- s47 = self.addSwitch( 's47' )
- s48 = self.addSwitch( 's48' )
- s49 = self.addSwitch( 's49' )
- s50 = self.addSwitch( 's50' )
- s51 = self.addSwitch( 's51' )
- s52 = self.addSwitch( 's52' )
- s53 = self.addSwitch( 's53' )
- s54 = self.addSwitch( 's54' )
- s55 = self.addSwitch( 's55' )
- s56 = self.addSwitch( 's56' )
- s57 = self.addSwitch( 's57' )
- s58 = self.addSwitch( 's58' )
- s59 = self.addSwitch( 's59' )
- s60 = self.addSwitch( 's60' )
- s61 = self.addSwitch( 's61' )
- s62 = self.addSwitch( 's62' )
- s63 = self.addSwitch( 's63' )
- s64 = self.addSwitch( 's64' )
- s65 = self.addSwitch( 's65' )
- s66 = self.addSwitch( 's66' )
- s67 = self.addSwitch( 's67' )
- s68 = self.addSwitch( 's68' )
- s69 = self.addSwitch( 's69' )
- s70 = self.addSwitch( 's70' )
- s71 = self.addSwitch( 's71' )
- s72 = self.addSwitch( 's72' )
- s73 = self.addSwitch( 's73' )
- s74 = self.addSwitch( 's74' )
- s75 = self.addSwitch( 's75' )
- s76 = self.addSwitch( 's76' )
- s77 = self.addSwitch( 's77' )
- s78 = self.addSwitch( 's78' )
-
-
- # ... and now hosts
- # s1_host = self.addHost( 'h1', ip='10.1.0.1/24', cls=dualStackHost, v6Addr='1000::1/64' )
- # s2_host = self.addHost( 'h2', ip='10.1.0.2/24', cls=dualStackHost, v6Addr='1000::2/64' )
- # s3_host = self.addHost( 'h3', ip='10.1.0.3/24', cls=dualStackHost, v6Addr='1000::3/64' )
- # s4_host = self.addHost( 'h4', ip='10.1.0.4/24', cls=dualStackHost, v6Addr='1000::4/64' )
- # s5_host = self.addHost( 'h5', ip='10.1.0.5/24', cls=dualStackHost, v6Addr='1000::5/64' )
- # s6_host = self.addHost( 'h6', ip='10.1.0.6/24', cls=dualStackHost, v6Addr='1000::6/64' )
- # s7_host = self.addHost( 'h7', ip='10.1.0.7/24', cls=dualStackHost, v6Addr='1000::7/64' )
- # s8_host = self.addHost( 'h8', ip='10.1.0.8/24', cls=dualStackHost, v6Addr='1000::8/64' )
- # s9_host = self.addHost( 'h9', ip='10.1.0.9/24', cls=dualStackHost, v6Addr='1000::9/64' )
- # s10_host = self.addHost( 'h10', ip='10.1.0.10/24', cls=dualStackHost, v6Addr='1000::10/64' )
- s11_host = self.addHost( 'h11', ip='10.1.0.11/24', cls=dualStackHost, v6Addr='1000::11/64' )
- s12_host = self.addHost( 'h12', ip='10.1.0.12/24', cls=dualStackHost, v6Addr='1000::12/64' )
- s13_host = self.addHost( 'h13', ip='10.1.0.13/24', cls=dualStackHost, v6Addr='1000::13/64' )
- s14_host = self.addHost( 'h14', ip='10.1.0.14/24', cls=dualStackHost, v6Addr='1000::14/64' )
- s15_host = self.addHost( 'h15', ip='10.1.0.15/24', cls=dualStackHost, v6Addr='1000::15/64' )
- s16_host = self.addHost( 'h16', ip='10.1.0.16/24', cls=dualStackHost, v6Addr='1000::16/64' )
- s17_host = self.addHost( 'h17', ip='10.1.0.17/24', cls=dualStackHost, v6Addr='1000::17/64' )
- s18_host = self.addHost( 'h18', ip='10.1.0.18/24', cls=dualStackHost, v6Addr='1000::18/64' )
- s19_host = self.addHost( 'h19', ip='10.1.0.19/24', cls=dualStackHost, v6Addr='1000::19/64' )
- s20_host = self.addHost( 'h20', ip='10.1.0.20/24', cls=dualStackHost, v6Addr='1000::20/64' )
- s21_host = self.addHost( 'h21', ip='10.1.0.21/24', cls=dualStackHost, v6Addr='1000::21/64' )
- s22_host = self.addHost( 'h22', ip='10.1.0.22/24', cls=dualStackHost, v6Addr='1000::22/64' )
- s23_host = self.addHost( 'h23', ip='10.1.0.23/24', cls=dualStackHost, v6Addr='1000::23/64' )
- s24_host = self.addHost( 'h24', ip='10.1.0.24/24', cls=dualStackHost, v6Addr='1000::24/64' )
- s25_host = self.addHost( 'h25', ip='10.1.0.25/24', cls=dualStackHost, v6Addr='1000::25/64' )
- s26_host = self.addHost( 'h26', ip='10.1.0.26/24', cls=dualStackHost, v6Addr='1000::26/64' )
- s27_host = self.addHost( 'h27', ip='10.1.0.27/24', cls=dualStackHost, v6Addr='1000::27/64' )
- s28_host = self.addHost( 'h28', ip='10.1.0.28/24', cls=dualStackHost, v6Addr='1000::28/64' )
- s29_host = self.addHost( 'h29', ip='10.1.0.29/24', cls=dualStackHost, v6Addr='1000::29/64' )
- s30_host = self.addHost( 'h30', ip='10.1.0.30/24', cls=dualStackHost, v6Addr='1000::30/64' )
- s31_host = self.addHost( 'h31', ip='10.1.0.31/24', cls=dualStackHost, v6Addr='1000::31/64' )
- s32_host = self.addHost( 'h32', ip='10.1.0.32/24', cls=dualStackHost, v6Addr='1000::32/64' )
- s33_host = self.addHost( 'h33', ip='10.1.0.33/24', cls=dualStackHost, v6Addr='1000::33/64' )
- s34_host = self.addHost( 'h34', ip='10.1.0.34/24', cls=dualStackHost, v6Addr='1000::34/64' )
- s35_host = self.addHost( 'h35', ip='10.1.0.35/24', cls=dualStackHost, v6Addr='1000::35/64' )
- s36_host = self.addHost( 'h36', ip='10.1.0.36/24', cls=dualStackHost, v6Addr='1000::36/64' )
- s37_host = self.addHost( 'h37', ip='10.1.0.37/24', cls=dualStackHost, v6Addr='1000::37/64' )
- s38_host = self.addHost( 'h38', ip='10.1.0.38/24', cls=dualStackHost, v6Addr='1000::38/64' )
- s39_host = self.addHost( 'h39', ip='10.1.0.39/24', cls=dualStackHost, v6Addr='1000::39/64' )
- s40_host = self.addHost( 'h40', ip='10.1.0.40/24', cls=dualStackHost, v6Addr='1000::40/64' )
- s41_host = self.addHost( 'h41', ip='10.1.0.41/24', cls=dualStackHost, v6Addr='1000::41/64' )
- s42_host = self.addHost( 'h42', ip='10.1.0.42/24', cls=dualStackHost, v6Addr='1000::42/64' )
- s43_host = self.addHost( 'h43', ip='10.1.0.43/24', cls=dualStackHost, v6Addr='1000::43/64' )
- s44_host = self.addHost( 'h44', ip='10.1.0.44/24', cls=dualStackHost, v6Addr='1000::44/64' )
- s45_host = self.addHost( 'h45', ip='10.1.0.45/24', cls=dualStackHost, v6Addr='1000::45/64' )
- s46_host = self.addHost( 'h46', ip='10.1.0.46/24', cls=dualStackHost, v6Addr='1000::46/64' )
- s47_host = self.addHost( 'h47', ip='10.1.0.47/24', cls=dualStackHost, v6Addr='1000::47/64' )
- s48_host = self.addHost( 'h48', ip='10.1.0.48/24', cls=dualStackHost, v6Addr='1000::48/64' )
- s49_host = self.addHost( 'h49', ip='10.1.0.49/24', cls=dualStackHost, v6Addr='1000::49/64' )
- s50_host = self.addHost( 'h50', ip='10.1.0.50/24', cls=dualStackHost, v6Addr='1000::50/64' )
- s51_host = self.addHost( 'h51', ip='10.1.0.51/24', cls=dualStackHost, v6Addr='1000::51/64' )
- s52_host = self.addHost( 'h52', ip='10.1.0.52/24', cls=dualStackHost, v6Addr='1000::52/64' )
- s53_host = self.addHost( 'h53', ip='10.1.0.53/24', cls=dualStackHost, v6Addr='1000::53/64' )
- s54_host = self.addHost( 'h54', ip='10.1.0.54/24', cls=dualStackHost, v6Addr='1000::54/64' )
- s55_host = self.addHost( 'h55', ip='10.1.0.55/24', cls=dualStackHost, v6Addr='1000::55/64' )
- s56_host = self.addHost( 'h56', ip='10.1.0.56/24', cls=dualStackHost, v6Addr='1000::56/64' )
- s57_host = self.addHost( 'h57', ip='10.1.0.57/24', cls=dualStackHost, v6Addr='1000::57/64' )
- s58_host = self.addHost( 'h58', ip='10.1.0.58/24', cls=dualStackHost, v6Addr='1000::58/64' )
- s59_host = self.addHost( 'h59', ip='10.1.0.59/24', cls=dualStackHost, v6Addr='1000::59/64' )
- s60_host = self.addHost( 'h60', ip='10.1.0.60/24', cls=dualStackHost, v6Addr='1000::60/64' )
- s61_host = self.addHost( 'h61', ip='10.1.0.61/24', cls=dualStackHost, v6Addr='1000::61/64' )
- s62_host = self.addHost( 'h62', ip='10.1.0.62/24', cls=dualStackHost, v6Addr='1000::62/64' )
- s63_host = self.addHost( 'h63', ip='10.1.0.63/24', cls=dualStackHost, v6Addr='1000::63/64' )
- s64_host = self.addHost( 'h64', ip='10.1.0.64/24', cls=dualStackHost, v6Addr='1000::64/64' )
- s65_host = self.addHost( 'h65', ip='10.1.0.65/24', cls=dualStackHost, v6Addr='1000::65/64' )
- s66_host = self.addHost( 'h66', ip='10.1.0.66/24', cls=dualStackHost, v6Addr='1000::66/64' )
- s67_host = self.addHost( 'h67', ip='10.1.0.67/24', cls=dualStackHost, v6Addr='1000::67/64' )
- s68_host = self.addHost( 'h68', ip='10.1.0.68/24', cls=dualStackHost, v6Addr='1000::68/64' )
- s69_host = self.addHost( 'h69', ip='10.1.0.69/24', cls=dualStackHost, v6Addr='1000::69/64' )
- s70_host = self.addHost( 'h70', ip='10.1.0.70/24', cls=dualStackHost, v6Addr='1000::70/64' )
- s71_host = self.addHost( 'h71', ip='10.1.0.71/24', cls=dualStackHost, v6Addr='1000::71/64' )
- s72_host = self.addHost( 'h72', ip='10.1.0.72/24', cls=dualStackHost, v6Addr='1000::72/64' )
- s73_host = self.addHost( 'h73', ip='10.1.0.73/24', cls=dualStackHost, v6Addr='1000::73/64' )
- s74_host = self.addHost( 'h74', ip='10.1.0.74/24', cls=dualStackHost, v6Addr='1000::74/64' )
- s75_host = self.addHost( 'h75', ip='10.1.0.75/24', cls=dualStackHost, v6Addr='1000::75/64' )
- s76_host = self.addHost( 'h76', ip='10.1.0.76/24', cls=dualStackHost, v6Addr='1000::76/64' )
- s77_host = self.addHost( 'h77', ip='10.1.0.77/24', cls=dualStackHost, v6Addr='1000::77/64' )
- s78_host = self.addHost( 'h78', ip='10.1.0.78/24', cls=dualStackHost, v6Addr='1000::78/64' )
-
- # add edges between switch and corresponding host
- #self.addLink( s1 , s1_host )
- #self.addLink( s2 , s2_host )
- #self.addLink( s3 , s3_host )
- #self.addLink( s4 , s4_host )
- #self.addLink( s5 , s5_host )
- #self.addLink( s6 , s6_host )
- #self.addLink( s7 , s7_host )
- #self.addLink( s8 , s8_host )
- #self.addLink( s9 , s9_host )
- #self.addLink( s10 , s10_host )
- self.addLink( s11 , s11_host )
- self.addLink( s12 , s12_host )
- self.addLink( s13 , s13_host )
- self.addLink( s14 , s14_host )
- self.addLink( s15 , s15_host )
- self.addLink( s16 , s16_host )
- self.addLink( s17 , s17_host )
- self.addLink( s18 , s18_host )
- self.addLink( s19 , s19_host )
- self.addLink( s20 , s20_host )
- self.addLink( s21 , s21_host )
- self.addLink( s22 , s22_host )
- self.addLink( s23 , s23_host )
- self.addLink( s24 , s24_host )
- self.addLink( s25 , s25_host )
- self.addLink( s26 , s26_host )
- self.addLink( s27 , s27_host )
- self.addLink( s28 , s28_host )
- self.addLink( s29 , s29_host )
- self.addLink( s30 , s30_host )
- self.addLink( s31 , s31_host )
- self.addLink( s32 , s32_host )
- self.addLink( s33 , s33_host )
- self.addLink( s34 , s34_host )
- self.addLink( s35 , s35_host )
- self.addLink( s36 , s36_host )
- self.addLink( s37 , s37_host )
- self.addLink( s38 , s38_host )
- self.addLink( s39 , s39_host )
- self.addLink( s40 , s40_host )
- self.addLink( s41 , s41_host )
- self.addLink( s42 , s42_host )
- self.addLink( s43 , s43_host )
- self.addLink( s44 , s44_host )
- self.addLink( s45 , s45_host )
- self.addLink( s46 , s46_host )
- self.addLink( s47 , s47_host )
- self.addLink( s48 , s48_host )
- self.addLink( s49 , s49_host )
- self.addLink( s50 , s50_host )
- self.addLink( s51 , s51_host )
- self.addLink( s52 , s52_host )
- self.addLink( s53 , s53_host )
- self.addLink( s54 , s54_host )
- self.addLink( s55 , s55_host )
- self.addLink( s56 , s56_host )
- self.addLink( s57 , s57_host )
- self.addLink( s58 , s58_host )
- self.addLink( s59 , s59_host )
- self.addLink( s60 , s60_host )
- self.addLink( s61 , s61_host )
- self.addLink( s62 , s62_host )
- self.addLink( s63 , s63_host )
- self.addLink( s64 , s64_host )
- self.addLink( s65 , s65_host )
- self.addLink( s66 , s66_host )
- self.addLink( s67 , s67_host )
- self.addLink( s68 , s68_host )
- self.addLink( s69 , s69_host )
- self.addLink( s70 , s70_host )
- self.addLink( s71 , s71_host )
- self.addLink( s72 , s72_host )
- self.addLink( s73 , s73_host )
- self.addLink( s74 , s74_host )
- self.addLink( s75 , s75_host )
- self.addLink( s76 , s76_host )
- self.addLink( s77 , s77_host )
- self.addLink( s78 , s78_host )
-
- #info( '*** Add Leaf links\n')
- self.addLink(s1, s9)
- self.addLink(s2, s10)
- self.addLink(s3, s9)
- self.addLink(s4, s10)
- self.addLink(s5, s9)
- self.addLink(s6, s10)
- self.addLink(s7, s9)
- self.addLink(s8, s10)
- self.addLink(s9, s11)
- self.addLink(s9, s12)
- self.addLink(s10, s13)
- self.addLink(s10, s14)
- self.addLink(s11, s12)
- self.addLink(s13, s14)
-
- #info( '*** Add Spine-1 links\n')
- self.addLink(s15, s1)
- self.addLink(s15, s2)
- self.addLink(s16, s1)
- self.addLink(s16, s2)
- self.addLink(s17, s1)
- self.addLink(s17, s2)
- self.addLink(s18, s1)
- self.addLink(s18, s2)
- self.addLink(s19, s1)
- self.addLink(s19, s2)
- self.addLink(s20, s1)
- self.addLink(s20, s2)
- self.addLink(s21, s1)
- self.addLink(s21, s2)
- self.addLink(s22, s1)
- self.addLink(s22, s2)
- self.addLink(s23, s1)
- self.addLink(s23, s2)
- self.addLink(s24, s1)
- self.addLink(s24, s2)
- self.addLink(s25, s1)
- self.addLink(s25, s2)
- self.addLink(s26, s1)
- self.addLink(s26, s2)
- self.addLink(s27, s1)
- self.addLink(s27, s2)
- self.addLink(s28, s1)
- self.addLink(s28, s2)
- self.addLink(s29, s1)
- self.addLink(s29, s2)
- self.addLink(s30, s1)
- self.addLink(s30, s2)
-
- #info( '*** Add Spine-2 links\n')
- self.addLink(s31, s3)
- self.addLink(s31, s4)
- self.addLink(s32, s3)
- self.addLink(s32, s4)
- self.addLink(s33, s3)
- self.addLink(s33, s4)
- self.addLink(s34, s3)
- self.addLink(s34, s4)
- self.addLink(s35, s3)
- self.addLink(s35, s4)
- self.addLink(s36, s3)
- self.addLink(s36, s4)
- self.addLink(s37, s3)
- self.addLink(s37, s4)
- self.addLink(s38, s3)
- self.addLink(s38, s4)
- self.addLink(s39, s3)
- self.addLink(s39, s4)
- self.addLink(s40, s3)
- self.addLink(s40, s4)
- self.addLink(s41, s3)
- self.addLink(s41, s4)
- self.addLink(s42, s3)
- self.addLink(s42, s4)
- self.addLink(s43, s3)
- self.addLink(s43, s4)
- self.addLink(s44, s3)
- self.addLink(s44, s4)
- self.addLink(s45, s3)
- self.addLink(s45, s4)
- self.addLink(s46, s3)
- self.addLink(s46, s4)
-
- #info( '*** Add Spine-3 links\n')
- self.addLink(s47, s5)
- self.addLink(s47, s6)
- self.addLink(s48, s5)
- self.addLink(s48, s6)
- self.addLink(s49, s5)
- self.addLink(s49, s6)
- self.addLink(s50, s5)
- self.addLink(s50, s6)
- self.addLink(s51, s5)
- self.addLink(s51, s6)
- self.addLink(s52, s5)
- self.addLink(s52, s6)
- self.addLink(s53, s5)
- self.addLink(s53, s6)
- self.addLink(s54, s5)
- self.addLink(s54, s6)
- self.addLink(s55, s5)
- self.addLink(s55, s6)
- self.addLink(s56, s5)
- self.addLink(s56, s6)
- self.addLink(s57, s5)
- self.addLink(s57, s6)
- self.addLink(s58, s5)
- self.addLink(s58, s6)
- self.addLink(s59, s5)
- self.addLink(s59, s6)
- self.addLink(s60, s5)
- self.addLink(s60, s6)
- self.addLink(s61, s5)
- self.addLink(s61, s6)
- self.addLink(s62, s5)
- self.addLink(s62, s6)
-
- #info( '*** Add Spine-4 links\n')
- self.addLink(s63, s7)
- self.addLink(s63, s8)
- self.addLink(s64, s7)
- self.addLink(s64, s8)
- self.addLink(s65, s7)
- self.addLink(s65, s8)
- self.addLink(s66, s7)
- self.addLink(s66, s8)
- self.addLink(s67, s7)
- self.addLink(s67, s8)
- self.addLink(s68, s7)
- self.addLink(s68, s8)
- self.addLink(s69, s7)
- self.addLink(s69, s8)
- self.addLink(s70, s7)
- self.addLink(s70, s8)
- self.addLink(s71, s7)
- self.addLink(s71, s8)
- self.addLink(s72, s7)
- self.addLink(s72, s8)
- self.addLink(s73, s7)
- self.addLink(s73, s8)
- self.addLink(s74, s7)
- self.addLink(s74, s8)
- self.addLink(s75, s7)
- self.addLink(s75, s8)
- self.addLink(s76, s7)
- self.addLink(s76, s8)
- self.addLink(s77, s7)
- self.addLink(s77, s8)
- self.addLink(s78, s7)
- self.addLink(s78, s8)
-
-topos = { 'spine': ( lambda: spineTopo() ) }
-
-# HERE THE CODE DEFINITION OF THE TOPOLOGY ENDS
-
-def setupNetwork():
- "Create network"
- topo = spineTopo()
- #if controller_ip == '':
- #controller_ip = '10.0.2.2';
- # controller_ip = '127.0.0.1';
- network = Mininet(topo=topo, switch=OVSSwitch, link=TCLink, autoSetMacs = True, controller=None)
- network.start()
- CLI( network )
- network.stop()
-
-if __name__ == '__main__':
- setLogLevel('info')
- #setLogLevel('debug')
- setupNetwork()
diff --git a/TestON/tests/CHOtest/README b/TestON/tests/CHOtest/README
deleted file mode 100644
index ab402f7..0000000
--- a/TestON/tests/CHOtest/README
+++ /dev/null
@@ -1,40 +0,0 @@
-CHO TEST
-
-Summary:
- This is a long-term regression test that is aimed to run
- for weeks at a time. It's goal is to find memory leaks or bugs that
- otherwise cannot be easily seen with short-term tests. The following
- is an overview of the steps that are performed in this test.
- Steps:
- - Discover IPv4 and IPv6 hosts
- - Add host intents
- - Ping all hosts
- - Bring links down
- - Ping all hosts
- - Bring links back up
- - Ping all hosts
- - remove intents
-
- These steps are iterated over and over again. The number of iterations can
- be found in the params file.
-
-Topology:
- Att topology - 25 switches and 25 hosts and its structure is designed to simulate
- a real world configuration,
- Chordal topology - 25 swithces and 25 hosts and because of its chordal graph structure,
- it's particulary useful in testing the rerouting capability of ONOS.
- Leaf-spine topology - 78 switches and 68 hosts and designed to simulate modern data centers.
-
-Pre-requisites:
- To run out-of-the box this test requires 3 NODES. The cell file
- must be passed through the startup test command, e.g.,
-
- ./cli.py run CHOtest onoscell <cell name>.
-
- Passwordless login must be set from TestStation "admin" root user.
- This test relies on the topology files to start Mininet located in
- the Dependency folder. Be sure to check that each topology file can
- be loaded properly by Mininet by using this command:
-
- sudo ~/<Dependency path>/<topology name>
-
diff --git a/TestON/tests/COMPflow/COMPflow.params b/TestON/tests/COMPflow/COMPflow.params
new file mode 100755
index 0000000..ac85ea6
--- /dev/null
+++ b/TestON/tests/COMPflow/COMPflow.params
@@ -0,0 +1,63 @@
+
+<PARAMS>
+ # CASE - Descritpion
+ # 1,2,10,1000,1100,2000,1200,2000,100
+ # 1 - Variable initialization and optional pull and build ONOS package
+ # 2 - install ONOS
+ # 8 - Compare topology
+ # 9 - Report logs
+ # 10 - Start mininet and verify topology
+
+
+ <testcases>1,10,100,1000,100,110</testcases>
+
+ <SCALE>
+ <max>1</max>
+ </SCALE>
+
+ <DEBUG>on</DEBUG>
+
+ <DEPENDENCY>
+ <path>/tests/COMPflow/Dependency/</path>
+ <wrapper1>startUp</wrapper1>
+ <wrapper2>topo</wrapper2>
+ <topology>topo-flow.py</topology>
+ </DEPENDENCY>
+
+ <ENV>
+ <cellName>productionCell</cellName>
+ <cellApps>drivers,openflow-base</cellApps>
+ </ENV>
+
+ <GIT>
+ <pull>False</pull>
+ <branch>master</branch>
+ </GIT>
+
+ <CTRL>
+ <port>6653</port>
+ </CTRL>
+
+ <CASE10>
+ <numSw>15</numSw>
+ <mnArgs> --topo linear,15 --switch ovsk,protocols=OpenFlow13 --controller remote</mnArgs>
+ </CASE10>
+
+ <CASE1000>
+ <flowsPerSw>14</flowsPerSw>
+ <batches>500</batches>
+ </CASE1000>
+
+ <TEST>
+ <batchSize>200</batchSize>
+ <numThrd>1</numThrd>
+ </TEST>
+
+ <SLEEP>
+ <startup>15</startup>
+ <startMN>5</startMN>
+ <addFlow>10</addFlow>
+ <delFlow>10</delFlow>
+ </SLEEP>
+
+</PARAMS>
diff --git a/TestON/tests/COMPflow/COMPflow.py b/TestON/tests/COMPflow/COMPflow.py
new file mode 100644
index 0000000..37b5256
--- /dev/null
+++ b/TestON/tests/COMPflow/COMPflow.py
@@ -0,0 +1,334 @@
+class COMPflow:
+
+ def __init__( self ):
+ self.default = ''
+
+ def CASE1( self, main ):
+ import time
+ import os
+ import imp
+
+ """
+ - Construct tests variables
+ - GIT ( optional )
+ - Checkout ONOS master branch
+ - Pull latest ONOS code
+ - Building ONOS ( optional )
+ - Install ONOS package
+ - Build ONOS package
+ """
+
+ main.case( "Constructing test variables and building ONOS package" )
+ main.step( "Constructing test variables" )
+ stepResult = main.FALSE
+
+ # Test variables
+ main.testOnDirectory = os.path.dirname( os.getcwd ( ) )
+ main.cellName = main.params[ 'ENV' ][ 'cellName' ]
+ main.apps = main.params[ 'ENV' ][ 'cellApps' ]
+ gitBranch = main.params[ 'GIT' ][ 'branch' ]
+ gitPull = main.params[ 'GIT' ][ 'pull' ]
+ main.ONOSport = main.params[ 'CTRL' ][ 'port' ]
+ main.maxNodes = int( main.params[ 'SCALE' ][ 'max' ] )
+ main.startUpSleep = int( main.params[ 'SLEEP' ][ 'startup' ] )
+ main.startMNSleep = int( main.params[ 'SLEEP' ][ 'startMN' ] )
+ main.addFlowSleep = int( main.params[ 'SLEEP' ][ 'addFlow' ] )
+ main.delFlowSleep = int( main.params[ 'SLEEP' ][ 'delFlow' ] )
+ main.debug = main.params['DEBUG']
+ #main.swDPID = main.params[ 'TEST' ][ 'swDPID' ]
+ main.cellData = {} # for creating cell file
+ main.CLIs = []
+ main.ONOSip = []
+
+ main.debug = True if "on" in main.debug else False
+
+ main.ONOSip = main.ONOSbench.getOnosIps()
+
+ # Assigning ONOS cli handles to a list
+ for i in range( 1, main.maxNodes + 1 ):
+ main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
+
+
+ if main.CLIs:
+ stepResult = main.TRUE
+ else:
+ main.log.error( "Did not properly created list of ONOS CLI handle" )
+ stepResult = main.FALSE
+
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully construct " +
+ "test variables ",
+ onfail="Failed to construct test variables" )
+
+ if gitPull == 'True':
+ main.step( "Building ONOS in " + gitBranch + " branch" )
+ onosBuildResult = main.startUp.onosBuild( main, gitBranch )
+ stepResult = onosBuildResult
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully compiled " +
+ "latest ONOS",
+ onfail="Failed to compile " +
+ "latest ONOS" )
+ else:
+ main.log.warn( "Did not pull new code so skipping mvn " +
+ "clean install" )
+
+ def CASE2( self, main ):
+ """
+ - Set up cell
+ - Create cell file
+ - Set cell file
+ - Verify cell file
+ - Kill ONOS process
+ - Uninstall ONOS cluster
+ - Verify ONOS start up
+ - Install ONOS cluster
+ - Connect to cli
+ """
+
+ main.numCtrls = int( main.maxNodes )
+
+ main.case( "Starting up " + str( main.numCtrls ) +
+ " node(s) ONOS cluster" )
+
+ #kill off all onos processes
+ main.log.info( "Safety check, killing all ONOS processes" +
+ " before initiating environment setup" )
+
+ for i in range( main.maxNodes ):
+ main.ONOSbench.onosDie( main.ONOSip[ i ] )
+
+ print "NODE COUNT = ", main.numCtrls
+
+ tempOnosIp = []
+ for i in range( main.numCtrls ):
+ tempOnosIp.append( main.ONOSip[i] )
+
+ main.ONOSbench.createCellFile( main.ONOSbench.ip_address, "temp", main.Mininet1.ip_address, main.apps, tempOnosIp )
+
+ main.step( "Apply cell to environment" )
+ cellResult = main.ONOSbench.setCell( "temp" )
+ verifyResult = main.ONOSbench.verifyCell()
+ stepResult = cellResult and verifyResult
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully applied cell to " + \
+ "environment",
+ onfail="Failed to apply cell to environment " )
+
+ main.step( "Creating ONOS package" )
+ packageResult = main.ONOSbench.onosPackage(opTimeout=30)
+ stepResult = packageResult
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully created ONOS package",
+ onfail="Failed to create ONOS package" )
+
+ time.sleep( main.startUpSleep )
+ main.step( "Uninstalling ONOS package" )
+ onosUninstallResult = main.TRUE
+ for i in range( main.numCtrls ):
+ onosUninstallResult = onosUninstallResult and \
+ main.ONOSbench.onosUninstall( nodeIp=main.ONOSip[ i ] )
+ stepResult = onosUninstallResult
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully uninstalled ONOS package",
+ onfail="Failed to uninstall ONOS package" )
+
+ time.sleep( main.startUpSleep )
+ main.step( "Installing ONOS package" )
+ onosInstallResult = main.TRUE
+ for i in range( main.numCtrls ):
+ onosInstallResult = onosInstallResult and \
+ main.ONOSbench.onosInstall( node=main.ONOSip[ i ] )
+ stepResult = onosInstallResult
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully installed ONOS package",
+ onfail="Failed to install ONOS package" )
+
+ time.sleep( main.startUpSleep )
+ main.step( "Starting ONOS service" )
+ stopResult = main.TRUE
+ startResult = main.TRUE
+ onosIsUp = main.TRUE
+
+ for i in range( main.numCtrls ):
+ onosIsUp = onosIsUp and main.ONOSbench.isup( main.ONOSip[ i ] )
+ if onosIsUp == main.TRUE:
+ main.log.report( "ONOS instance is up and ready" )
+ else:
+ main.log.report( "ONOS instance may not be up, stop and " +
+ "start ONOS again " )
+ for i in range( main.numCtrls ):
+ stopResult = stopResult and \
+ main.ONOSbench.onosStop( main.ONOSip[ i ] )
+ for i in range( main.numCtrls ):
+ startResult = startResult and \
+ main.ONOSbench.onosStart( main.ONOSip[ i ] )
+ stepResult = onosIsUp and stopResult and startResult
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="ONOS service is ready",
+ onfail="ONOS service did not start properly" )
+
+ main.step( "Start ONOS cli" )
+ cliResult = main.TRUE
+ for i in range( main.numCtrls ):
+ cliResult = cliResult and \
+ main.CLIs[ i ].startOnosCli( main.ONOSip[ i ], onosStartTimeout=30 )
+ stepResult = cliResult
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully start ONOS cli",
+ onfail="Failed to start ONOS cli" )
+
+ def CASE10( self, main ):
+ '''
+ Start Mininet
+ '''
+ import json
+
+ main.numSw = int(main.params['CASE10']['numSw'])
+ main.case( "Setup mininet and compare ONOS topology view to Mininet topology" )
+ main.caseExplanation = "Start mininet with custom topology and compare topology " +\
+ "elements between Mininet and ONOS"
+
+ main.step( "Setup Mininet Linear Topology with " + str(main.numSw) + " switches" )
+ stepResult = main.Mininet1.startNet( args = main.params['CASE10']['mnArgs'] )
+
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully loaded topology",
+ onfail="Failed to load topology" )
+
+ main.step( "Assign switches to controller" )
+ for i in range(1, main.numSw + 1):
+ main.Mininet1.assignSwController( "s" + str(i), main.ONOSip[0] )
+
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Successfully assigned switch to controller",
+ onfail="Failed to assign switch to controller" )
+
+ time.sleep( main.startMNSleep )
+
+
+
+
+ def CASE1000( self, main ):
+ '''
+ create JSON object with batched flows
+ '''
+ import numpy
+ import time
+
+ main.case( "Create a json object for the batched flows" )
+
+ main.step( "Parse batch information" )
+ main.flowsPerSw = int(main.params['CASE1000']['flowsPerSw'])
+ main.log.info("Number of flows in a batch is:" + str(main.flowsPerSw * main.numSw))
+
+ main.flowJsonBatchList = []
+ postTimes = []
+
+ main.step("Creating a full list of batches")
+ for index in range(1, int(main.params['CASE1000']['batches']) + 1):
+ flowJsonBatch = main.ONOSrest.createFlowBatch( numSw = main.numSw,
+ batchSizePerSw = main.flowsPerSw,
+ batchIndex = index,
+ ingressPort = 2,
+ egressPort = 3)
+ main.flowJsonBatchList.append(flowJsonBatch)
+
+ main.step("Using REST API /flows/{} to post flow batch")
+ tStartPost = time.time()
+ for item in main.flowJsonBatchList:
+ ts = time.time()
+ resp = main.ONOSrest.sendFlowBatch(batch = item )
+ teBatch = time.time() - ts
+ postTimes.append(teBatch)
+ main.log.info("Batch Rest Post Elapse time is: " + str(teBatch))
+
+ tLastPostEnd = time.time()
+
+ main.step("Check to ensure all flows are in added state.")
+ resp = main.FALSE
+ while resp != main.TRUE:
+ resp = main.ONOSrest.checkFlowsState()
+ time.sleep(0.5)
+ tAllAdded = time.time()
+
+ numFlows = int(main.params['CASE1000']['batches']) *\
+ int(main.params['CASE1000']['flowsPerSw']) *\
+ int(main.params['CASE10']['numSw'])
+ main.log.info("Total number of flows: " + str (numFlows) )
+ main.log.info("Sum of each POST elapse time: " + str(numpy.sum(postTimes)) )
+ main.log.info("Total POST elapse time: " + str(tLastPostEnd-tStartPost))
+
+ duration = tAllAdded - tLastPostEnd
+ main.log.info("Elapse time from end of last REST POST to Flows in ADDED state: " +\
+ str(duration))
+ main.log.info("Rate of Batch Flow add is (flows/sec): " + str( numFlows / duration))
+
+ def CASE2000(self, main):
+ import time
+ import numpy
+
+ rmTimes = []
+
+ main.case("Remove flow timing")
+
+ tStartRemove = time.time()
+ for item in main.flowJsonBatchList:
+ ts = time.time()
+ resp = main.ONOSrest.removeFlowBatch(batch = item )
+ teBatch = time.time() - ts
+ rmTimes.append(teBatch)
+ main.log.info("Batch Rest Remove Elapse time is: " + str(teBatch))
+
+ tLastRemoveEnd = time.time()
+
+ main.step("Check to ensure all flows are in added state.")
+ resp = main.FALSE
+ while resp != main.TRUE:
+ resp = main.ONOSrest.checkFlowsState()
+ time.sleep(0.5)
+ tAllRemoved = time.time()
+
+ main.log.info("Total number of flows: " + str (int(main.params['CASE1000']['batches']) *\
+ int(main.params['CASE1000']['flowsPerSw']) *\
+ int(main.params['CASE10']['numSw'])) )
+ main.log.info("Sum of each DELETE elapse time: " + str(numpy.sum(rmTimes)) )
+ main.log.info("Total POST elapse time: " + str(tLastRemoveEnd-tStartRemove))
+
+ main.log.info("Elapse time from end of last REST POST to Flows in ADDED state: " +\
+ str(tAllRemoved - tLastRemoveEnd))
+
+ def CASE100(self,main):
+ from pprint import pprint
+
+ main.case( "Check to ensure onos flows." )
+
+ resp = main.ONOSrest.checkFlowsState()
+ pprint(resp)
+
+
+ def CASE110( self, main ):
+ '''
+ Report errors/warnings/exceptions
+ '''
+ main.log.info("Error report: \n" )
+ main.ONOSbench.logReport( main.ONOSip[ 0 ],
+ [ "INFO",
+ "FOLLOWER",
+ "WARN",
+ "flow",
+ "ERROR",
+ "Except" ],
+ "s" )
+ main.stop()
+
diff --git a/TestON/tests/COMPflow/COMPflow.topo b/TestON/tests/COMPflow/COMPflow.topo
new file mode 100755
index 0000000..e72bf1b
--- /dev/null
+++ b/TestON/tests/COMPflow/COMPflow.topo
@@ -0,0 +1,45 @@
+<TOPOLOGY>
+ <COMPONENT>
+
+ <ONOSbench>
+ <host>localhost</host>
+ <user>admin</user>
+ <password>onos_test</password>
+ <type>OnosDriver</type>
+ <connect_order>1</connect_order>
+ <COMPONENTS>
+ </COMPONENTS>
+ </ONOSbench>
+
+ <ONOScli1>
+ <host>OC1</host>
+ <user>sdn</user>
+ <password>rocks</password>
+ <type>OnosCliDriver</type>
+ <connect_order>2</connect_order>
+ <COMPONENTS>
+ </COMPONENTS>
+ </ONOScli1>
+
+ <Mininet1>
+ <host>localhost</host>
+ <user>admin</user>
+ <password>onos_test</password>
+ <type>MininetCliDriver</type>
+ <connect_order>5</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </Mininet1>
+
+ <ONOSrest>
+ <host>OC1</host>
+ <port>8181</port>
+ <user>onos</user>
+ <password>rocks</password>
+ <type>OnosRestDriver</type>
+ <connect_order>6</connect_order>
+ <COMPONENTS>
+ </COMPONENTS>
+ </ONOSrest>
+
+ </COMPONENT>
+</TOPOLOGY>
diff --git a/TestON/tests/COMPflow/Dependency/FlowBatch.py b/TestON/tests/COMPflow/Dependency/FlowBatch.py
new file mode 100644
index 0000000..ac749d5
--- /dev/null
+++ b/TestON/tests/COMPflow/Dependency/FlowBatch.py
@@ -0,0 +1,6 @@
+class FlowBatch():
+
+ batchSize = 0
+ batchJson = {}
+
+ def createBatchJson(main, batchSize):
diff --git a/TestON/tests/COMPflow/Dependency/mplsClass.py b/TestON/tests/COMPflow/Dependency/mplsClass.py
new file mode 100644
index 0000000..30b27e8
--- /dev/null
+++ b/TestON/tests/COMPflow/Dependency/mplsClass.py
@@ -0,0 +1,10 @@
+import scapy
+
+class MPLS(Packet):
+ name = "MPLS"
+ fields_desc = [
+ BitField("label", 3, 20),
+ BitField("experimental_bits", 0, 3),
+ BitField("bottom_of_label_stack", 1, 1), # Now we're at the bottom
+ ByteField("TTL", 255)
+ ]
diff --git a/TestON/tests/COMPflow/Dependency/startUp.py b/TestON/tests/COMPflow/Dependency/startUp.py
new file mode 100644
index 0000000..bf2a2b6
--- /dev/null
+++ b/TestON/tests/COMPflow/Dependency/startUp.py
@@ -0,0 +1,38 @@
+"""
+ This wrapper function is use for starting up onos instance
+"""
+
+import time
+import os
+import json
+
+def onosBuild( main, gitBranch ):
+ """
+ This includes pulling ONOS and building it using maven install
+ """
+
+ buildResult = main.FALSE
+
+ # Git checkout a branch of ONOS
+ checkOutResult = main.ONOSbench.gitCheckout( gitBranch )
+ # Does the git pull on the branch that was checked out
+ if not checkOutResult:
+ main.log.warn( "Failed to checked out " + gitBranch +
+ " branch")
+ else:
+ main.log.info( "Successfully checked out " + gitBranch +
+ " branch")
+ gitPullResult = main.ONOSbench.gitPull()
+ if gitPullResult == main.ERROR:
+ main.log.error( "Error pulling git branch" )
+ else:
+ main.log.info( "Successfully pulled " + gitBranch + " branch" )
+
+ # Maven clean install
+ buildResult = main.ONOSbench.cleanInstall()
+
+ return buildResult
+
+
+
+
diff --git a/TestON/tests/COMPflow/README b/TestON/tests/COMPflow/README
new file mode 100644
index 0000000..018e42d
--- /dev/null
+++ b/TestON/tests/COMPflow/README
@@ -0,0 +1,49 @@
+FUNCflow test suite
+
+Summary:
+ This test suite consists of basic flow-rule based functionality testing.
+ The main goal of this test suite is to verify that the flow subsytem is
+ compiling flows correctly. We verify each flow by utilizing Scapy, a
+ Python library for generating and sending packets. The following is an
+ overview of the test.
+ Steps:
+ - Discover hosts
+ - add specific flow
+ - verify flow
+ - remove flow
+
+ Each repetion of the steps tests a specific selector. Here is a list
+ of the selectors that are being tested:
+ Selectors:
+ - MAC
+ - IPv4
+ - VLAN
+ - MPLS
+ - TCP
+ - UDP
+
+ We verify the selectors by sending a tailor made packet through the
+ two hosts. If the packet was recieved, then the flow was compiled
+ correctly.
+
+Topology:
+ The topology consists of one switch with four hosts connected to it.
+ Two hosts are regular IPv4 hosts, while the other two are hosts with
+ vlan interfaces to test the vlan selector.
+
+Required:
+ This test requires Mininet topology file topo-flow.py located in the
+ dependency folder. The topology consistes of VLAN hosts, so you will
+ need to install the VLAN module. You will also need to install the
+ Python module, Scapy.
+
+VLAN configuration:
+ Execute command:
+ $ sudo apt-get install vlan
+ Configuration:
+ $ sudo modprobe 8021q
+ NOTE:To make this configuration permanent
+ $ sudo su -c 'echo "8021q" >> /etc/modules'
+
+Scapy install:
+ sudo apt-get install Scapy
diff --git a/TestON/tests/CHOtest/__init__.py b/TestON/tests/COMPflow/__init__.py
similarity index 100%
rename from TestON/tests/CHOtest/__init__.py
rename to TestON/tests/COMPflow/__init__.py