Skip to content
Snippets Groups Projects
Commit 2fc5e46f authored by moijes12's avatar moijes12
Browse files

Update test_switchdpidassignment.py

parent 09b06509
No related branches found
No related tags found
No related merge requests found
...@@ -4,37 +4,40 @@ ...@@ -4,37 +4,40 @@
Regression tests for switch dpid assignment.""" Regression tests for switch dpid assignment."""
import unittest import unittest
from functools import partial
import re import re
from mininet.net import Mininet from mininet.net import Mininet
from mininet.node import Switch from mininet.node import Host, Controller
from mininet.node import UserSwitch, OVSSwitch, OVSLegacyKernelSwitch, IVSSwitch
from mininet.topo import Topo from mininet.topo import Topo
from mininet.log import setLogLevel from mininet.log import setLogLevel
from mininet.util import quietRun
class testSwitchDpidAssignment ( unittest.TestCase ):
class testSwitchDpidAssignmentCommon ( object ):
"""Verify Switch dpid assignment.""" """Verify Switch dpid assignment."""
switchClass = None # overridden in subclasses
def testDefaultDpid ( self ): def testDefaultDpid ( self ):
"""Verify that the default dpid is assigned using a valid provided """Verify that the default dpid is assigned using a valid provided
canonical switchname if no dpid is passed in switch creation.""" canonical switchname if no dpid is passed in switch creation."""
mn = Mininet( Topo() ) switch = Mininet( Topo(), self.switchClass, Host, Controller ).addSwitch( 's1' )
switch = mn.addSwitch( 's1' )
self.assertEqual( switch.defaultDpid(), switch.dpid ) self.assertEqual( switch.defaultDpid(), switch.dpid )
def testActualDpidAssignment( self ): def testActualDpidAssignment( self ):
"""Verify that Switch dpid is the actual dpid assigned if dpid is """Verify that Switch dpid is the actual dpid assigned if dpid is
passed in switch creation.""" passed in switch creation."""
mn = Mininet( Topo() ) switch = Mininet( Topo(), self.switchClass, Host, Controller ).addSwitch( 'A', dpid = '000000000000ABCD' )
switch = mn.addSwitch( 'A', dpid = '000000000000ABCD' )
self.assertEqual( switch.dpid, '000000000000ABCD' ) self.assertEqual( switch.dpid, '000000000000ABCD' )
def testDefaultDpidAssignmentFailure( self ): def testDefaultDpidAssignmentFailure( self ):
"""Verify that Default dpid assignment raises an Exception if the """Verify that Default dpid assignment raises an Exception if the
name of the switch does not contin a digit. Also verify the name of the switch does not contin a digit. Also verify the
exception message.""" exception message."""
mn = Mininet( Topo() )
with self.assertRaises( Exception ) as raises_cm: with self.assertRaises( Exception ) as raises_cm:
switch = mn.addSwitch( 'A' ) switch = Mininet( Topo(), self.switchClass, Host, Controller ).addSwitch( 'A' )
self.assertEqual(raises_cm.exception.message, 'Unable to derive ' self.assertEqual(raises_cm.exception.message, 'Unable to derive '
'default datapath ID - please either specify a dpid ' 'default datapath ID - please either specify a dpid '
'or use a canonical switch name such as s23.') 'or use a canonical switch name such as s23.')
...@@ -44,11 +47,41 @@ def testDefaultDpidLen( self ): ...@@ -44,11 +47,41 @@ def testDefaultDpidLen( self ):
16 - len(hex of first string of contiguous digits passed in switch 16 - len(hex of first string of contiguous digits passed in switch
name) 0's followed by hex of first string of contiguous digits passed name) 0's followed by hex of first string of contiguous digits passed
in switch name.""" in switch name."""
mn = Mininet( Topo() ) switch = Mininet( Topo(), self.switchClass, Host, Controller ).addSwitch( 's123' )
switch = mn.addSwitch( 's123' ) dpid = hex( int(re.findall( r'\d+', switch.name ) [0]) ) [ 2: ]
dpid = int(re.findall( r'\d+', switch.name ) [0]) try:
dpid = hex( dpid ) [ 2: ] if issubclass(UserSwitch, self.switchClass):
self.assertEqual( switch.dpid, '0' * (16 - len(dpid)) + str(dpid) ) # Dpid lenght of UserSwitch = 12
self.assertEqual( switch.dpid, '0' * (12 - len(dpid)) + str(dpid) )
else:
self.assertEqual( switch.dpid, '0' * (16 - len(dpid)) + str(dpid) )
except TypeError:
# Switch is OVS User Switch
self.assertEqual( switch.dpid, '0' * (16 - len(dpid)) + str(dpid) )
class testSwitchOVSKernel( testSwitchDpidAssignmentCommon, unittest.TestCase ):
"""Test dpid assignnment of OVS Kernel Switch."""
switchClass = OVSSwitch
class testSwitchOVSUser( testSwitchDpidAssignmentCommon, unittest.TestCase ):
"""Test dpid assignnment of OVS User Switch."""
switchClass = partial(OVSSwitch, datapath = 'user')
@unittest.skipUnless( quietRun( 'which ovs-openflowd' ), 'OVS Legacy Kernel switch is not installed' )
class testSwitchOVSLegacyKernel( testSwitchDpidAssignmentCommon, unittest.TestCase ):
"""Test dpid assignnment of OVS Legacy Kernel Switch."""
switchClass = OVSLegacyKernelSwitch
@unittest.skipUnless( quietRun( 'which ivs-ctl' ), 'IVS switch is not installed' )
class testSwitchIVS( testSwitchDpidAssignmentCommon, unittest.TestCase ):
"""Test dpid assignment of IVS switch."""
switchClass = IVSSwitch
@unittest.skipUnless( quietRun( 'which ofprotocol' ), 'Reference user switch is not installed' )
class testSwitchUserspace( testSwitchDpidAssignmentCommon, unittest.TestCase ):
"""Test dpid assignment of Userspace switch."""
switchClass = UserSwitch
if __name__ == '__main__': if __name__ == '__main__':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment