[ONOS-7039] [ONOS-7044] Fix PEP8 Warnings in TestON
Change-Id: Ied79ff9caff5487a6df50466307f757468d7ca3a
diff --git a/TestON/tests/USECASE/USECASE_SdnipFunction/USECASE_SdnipFunction.py b/TestON/tests/USECASE/USECASE_SdnipFunction/USECASE_SdnipFunction.py
index 93f0735..a45bdef 100644
--- a/TestON/tests/USECASE/USECASE_SdnipFunction/USECASE_SdnipFunction.py
+++ b/TestON/tests/USECASE/USECASE_SdnipFunction/USECASE_SdnipFunction.py
@@ -1,5 +1,5 @@
"""
-Copyright 2016 Open Networking Foundation (ONF)
+Copyright 2016 Open Networking Foundation ( ONF )
Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
@@ -8,7 +8,7 @@
TestON is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
+ ( at your option ) any later version.
TestON is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -18,8 +18,9 @@
You should have received a copy of the GNU General Public License
along with TestON. If not, see <http://www.gnu.org/licenses/>.
"""
-
# Testing the functionality of SDN-IP with single ONOS instance
+
+
class USECASE_SdnipFunction:
def __init__( self ):
@@ -50,7 +51,7 @@
# connect all switches to controller
swResult = main.TRUE
- for i in range ( 1, int( main.params['config']['switchNum'] ) + 1 ):
+ for i in range( 1, int( main.params[ 'config' ][ 'switchNum' ] ) + 1 ):
sw = "sw%s" % ( i )
swResult = swResult and \
main.Mininet.assignSwController( sw, main.Cluster.active( 0 ).ipAddress )
@@ -73,7 +74,7 @@
actual=( "PasswordAuthentication" in tunnelResult ),
onpass="Created tunnel succeeded",
onfail="Create tunnel failed" )
- if ("PasswordAuthentication" not in tunnelResult) :
+ if ( "PasswordAuthentication" not in tunnelResult ):
main.cleanAndExit()
def CASE101( self, main ):
@@ -106,7 +107,7 @@
main.case( "Activate sdn-ip application" )
main.log.info( "waiting link discovery......" )
- time.sleep( int( main.params['timers']['TopoDiscovery'] ) )
+ time.sleep( int( main.params[ 'timers' ][ 'TopoDiscovery' ] ) )
main.log.info( "Get links in the network" )
summaryResult = main.Cluster.active( 0 ).CLI.summary()
@@ -115,7 +116,7 @@
main.log.info( listResult )
if linkNum < 100:
main.log.error( "Link number is wrong!" )
- time.sleep( int( main.params['timers']['TopoDiscovery'] ) )
+ time.sleep( int( main.params[ 'timers' ][ 'TopoDiscovery' ] ) )
listResult = main.Cluster.active( 0 ).CLI.links( jsonFormat=False )
main.log.info( listResult )
main.cleanAndExit()
@@ -130,7 +131,6 @@
main.log.info( "Activate SDN-IP failed!" )
main.cleanAndExit()
-
main.log.info( "Wait SDN-IP to finish installing connectivity intents \
and the BGP paths in data plane are ready..." )
time.sleep( int( main.params[ 'timers' ][ 'SdnIpSetup' ] ) )
@@ -139,11 +139,10 @@
time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
time.sleep( int( main.params[ 'timers' ][ 'PathAvailable' ] ) )
-
def CASE102( self, main ):
- '''
+ """
This test case is to load the methods from other Python files.
- '''
+ """
import imp
main.case( "Loading methods from other Python file" )
@@ -154,12 +153,10 @@
wrapperFile +
".py" )
-
def CASE1( self, main ):
- '''
+ """
ping test from 7 bgp peers to BGP speaker
- '''
-
+ """
main.case( "Ping tests between BGP peers and speakers" )
main.Functions.pingSpeakerToPeer( main, speakers=[ "spk1" ],
peers=[ "p64514", "p64515", "p64516" ],
@@ -174,16 +171,15 @@
expectAllSuccess=True )
def CASE2( self, main ):
- '''
+ """
point-to-point intents test for each BGP peer and BGP speaker pair
- '''
+ """
main.sdnBase.pToPIntentTest( 6 )
-
def CASE3( self, main ):
- '''
+ """
routes and intents check to all BGP peers
- '''
+ """
main.case( "Check routes and M2S intents to all BGP peers" )
allRoutesExpected = []
@@ -197,17 +193,16 @@
main.sdnBase.routeAndIntentCheck( allRoutesExpected, 7 )
-
def CASE4( self, main ):
- '''
+ """
Ping test in data plane for each route
- '''
+ """
main.case( "Ping test for each route, all hosts behind BGP peers" )
- #No vlan
+ # No vlan
main.Functions.pingHostToHost( main,
hosts=[ "h64514", "h64515", "h64516" ],
expectAllSuccess=True )
- #vlan 10
+ # vlan 10
main.Functions.pingHostToHost( main,
hosts=[ "h64519", "h64520" ],
expectAllSuccess=True )
@@ -218,28 +213,27 @@
expectAllSuccess=True )
def CASE5( self, main ):
- '''
+ """
Cut links to peers one by one, check routes/intents
- '''
+ """
main.sdnBase.linkUpDownCheck( "p64514", "p64515", "p64516",
6, 6, 5, 5, 4, 4,
"spk1", [ "h64514", "h64515", "h64516" ],
"down" )
-
def CASE6( self, main ):
- '''
+ """
Recover links to peers one by one, check routes/intents
- '''
+ """
main.sdnBase.linkUpDownCheck( "p64514", "p64515", "p64516",
5, 5, 6, 6, 7, 7,
"spk1", [ "h64514", "h64515", "h64516" ],
"up" )
def CASE7( self, main ):
- '''
+ """
Shut down a edge switch, check P-2-P and M-2-S intents, ping test
- '''
+ """
import time
main.case( "Stop edge sw32,check P-2-P and M-2-S intents, ping test" )
main.step( "Stop sw32" )
@@ -250,9 +244,9 @@
if result == main.TRUE:
time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
- main.Functions.checkRouteNum( main, 6 ) #stop one sw, which bring one link between peer and sw down.
+ main.Functions.checkRouteNum( main, 6 ) # stop one sw, which bring one link between peer and sw down.
main.Functions.checkM2SintentNum( main, 6 )
- main.Functions.checkP2PintentNum( main, 36 ) #6 intents from sw to speakers x 6 intents to sw x 2 intents between them
+ main.Functions.checkP2PintentNum( main, 36 ) # 6 intents from sw to speakers x 6 intents to sw x 2 intents between them
else:
main.log.error( "Stopping switch failed!" )
main.cleanAndExit()
@@ -268,7 +262,7 @@
onpass="Ping test result is correct",
onfail="Ping test result is wrong" )
- if pingResult1 == False:
+ if not pingResult1:
main.cleanAndExit()
main.step( "Check ping between BGP peers and speakers" )
@@ -282,38 +276,37 @@
onpass="Speaker1 ping peers successful",
onfail="Speaker1 ping peers NOT successful" )
- if pingResult2 == False:
+ if not pingResult2:
main.cleanAndExit()
main.step( "Check whether all flow status are ADDED" )
flowCheck = utilities.retry( main.Cluster.active( 0 ).CLI.checkFlowsState,
main.FALSE,
- kwargs={'isPENDING':False},
+ kwargs={ 'isPENDING': False },
attempts=10 )
- utilities.assertEquals( \
+ utilities.assertEquals(
expect=main.TRUE,
actual=flowCheck,
onpass="Flow status is correct!",
onfail="Flow status is wrong!" )
-
def CASE8( self, main ):
- '''
- Bring up the edge switch (sw32) which was shut down in CASE7,
+ """
+ Bring up the edge switch ( sw32 ) which was shut down in CASE7,
check P-2-P and M-2-S intents, ping test
- '''
+ """
import time
main.case( "Start the edge sw32, check P-2-P and M-2-S intents, ping test" )
main.step( "Start sw32" )
result1 = main.Mininet.switch( SW="sw32", OPTION="start" )
- utilities.assertEquals( \
+ utilities.assertEquals(
expect=main.TRUE,
actual=result1,
onpass="Starting switch succeeded!",
onfail="Starting switch failed!" )
result2 = main.Mininet.assignSwController( "sw32", main.Cluster.active( 0 ).ipAddress )
- utilities.assertEquals( \
+ utilities.assertEquals(
expect=main.TRUE,
actual=result2,
onpass="Connect switch to ONOS succeeded!",
@@ -331,28 +324,27 @@
main.step( "Check whether all flow status are ADDED" )
flowCheck = utilities.retry( main.Cluster.active( 0 ).CLI.checkFlowsState,
main.FALSE,
- kwargs={'isPENDING':False},
+ kwargs={ 'isPENDING': False },
attempts=10 )
- utilities.assertEquals( \
+ utilities.assertEquals(
expect=main.TRUE,
actual=flowCheck,
onpass="Flow status is correct!",
onfail="Flow status is wrong!" )
# Ping test
- main.Functions.pingSpeakerToPeer( main, speakers=["spk1"],
- peers=["p64514", "p64515", "p64516"],
- expectAllSuccess=True )
+ main.Functions.pingSpeakerToPeer( main, speakers=[ "spk1" ],
+ peers=[ "p64514", "p64515", "p64516" ],
+ expectAllSuccess=True )
main.Functions.pingHostToHost( main,
- hosts=["h64514", "h64515", "h64516"],
- expectAllSuccess=True )
-
+ hosts=[ "h64514", "h64515", "h64516" ],
+ expectAllSuccess=True )
def CASE9( self, main ):
- '''
+ """
Bring down a switch in best path, check:
route number, P2P intent number, M2S intent number, ping test
- '''
+ """
main.case( "Stop sw11 located in best path, \
check route number, P2P intent number, M2S intent number, ping test" )
@@ -382,27 +374,26 @@
main.step( "Check whether all flow status are ADDED" )
flowCheck = utilities.retry( main.Cluster.active( 0 ).CLI.checkFlowsState,
main.FALSE,
- kwargs={'isPENDING':False},
+ kwargs={ 'isPENDING': False },
attempts=10 )
- utilities.assertEquals( \
+ utilities.assertEquals(
expect=main.TRUE,
actual=flowCheck,
onpass="Flow status is correct!",
onfail="Flow status is wrong!" )
# Ping test
- main.Functions.pingSpeakerToPeer( main, speakers=["spk1"],
- peers=["p64514", "p64515", "p64516"],
- expectAllSuccess=True )
+ main.Functions.pingSpeakerToPeer( main, speakers=[ "spk1" ],
+ peers=[ "p64514", "p64515", "p64516" ],
+ expectAllSuccess=True )
main.Functions.pingHostToHost( main,
- hosts=["h64514", "h64515", "h64516"],
- expectAllSuccess=True )
-
+ hosts=[ "h64514", "h64515", "h64516" ],
+ expectAllSuccess=True )
def CASE10( self, main ):
- '''
+ """
Bring up the switch which was stopped in CASE9, check:
route number, P2P intent number, M2S intent number, ping test
- '''
+ """
main.case( "Start sw11 which was stopped in CASE9, \
check route number, P2P intent number, M2S intent number, ping test" )
@@ -437,17 +428,17 @@
main.step( "Check whether all flow status are ADDED" )
flowCheck = utilities.retry( main.Cluster.active( 0 ).CLI.checkFlowsState,
main.FALSE,
- kwargs={'isPENDING':False},
+ kwargs={ 'isPENDING': False },
attempts=10 )
- utilities.assertEquals( \
+ utilities.assertEquals(
expect=main.TRUE,
actual=flowCheck,
onpass="Flow status is correct!",
onfail="Flow status is wrong!" )
# Ping test
- main.Functions.pingSpeakerToPeer( main, speakers=["spk1"],
- peers=["p64514", "p64515", "p64516"],
- expectAllSuccess=True )
+ main.Functions.pingSpeakerToPeer( main, speakers=[ "spk1" ],
+ peers=[ "p64514", "p64515", "p64516" ],
+ expectAllSuccess=True )
main.Functions.pingHostToHost( main,
- hosts=["h64514", "h64515", "h64516"],
- expectAllSuccess=True )
+ hosts=[ "h64514", "h64515", "h64516" ],
+ expectAllSuccess=True )
diff --git a/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py b/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py
index a284213..81d2d96 100644
--- a/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py
+++ b/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/Functions.py
@@ -1,5 +1,5 @@
"""
-Copyright 2016 Open Networking Foundation (ONF)
+Copyright 2016 Open Networking Foundation ( ONF )
Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
@@ -8,7 +8,7 @@
TestON is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
+ ( at your option ) any later version.
TestON is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -18,11 +18,10 @@
You should have received a copy of the GNU General Public License
along with TestON. If not, see <http://www.gnu.org/licenses/>.
"""
-
def checkRouteNum( main, routeNumExpected ):
import time
main.step( "Check routes installed" )
- wait = int( main.params['timers']['PathAvailable'] )
+ wait = int( main.params[ 'timers' ][ 'PathAvailable' ] )
main.log.info( "Route number expected:" )
main.log.info( routeNumExpected )
main.log.info( "Route number from ONOS CLI:" )
@@ -32,85 +31,88 @@
time.sleep( wait )
routeNumActual = main.Cluster.active( 0 ).CLI.ipv4RouteNumber()
main.log.info( routeNumActual )
- utilities.assertEquals( \
- expect = routeNumExpected, actual = routeNumActual,
- onpass = "Route number is correct!",
- onfail = "Route number is wrong!" )
+ utilities.assertEquals(
+ expect=routeNumExpected, actual=routeNumActual,
+ onpass="Route number is correct!",
+ onfail="Route number is wrong!" )
+
def checkM2SintentNum( main, intentNumExpected ):
import time
main.step( "Check M2S intents installed" )
- wait = int( main.params['timers']['PathAvailable'] )
- jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat = True, summary = True,
- TYPE = "multiPointToSinglePoint" )
+ wait = int( main.params[ 'timers' ][ 'PathAvailable' ] )
+ jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat=True, summary=True,
+ TYPE="multiPointToSinglePoint" )
try:
- intentNumActual = jsonResult['installed']
+ intentNumActual = jsonResult[ 'installed' ]
except TypeError as e:
intentNumActual = -1
main.log.error( e )
if intentNumActual != intentNumExpected:
time.sleep( wait )
- jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat = True, summary = True,
- TYPE = "multiPointToSinglePoint" )
+ jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat=True, summary=True,
+ TYPE="multiPointToSinglePoint" )
try:
- intentNumActual = jsonResult['installed']
+ intentNumActual = jsonResult[ 'installed' ]
except TypeError as e:
intentNumActual = -1
main.log.error( e )
main.log.info( "Intent number expected: {}".format( intentNumExpected ) )
main.log.info( "Intent number from ONOS CLI: {}".format( intentNumActual ) )
- utilities.assertEquals( \
- expect = intentNumExpected, actual = intentNumActual,
- onpass = "M2S intent number is correct!",
- onfail = "M2S intent number is wrong!" )
+ utilities.assertEquals(
+ expect=intentNumExpected, actual=intentNumActual,
+ onpass="M2S intent number is correct!",
+ onfail="M2S intent number is wrong!" )
+
def checkP2PintentNum( main, intentNumExpected ):
import time
main.step( "Check P2P intents installed" )
- wait = int( main.params['timers']['PathAvailable'] )
- jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat = True, summary = True,
- TYPE = "pointToPoint" )
+ wait = int( main.params[ 'timers' ][ 'PathAvailable' ] )
+ jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat=True, summary=True,
+ TYPE="pointToPoint" )
try:
- intentNumActual = jsonResult['installed']
+ intentNumActual = jsonResult[ 'installed' ]
except TypeError as e:
intentNumActual = -1
main.log.error( e )
if intentNumActual != intentNumExpected:
time.sleep( wait )
- jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat = True, summary = True,
- TYPE = "pointToPoint" )
+ jsonResult = main.Cluster.active( 0 ).CLI.intents( jsonFormat=True, summary=True,
+ TYPE="pointToPoint" )
try:
- intentNumActual = jsonResult['installed']
+ intentNumActual = jsonResult[ 'installed' ]
except TypeError as e:
intentNumActual = -1
main.log.error( e )
main.log.info( "Intent number expected: {}".format( intentNumExpected ) )
main.log.info( "Intent number from ONOS CLI: {}".format( intentNumActual ) )
- utilities.assertEquals( \
- expect = intentNumExpected, actual = intentNumActual,
- onpass = "P2P intent number is correct!",
- onfail = "P2P intent number is wrong!" )
+ utilities.assertEquals(
+ expect=intentNumExpected, actual=intentNumActual,
+ onpass="P2P intent number is correct!",
+ onfail="P2P intent number is wrong!" )
+
def checkFlowNum( main, switch, flowNumExpected ):
import time
main.step( "Check flow entry number in " + switch )
- wait = int( main.params['timers']['PathAvailable'] )
+ wait = int( main.params[ 'timers' ][ 'PathAvailable' ] )
main.log.info( "Flow number expected: {}".format( flowNumExpected ) )
flowNumActual = main.Mininet.getSwitchFlowCount( switch )
- if flowNumActual != flowNumExpected :
+ if flowNumActual != flowNumExpected:
time.sleep( wait )
flowNumActual = main.Mininet.getSwitchFlowCount( switch )
main.log.info( "Flow number actual: {}".format( flowNumActual ) )
- utilities.assertEquals( \
- expect = flowNumExpected, actual = flowNumActual,
- onpass = "Flow number in " + switch + " is correct!",
- onfail = "Flow number in " + switch + " is wrong!" )
+ utilities.assertEquals(
+ expect=flowNumExpected, actual=flowNumActual,
+ onpass="Flow number in " + switch + " is correct!",
+ onfail="Flow number in " + switch + " is wrong!" )
-def pingSpeakerToPeer( main, speakers = [ "spk1" ],
- peers = [ "peer64514", "peer64515", "peer64516" ],
- expectAllSuccess = True ):
+def pingSpeakerToPeer( main, speakers=[ "spk1" ],
+ peers=[ "peer64514", "peer64515", "peer64516" ],
+ expectAllSuccess=True ):
"""
Carry out ping test between each BGP speaker and peer pair
Optional argument:
@@ -135,26 +137,26 @@
if expectAllSuccess:
for speaker in speakers:
for peer in peers:
- tmpResult = main.Mininet.pingHost( src = speaker,
- target = peer )
+ tmpResult = main.Mininet.pingHost( src=speaker,
+ target=peer )
result = result and ( tmpResult == main.TRUE )
else:
for speaker in speakers:
for peer in peers:
- tmpResult = main.Mininet.pingHost( src = speaker,
- target = peer )
+ tmpResult = main.Mininet.pingHost( src=speaker,
+ target=peer )
- utilities.assert_equals( expect = True, actual = result,
- onpass = "Ping test results are expected",
- onfail = "Ping test results are Not expected" )
+ utilities.assert_equals( expect=True, actual=result,
+ onpass="Ping test results are expected",
+ onfail="Ping test results are Not expected" )
- if result == False:
+ if not result:
main.cleanAndExit()
def pingHostToHost( main,
- hosts = [ "h64514", "h64515", "h64516" ],
- expectAllSuccess = True ):
+ hosts=[ "h64514", "h64515", "h64516" ],
+ expectAllSuccess=True ):
"""
Carry out ping test between each BGP host pair
Optional argument:
@@ -173,23 +175,22 @@
for srcHost in hosts:
for targetHost in hosts:
if srcHost != targetHost:
- tmpResult = main.Mininet.pingHost( src = srcHost,
- target = targetHost )
+ tmpResult = main.Mininet.pingHost( src=srcHost,
+ target=targetHost )
result = result and ( tmpResult == main.TRUE )
else:
for srcHost in hosts:
for targetHost in hosts:
if srcHost != targetHost:
- tmpResult = main.Mininet.pingHost( src = srcHost,
- target = targetHost )
+ tmpResult = main.Mininet.pingHost( src=srcHost,
+ target=targetHost )
result = result and ( tmpResult == main.FALSE )
- utilities.assert_equals( expect = True, actual = result,
- onpass = "Ping test results are expected",
- onfail = "Ping test results are Not expected" )
+ utilities.assert_equals( expect=True, actual=result,
+ onpass="Ping test results are expected",
+ onfail="Ping test results are Not expected" )
- '''
+ """
if result == False:
main.cleanAndExit()
- '''
-
+ """
diff --git a/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/USECASE_SdnipI2MN.py b/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/USECASE_SdnipI2MN.py
old mode 100755
new mode 100644
index deced6b..23607ad
--- a/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/USECASE_SdnipI2MN.py
+++ b/TestON/tests/USECASE/USECASE_SdnipFunction/dependencies/USECASE_SdnipI2MN.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
"""
-Copyright 2015 Open Networking Foundation (ONF)
+Copyright 2015 Open Networking Foundation ( ONF )
Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
@@ -10,7 +10,7 @@
TestON is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
+ ( at your option ) any later version.
TestON is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,18 +20,15 @@
You should have received a copy of the GNU General Public License
along with TestON. If not, see <http://www.gnu.org/licenses/>.
"""
-
"""
Set up the SDN-IP topology as same as it on Internet2
"""
-
"""
-AS 64513, (SDN AS)
+AS 64513, ( SDN AS )
AS 64514, reachable by 10.0.4.1
AS 64515, reachable by 10.0.5.1
AS 64516, reachable by 10.0.6.1
"""
-
from mininet.net import Mininet
from mininet.log import setLogLevel, info
from mininet.cli import CLI
@@ -45,13 +42,15 @@
# onos1IP = '10.254.1.201'
numSw = 39
+
class VLANHost( Host ):
+
def config( self, vlan=100, intfName=None, **params ):
r = super( Host, self ).config( **params )
intf = self.intf( intfName )
self.cmd( 'ifconfig %s inet 0' % intf )
self.cmd( 'vconfig add %s %d' % ( intf, vlan ) )
- self.cmd( 'ifconfig %s.%d inet %s' % ( intf, vlan, params['ip'] ) )
+ self.cmd( 'ifconfig %s.%d inet %s' % ( intf, vlan, params[ 'ip' ] ) )
newName = '%s.%d' % ( intf, vlan )
intf.name = newName
self.nameToIntf[ newName ] = intf
@@ -59,6 +58,7 @@
class SDNTopo( Topo ):
+
"SDN Topology"
def __init__( self, *args, **kwargs ):
@@ -75,107 +75,105 @@
p64519 = self.addHost( 'p64519', cls=VLANHost, vlan=10 )
p64520 = self.addHost( 'p64520', cls=VLANHost, vlan=10 )
- '''
- sw1 = self.addSwitch( 'SEAT', dpid = '00000000000000a1' )
- sw2 = self.addSwitch( 'PORT', dpid = '00000000000000a2' )
- sw3 = self.addSwitch( 'SUNN', dpid = '00000000000000a3' )
- sw4 = self.addSwitch( 'RENO', dpid = '00000000000000a4' )
- sw5 = self.addSwitch( 'LOSA', dpid = '00000000000000a5' )
- sw6 = self.addSwitch( 'MISS', dpid = '00000000000000a6' )
- sw7 = self.addSwitch( 'LASV', dpid = '00000000000000a7' )
- sw8 = self.addSwitch( 'SALT', dpid = '00000000000000a8' )
- sw9 = self.addSwitch( 'PHOE', dpid = '00000000000000a9' )
- sw10 = self.addSwitch( 'TUCS', dpid = '0000000000000a10' )
- sw11 = self.addSwitch( 'DENV', dpid = '0000000000000a11' )
- sw12 = self.addSwitch( 'ELPA', dpid = '0000000000000a12' )
- sw13 = self.addSwitch( 'MINN', dpid = '0000000000000a13' )
- sw14 = self.addSwitch( 'KANS', dpid = '0000000000000a14' )
- sw15 = self.addSwitch( 'TULS', dpid = '0000000000000a15' )
- sw16 = self.addSwitch( 'DALL', dpid = '0000000000000a16' )
- sw17 = self.addSwitch( 'HOUH', dpid = '0000000000000a17' )
- sw18 = self.addSwitch( 'COLU', dpid = '0000000000000a18' )
- sw19 = self.addSwitch( 'JCSN', dpid = '0000000000000a19' )
- sw20 = self.addSwitch( 'BATO', dpid = '0000000000000a20' )
- sw21 = self.addSwitch( 'EQCH', dpid = '0000000000000a21' )
- sw22 = self.addSwitch( 'STAR', dpid = '0000000000000a22' )
- sw23 = self.addSwitch( 'CHIC', dpid = '0000000000000a23' )
- sw24 = self.addSwitch( 'INDI', dpid = '0000000000000a24' )
- sw25 = self.addSwitch( 'CINC', dpid = '0000000000000a25' )
- sw26 = self.addSwitch( 'LOUI', dpid = '0000000000000a26' )
- sw27 = self.addSwitch( 'ATLA', dpid = '0000000000000a27' )
- sw28 = self.addSwitch( 'JACK', dpid = '0000000000000a28' )
- sw29 = self.addSwitch( 'CLEV', dpid = '0000000000000a29' )
- sw30 = self.addSwitch( 'PITT', dpid = '0000000000000a30' )
- sw31 = self.addSwitch( 'ASHB', dpid = '0000000000000a31' )
- sw32 = self.addSwitch( 'WASH', dpid = '0000000000000a32' )
- sw33 = self.addSwitch( 'RALE', dpid = '0000000000000a33' )
- sw34 = self.addSwitch( 'CHAR', dpid = '0000000000000a34' )
- sw35 = self.addSwitch( 'ALBA', dpid = '0000000000000a35' )
- sw36 = self.addSwitch( 'BOST', dpid = '0000000000000a36' )
- sw37 = self.addSwitch( 'HART', dpid = '0000000000000a37' )
- sw38 = self.addSwitch( 'NEWY', dpid = '0000000000000a38' )
- sw39 = self.addSwitch( 'PHIL', dpid = '0000000000000a39' )
- '''
- sw1 = self.addSwitch( 'sw1', dpid = '00000000000000a1' )
- sw2 = self.addSwitch( 'sw2', dpid = '00000000000000a2' )
- sw3 = self.addSwitch( 'sw3', dpid = '00000000000000a3' )
- sw4 = self.addSwitch( 'sw4', dpid = '00000000000000a4' )
- sw5 = self.addSwitch( 'sw5', dpid = '00000000000000a5' )
- sw6 = self.addSwitch( 'sw6', dpid = '00000000000000a6' )
- sw7 = self.addSwitch( 'sw7', dpid = '00000000000000a7' )
- sw8 = self.addSwitch( 'sw8', dpid = '00000000000000a8' )
- sw9 = self.addSwitch( 'sw9', dpid = '00000000000000a9' )
- sw10 = self.addSwitch( 'sw10', dpid = '0000000000000a10' )
- sw11 = self.addSwitch( 'sw11', dpid = '0000000000000a11' )
- sw12 = self.addSwitch( 'sw12', dpid = '0000000000000a12' )
- sw13 = self.addSwitch( 'sw13', dpid = '0000000000000a13' )
- sw14 = self.addSwitch( 'sw14', dpid = '0000000000000a14' )
- sw15 = self.addSwitch( 'sw15', dpid = '0000000000000a15' )
- sw16 = self.addSwitch( 'sw16', dpid = '0000000000000a16' )
- sw17 = self.addSwitch( 'sw17', dpid = '0000000000000a17' )
- sw18 = self.addSwitch( 'sw18', dpid = '0000000000000a18' )
- sw19 = self.addSwitch( 'sw19', dpid = '0000000000000a19' )
- sw20 = self.addSwitch( 'sw20', dpid = '0000000000000a20' )
- sw21 = self.addSwitch( 'sw21', dpid = '0000000000000a21' )
- sw22 = self.addSwitch( 'sw22', dpid = '0000000000000a22' )
- sw23 = self.addSwitch( 'sw23', dpid = '0000000000000a23' )
- sw24 = self.addSwitch( 'sw24', dpid = '0000000000000a24' )
- sw25 = self.addSwitch( 'sw25', dpid = '0000000000000a25' )
- sw26 = self.addSwitch( 'sw26', dpid = '0000000000000a26' )
- sw27 = self.addSwitch( 'sw27', dpid = '0000000000000a27' )
- sw28 = self.addSwitch( 'sw28', dpid = '0000000000000a28' )
- sw29 = self.addSwitch( 'sw29', dpid = '0000000000000a29' )
- sw30 = self.addSwitch( 'sw30', dpid = '0000000000000a30' )
- sw31 = self.addSwitch( 'sw31', dpid = '0000000000000a31' )
- sw32 = self.addSwitch( 'sw32', dpid = '0000000000000a32' )
- sw33 = self.addSwitch( 'sw33', dpid = '0000000000000a33' )
- sw34 = self.addSwitch( 'sw34', dpid = '0000000000000a34' )
- sw35 = self.addSwitch( 'sw35', dpid = '0000000000000a35' )
- sw36 = self.addSwitch( 'sw36', dpid = '0000000000000a36' )
- sw37 = self.addSwitch( 'sw37', dpid = '0000000000000a37' )
- sw38 = self.addSwitch( 'sw38', dpid = '0000000000000a38' )
- sw39 = self.addSwitch( 'sw39', dpid = '0000000000000a39' )
-
+ """
+ sw1 = self.addSwitch( 'SEAT', dpid='00000000000000a1' )
+ sw2 = self.addSwitch( 'PORT', dpid='00000000000000a2' )
+ sw3 = self.addSwitch( 'SUNN', dpid='00000000000000a3' )
+ sw4 = self.addSwitch( 'RENO', dpid='00000000000000a4' )
+ sw5 = self.addSwitch( 'LOSA', dpid='00000000000000a5' )
+ sw6 = self.addSwitch( 'MISS', dpid='00000000000000a6' )
+ sw7 = self.addSwitch( 'LASV', dpid='00000000000000a7' )
+ sw8 = self.addSwitch( 'SALT', dpid='00000000000000a8' )
+ sw9 = self.addSwitch( 'PHOE', dpid='00000000000000a9' )
+ sw10 = self.addSwitch( 'TUCS', dpid='0000000000000a10' )
+ sw11 = self.addSwitch( 'DENV', dpid='0000000000000a11' )
+ sw12 = self.addSwitch( 'ELPA', dpid='0000000000000a12' )
+ sw13 = self.addSwitch( 'MINN', dpid='0000000000000a13' )
+ sw14 = self.addSwitch( 'KANS', dpid='0000000000000a14' )
+ sw15 = self.addSwitch( 'TULS', dpid='0000000000000a15' )
+ sw16 = self.addSwitch( 'DALL', dpid='0000000000000a16' )
+ sw17 = self.addSwitch( 'HOUH', dpid='0000000000000a17' )
+ sw18 = self.addSwitch( 'COLU', dpid='0000000000000a18' )
+ sw19 = self.addSwitch( 'JCSN', dpid='0000000000000a19' )
+ sw20 = self.addSwitch( 'BATO', dpid='0000000000000a20' )
+ sw21 = self.addSwitch( 'EQCH', dpid='0000000000000a21' )
+ sw22 = self.addSwitch( 'STAR', dpid='0000000000000a22' )
+ sw23 = self.addSwitch( 'CHIC', dpid='0000000000000a23' )
+ sw24 = self.addSwitch( 'INDI', dpid='0000000000000a24' )
+ sw25 = self.addSwitch( 'CINC', dpid='0000000000000a25' )
+ sw26 = self.addSwitch( 'LOUI', dpid='0000000000000a26' )
+ sw27 = self.addSwitch( 'ATLA', dpid='0000000000000a27' )
+ sw28 = self.addSwitch( 'JACK', dpid='0000000000000a28' )
+ sw29 = self.addSwitch( 'CLEV', dpid='0000000000000a29' )
+ sw30 = self.addSwitch( 'PITT', dpid='0000000000000a30' )
+ sw31 = self.addSwitch( 'ASHB', dpid='0000000000000a31' )
+ sw32 = self.addSwitch( 'WASH', dpid='0000000000000a32' )
+ sw33 = self.addSwitch( 'RALE', dpid='0000000000000a33' )
+ sw34 = self.addSwitch( 'CHAR', dpid='0000000000000a34' )
+ sw35 = self.addSwitch( 'ALBA', dpid='0000000000000a35' )
+ sw36 = self.addSwitch( 'BOST', dpid='0000000000000a36' )
+ sw37 = self.addSwitch( 'HART', dpid='0000000000000a37' )
+ sw38 = self.addSwitch( 'NEWY', dpid='0000000000000a38' )
+ sw39 = self.addSwitch( 'PHIL', dpid='0000000000000a39' )
+ """
+ sw1 = self.addSwitch( 'sw1', dpid='00000000000000a1' )
+ sw2 = self.addSwitch( 'sw2', dpid='00000000000000a2' )
+ sw3 = self.addSwitch( 'sw3', dpid='00000000000000a3' )
+ sw4 = self.addSwitch( 'sw4', dpid='00000000000000a4' )
+ sw5 = self.addSwitch( 'sw5', dpid='00000000000000a5' )
+ sw6 = self.addSwitch( 'sw6', dpid='00000000000000a6' )
+ sw7 = self.addSwitch( 'sw7', dpid='00000000000000a7' )
+ sw8 = self.addSwitch( 'sw8', dpid='00000000000000a8' )
+ sw9 = self.addSwitch( 'sw9', dpid='00000000000000a9' )
+ sw10 = self.addSwitch( 'sw10', dpid='0000000000000a10' )
+ sw11 = self.addSwitch( 'sw11', dpid='0000000000000a11' )
+ sw12 = self.addSwitch( 'sw12', dpid='0000000000000a12' )
+ sw13 = self.addSwitch( 'sw13', dpid='0000000000000a13' )
+ sw14 = self.addSwitch( 'sw14', dpid='0000000000000a14' )
+ sw15 = self.addSwitch( 'sw15', dpid='0000000000000a15' )
+ sw16 = self.addSwitch( 'sw16', dpid='0000000000000a16' )
+ sw17 = self.addSwitch( 'sw17', dpid='0000000000000a17' )
+ sw18 = self.addSwitch( 'sw18', dpid='0000000000000a18' )
+ sw19 = self.addSwitch( 'sw19', dpid='0000000000000a19' )
+ sw20 = self.addSwitch( 'sw20', dpid='0000000000000a20' )
+ sw21 = self.addSwitch( 'sw21', dpid='0000000000000a21' )
+ sw22 = self.addSwitch( 'sw22', dpid='0000000000000a22' )
+ sw23 = self.addSwitch( 'sw23', dpid='0000000000000a23' )
+ sw24 = self.addSwitch( 'sw24', dpid='0000000000000a24' )
+ sw25 = self.addSwitch( 'sw25', dpid='0000000000000a25' )
+ sw26 = self.addSwitch( 'sw26', dpid='0000000000000a26' )
+ sw27 = self.addSwitch( 'sw27', dpid='0000000000000a27' )
+ sw28 = self.addSwitch( 'sw28', dpid='0000000000000a28' )
+ sw29 = self.addSwitch( 'sw29', dpid='0000000000000a29' )
+ sw30 = self.addSwitch( 'sw30', dpid='0000000000000a30' )
+ sw31 = self.addSwitch( 'sw31', dpid='0000000000000a31' )
+ sw32 = self.addSwitch( 'sw32', dpid='0000000000000a32' )
+ sw33 = self.addSwitch( 'sw33', dpid='0000000000000a33' )
+ sw34 = self.addSwitch( 'sw34', dpid='0000000000000a34' )
+ sw35 = self.addSwitch( 'sw35', dpid='0000000000000a35' )
+ sw36 = self.addSwitch( 'sw36', dpid='0000000000000a36' )
+ sw37 = self.addSwitch( 'sw37', dpid='0000000000000a37' )
+ sw38 = self.addSwitch( 'sw38', dpid='0000000000000a38' )
+ sw39 = self.addSwitch( 'sw39', dpid='0000000000000a39' )
# Add a layer2 switch for control plane connectivity
# This switch isn't part of the SDN topology
# We'll use the ovs-controller to turn this into a learning switch
- swCtl100 = self.addSwitch( 'swCtl100', dpid = '0000000000000100' )
-
+ swCtl100 = self.addSwitch( 'swCtl100', dpid='0000000000000100' )
# BGP speaker hosts
spk1 = self.addHost( 'spk1' )
spk2 = self.addHost( 'spk2', cls=VLANHost, vlan=20 )
spk3 = self.addHost( 'spk3', cls=VLANHost, vlan=10 )
- root = self.addHost( 'root', inNamespace = False , ip = '0' )
+ root = self.addHost( 'root', inNamespace=False, ip='0' )
# hosts behind each AS
h64514 = self.addHost( 'h64514' )
h64515 = self.addHost( 'h64515' )
h64516 = self.addHost( 'h64516' )
- #VLAN hosts behind each AS
+ # VLAN hosts behind each AS
h64517 = self.addHost( 'h64517', cls=VLANHost, vlan=20 )
h64518 = self.addHost( 'h64518', cls=VLANHost, vlan=20 )
h64519 = self.addHost( 'h64519', cls=VLANHost, vlan=10 )
@@ -257,7 +255,6 @@
self.addLink( p64519, h64519 )
self.addLink( p64520, h64520 )
-
# Internal Connection To Hosts
self.addLink( swCtl100, p64514 )
self.addLink( swCtl100, p64515 )
@@ -272,7 +269,6 @@
self.addLink( swCtl100, spk2 )
self.addLink( swCtl100, spk3 )
-
# add h64514 to control plane for ping test
self.addLink( swCtl100, h64514 )
self.addLink( swCtl100, h64517 )
@@ -289,23 +285,26 @@
host.cmd( '/usr/sbin/sshd -o "Banner %s"' % banner, '-o "UseDNS no"' )
info( '***', host.name, 'is running sshd on', intf, 'at', ip, '\n' )
-def startsshds ( hosts ):
+
+def startsshds( hosts ):
for h in hosts:
startsshd( h )
+
def stopsshd():
"Stop *all* sshd processes with a custom banner"
info( '*** Shutting down stale sshd/Banner processes ',
quietRun( "pkill -9 -f Banner" ), '\n' )
+
def startquagga( host, num, config_file ):
info( '*** Starting Quagga on %s\n' % host )
host.cmd( "cd %s" % QUAGGA_CONFIG_DIR )
zebra_cmd = \
- '%s/zebra -d -f ./zebra.conf -z %s/zserv%s.api -i %s/zebra%s.pid'\
+ '%s/zebra -d -f ./zebra.conf -z %s/zserv%s.api -i %s/zebra%s.pid'\
% ( QUAGGA_DIR, QUAGGA_RUN_DIR, num, QUAGGA_RUN_DIR, num )
quagga_cmd = '%s/bgpd -d -f %s -z %s/zserv%s.api -i %s/bgpd%s.pid' \
- % ( QUAGGA_DIR, config_file, QUAGGA_RUN_DIR, num, QUAGGA_RUN_DIR, num )
+ % ( QUAGGA_DIR, config_file, QUAGGA_RUN_DIR, num, QUAGGA_RUN_DIR, num )
print zebra_cmd
print quagga_cmd
@@ -313,32 +312,34 @@
host.cmd( zebra_cmd )
host.cmd( quagga_cmd )
+
def startquaggahost5( host, num ):
info( '*** Starting Quagga on %s\n' % host )
zebra_cmd = \
- '%s/zebra -d -f ./zebra.conf -z %s/zserv%s.api -i %s/zebra%s.pid' \
- % ( QUAGGA_DIR, QUAGGA_RUN_DIR, num, QUAGGA_RUN_DIR, num )
+ '%s/zebra -d -f ./zebra.conf -z %s/zserv%s.api -i %s/zebra%s.pid' \
+ % ( QUAGGA_DIR, QUAGGA_RUN_DIR, num, QUAGGA_RUN_DIR, num )
quagga_cmd = \
- '%s/bgpd -d -f ./as4quaggas/quagga%s.conf -z %s/zserv%s.api -i %s/bgpd%s.pid'\
+ '%s/bgpd -d -f ./as4quaggas/quagga%s.conf -z %s/zserv%s.api -i %s/bgpd%s.pid'\
% ( QUAGGA_DIR, num, QUAGGA_RUN_DIR, num, QUAGGA_RUN_DIR, num )
host.cmd( zebra_cmd )
host.cmd( quagga_cmd )
+
def stopquagga():
quietRun( 'sudo pkill -9 -f bgpd' )
quietRun( 'sudo pkill -9 -f zebra' )
+
def sdn1net():
topo = SDNTopo()
info( '*** Creating network\n' )
- # time.sleep( 30 )
- net = Mininet( topo = topo, controller = RemoteController )
-
+ # time.sleep( 30 )
+ net = Mininet( topo=topo, controller=RemoteController )
spk1, spk2, spk3, p64514, p64515, p64516, p64517, p64518, p64519, p64520 = \
- net.get( 'spk1', 'spk2', 'spk3',
- 'p64514', 'p64515', 'p64516', 'p64517', 'p64518', 'p64519', 'p64520' )
+ net.get( 'spk1', 'spk2', 'spk3',
+ 'p64514', 'p64515', 'p64516', 'p64517', 'p64518', 'p64519', 'p64520' )
# Adding addresses to host64513_1 interface connected to sw24
# for BGP peering
@@ -405,7 +406,6 @@
p64520.setIP( "20.0.0.254", 8, "p64520-eth1.10" )
p64520.setMAC( '00:00:00:00:00:20', 'p64520-eth1.10' )
-
# enable forwarding on BGP peer hosts
p64514.cmd( 'sysctl net.ipv4.conf.all.forwarding=1' )
p64515.cmd( 'sysctl net.ipv4.conf.all.forwarding=1' )
@@ -428,7 +428,7 @@
# Setup hosts in each non-SDN AS
h64514, h64515, h64516, h64517, h64518, h64519, h64520 = \
- net.get( 'h64514', 'h64515', 'h64516', 'h64517', 'h64518', 'h64519', 'h64520' )
+ net.get( 'h64514', 'h64515', 'h64516', 'h64517', 'h64518', 'h64519', 'h64520' )
h64514.cmd( 'ifconfig h64514-eth0 4.0.0.1 up' )
h64514.cmd( 'ip route add default via 4.0.0.254' )
h64514.setIP( '192.168.0.44', 24, 'h64514-eth1' ) # for control plane
@@ -455,16 +455,16 @@
swCtl100.cmd( 'ovs-vsctl set-fail-mode swCtl100 standalone' )
# connect all switches to controller
- '''
+ """
for i in range ( 1, numSw + 1 ):
swX = net.get( 'sw%s' % ( i ) )
swX.cmd( 'ovs-vsctl set-controller sw%s tcp:%s:6653' % ( i, onos1IP ) )
- '''
+ """
# Start Quagga as the external BGP routers
- '''
+ """
for i in range ( 64514, 64516 + 1 ):
startquagga( 'peer%s' % ( i ), i, 'quagga%s.conf' % ( i ) )
- '''
+ """
startquagga( p64514, 64514, 'quagga64514.conf' )
startquagga( p64515, 64515, 'quagga64515.conf' )
startquagga( p64516, 64516, 'quagga64516.conf' )
@@ -491,19 +491,18 @@
stopsshd()
hosts = [ p64514, p64515, p64516, p64517, p64518, p64519, p64520,
- h64514, h64517, h64519 ];
+ h64514, h64517, h64519 ]
startsshds( hosts )
#
- '''
+ """
forwarding1 = '%s:2000:%s:2000' % ( '1.1.1.2', onos1IP )
root.cmd( 'ssh -nNT -o "PasswordAuthentication no" \
-o "StrictHostKeyChecking no" -l sdn -L %s %s & ' % ( forwarding1, onos1IP ) )
- '''
+ """
# time.sleep( 3000000000 )
CLI( net )
-
stopsshd()
stopquagga()
net.stop()