From 2fc5e46f1bff66eaef8fd2cdbca3656d09b0f401 Mon Sep 17 00:00:00 2001 From: moijes12 <moijes12@gmail.com> Date: Thu, 30 Jan 2014 23:41:46 +0530 Subject: [PATCH] Update test_switchdpidassignment.py --- mininet/test/test_switchdpidassignment.py | 59 ++++++++++++++++++----- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/mininet/test/test_switchdpidassignment.py b/mininet/test/test_switchdpidassignment.py index 2310e16f..29ae9e54 100644 --- a/mininet/test/test_switchdpidassignment.py +++ b/mininet/test/test_switchdpidassignment.py @@ -4,37 +4,40 @@ Regression tests for switch dpid assignment.""" import unittest +from functools import partial import re 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.log import setLogLevel +from mininet.util import quietRun -class testSwitchDpidAssignment ( unittest.TestCase ): + +class testSwitchDpidAssignmentCommon ( object ): """Verify Switch dpid assignment.""" + switchClass = None # overridden in subclasses + def testDefaultDpid ( self ): """Verify that the default dpid is assigned using a valid provided canonical switchname if no dpid is passed in switch creation.""" - mn = Mininet( Topo() ) - switch = mn.addSwitch( 's1' ) + switch = Mininet( Topo(), self.switchClass, Host, Controller ).addSwitch( 's1' ) self.assertEqual( switch.defaultDpid(), switch.dpid ) def testActualDpidAssignment( self ): """Verify that Switch dpid is the actual dpid assigned if dpid is passed in switch creation.""" - mn = Mininet( Topo() ) - switch = mn.addSwitch( 'A', dpid = '000000000000ABCD' ) + switch = Mininet( Topo(), self.switchClass, Host, Controller ).addSwitch( 'A', dpid = '000000000000ABCD' ) self.assertEqual( switch.dpid, '000000000000ABCD' ) def testDefaultDpidAssignmentFailure( self ): """Verify that Default dpid assignment raises an Exception if the name of the switch does not contin a digit. Also verify the exception message.""" - mn = Mininet( Topo() ) 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 ' 'default datapath ID - please either specify a dpid ' 'or use a canonical switch name such as s23.') @@ -44,11 +47,41 @@ def testDefaultDpidLen( self ): 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 in switch name.""" - mn = Mininet( Topo() ) - switch = mn.addSwitch( 's123' ) - dpid = int(re.findall( r'\d+', switch.name ) [0]) - dpid = hex( dpid ) [ 2: ] - self.assertEqual( switch.dpid, '0' * (16 - len(dpid)) + str(dpid) ) + switch = Mininet( Topo(), self.switchClass, Host, Controller ).addSwitch( 's123' ) + dpid = hex( int(re.findall( r'\d+', switch.name ) [0]) ) [ 2: ] + try: + if issubclass(UserSwitch, self.switchClass): + # 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__': -- GitLab