diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params
index 0fbda47..9ca0543 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params
@@ -13,6 +13,8 @@
     </SCALE>
 
     <DEPENDENCY>
+        <useCommonConf>False</useCommonConf>
+        <useCommonTopo>True</useCommonTopo>
         <topology>trellis_fabric.py</topology>
         <lib>routinglib.py,trellislib.py</lib>
     </DEPENDENCY>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.py b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.py
index d587f69..3586b0b 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.py
@@ -11,12 +11,20 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 1,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=1,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE2( self, main ):
         """
@@ -27,12 +35,20 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 2,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=2,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE3( self, main ):
         """
@@ -43,12 +59,20 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 3,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=3,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE4( self, main ):
         """
@@ -59,12 +83,20 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 4,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=4,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE5( self, main ):
         """
@@ -75,12 +107,20 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 5,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                                test_idx=5,
+                                topology='0x1',
+                                onosNodes=3,
+                                description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE6( self, main ):
         """
@@ -91,12 +131,20 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 6,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=6,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE7( self, main ):
         """
@@ -107,12 +155,20 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 7,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=7,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE8( self, main ):
         """
@@ -123,12 +179,20 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 8,
-                                topology = '2x4',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-untagged port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=8,
+                            topology='2x4',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts on vlan-untagged port" )
 
     def CASE11( self, main ):
         """
@@ -139,13 +203,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 11,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=11,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10 ] )
 
     def CASE12( self, main ):
         """
@@ -156,13 +228,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 12,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=12,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10 ] )
 
     def CASE13( self, main ):
         """
@@ -173,13 +253,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 13,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10, 20, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=13,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10, 20, 20 ] )
 
     def CASE14( self, main ):
         """
@@ -190,13 +278,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 14,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10, 20, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=14,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10, 20, 20 ] )
 
     def CASE15( self, main ):
         """
@@ -207,13 +303,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 15,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=15,
+                            topology='0x1',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10 ] )
 
     def CASE16( self, main ):
         """
@@ -224,13 +328,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 16,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=16,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10 ] )
 
     def CASE17( self, main ):
         """
@@ -241,13 +353,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 17,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10, 20, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=17,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10, 20, 20 ] )
 
     def CASE18( self, main ):
         """
@@ -258,13 +378,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 18,
-                                topology = '2x4',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts",
-                                vlan = [ 10, 10, 20, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=18,
+                            topology='2x4',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts",
+                            vlan=[ 10, 10, 20, 20 ] )
 
     def CASE21( self, main ):
         """
@@ -275,12 +403,20 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 21,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=21,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE22( self, main ):
         """
@@ -291,12 +427,20 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 22,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=22,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE23( self, main ):
         """
@@ -307,12 +451,20 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 23,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=23,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE24( self, main ):
         """
@@ -323,12 +475,20 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 24,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=24,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE25( self, main ):
         """
@@ -339,12 +499,20 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 25,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=25,
+                            topology='0x1',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE26( self, main ):
         """
@@ -355,12 +523,20 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 26,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=26,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE27( self, main ):
         """
@@ -371,12 +547,20 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 27,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=27,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE28( self, main ):
         """
@@ -387,12 +571,20 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 28,
-                                topology = '2x4',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=28,
+                            topology='2x4',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts on vlan-native port" )
 
     def CASE31( self, main ):
         """
@@ -404,13 +596,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 31,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts, "
-                                "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=31,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts, "
+                            "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE32( self, main ):
         """
@@ -422,13 +622,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 32,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts, "
-                                "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=32,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts, "
+                            "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE33( self, main ):
         """
@@ -440,13 +648,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 33,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts, "
-                                "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=33,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts, "
+                            "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE34( self, main ):
         """
@@ -458,13 +674,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 34,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts, "
-                                "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=34,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts, "
+                            "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE35( self, main ):
         """
@@ -476,13 +700,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 35,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts, "
-                                "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=35,
+                            topology='0x1',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts, "
+                            "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE36( self, main ):
         """
@@ -494,13 +726,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 36,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts, "
-                                "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=36,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts, "
+                            "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE37( self, main ):
         """
@@ -512,13 +752,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 37,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts, "
-                                "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=37,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts, "
+                            "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE38( self, main ):
         """
@@ -530,13 +778,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest(main,
-                               test_idx = 38,
-                               topology = '2x4',
-                               onosNodes = 3,
-                               description = "Bridging test between two untagged hosts, "
-                                           "one on vlan-untagged port and the other on vlan-native port" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest(main,
+                           test_idx=38,
+                           topology='2x4',
+                           onosNodes=3,
+                           description="Bridging test between two untagged hosts, "
+                                       "one on vlan-untagged port and the other on vlan-native port" )
 
     def CASE41( self, main ):
         """
@@ -548,13 +804,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 41,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=41,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10 ] )
 
     def CASE42( self, main ):
         """
@@ -566,13 +830,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 42,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=42,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10 ] )
 
     def CASE43( self, main ):
         """
@@ -584,13 +856,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 43,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10, 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=43,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10, 0, 20 ] )
 
     def CASE44( self, main ):
         """
@@ -602,13 +882,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 44,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10, 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=44,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10, 0, 20 ] )
 
     def CASE45( self, main ):
         """
@@ -620,13 +908,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 45,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=45,
+                            topology='0x1',
+                            onosNodes=3,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10 ] )
 
     def CASE46( self, main ):
         """
@@ -638,13 +934,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 46,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=46,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10 ] )
 
     def CASE47( self, main ):
         """
@@ -656,13 +960,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 47,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10, 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=47,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10, 0, 20 ] )
 
     def CASE48( self, main ):
         """
@@ -674,13 +986,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 48,
-                                topology = '2x4',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged host and tagged host",
-                                vlan = [ 0, 10, 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=48,
+                            topology='2x4',
+                            onosNodes=3,
+                            description="Bridging test between untagged host and tagged host",
+                            vlan=[ 0, 10, 0, 20 ] )
 
     def CASE51( self, main ):
         """
@@ -691,12 +1011,20 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 51,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=51,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE52( self, main ):
         """
@@ -707,12 +1035,20 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 52,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=52,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE53( self, main ):
         """
@@ -723,12 +1059,20 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 53,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=53,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE54( self, main ):
         """
@@ -739,12 +1083,20 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 54,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=54,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE55( self, main ):
         """
@@ -755,12 +1107,20 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 55,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=55,
+                            topology='0x1',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE56( self, main ):
         """
@@ -771,12 +1131,20 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 56,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=56,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE57( self, main ):
         """
@@ -787,12 +1155,20 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 57,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=57,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE58( self, main ):
         """
@@ -803,12 +1179,20 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 58,
-                                topology = '2x4',
-                                onosNodes = 3,
-                                description = "Bridging test between two untagged hosts with different vlan id" )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=58,
+                            topology='2x4',
+                            onosNodes=3,
+                            description="Bridging test between two untagged hosts with different vlan id" )
 
     def CASE61( self, main ):
         """
@@ -819,13 +1203,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 61,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=61,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20 ] )
 
     def CASE62( self, main ):
         """
@@ -836,13 +1228,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 62,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=62,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20 ] )
 
     def CASE63( self, main ):
         """
@@ -853,13 +1253,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 63,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20, 30, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=63,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20, 30, 40 ] )
 
     def CASE64( self, main ):
         """
@@ -870,13 +1278,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 64,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20, 30, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=64,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20, 30, 40 ] )
 
     def CASE65( self, main ):
         """
@@ -887,13 +1303,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 65,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=65,
+                            topology='0x1',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20 ] )
 
     def CASE66( self, main ):
         """
@@ -904,13 +1328,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 66,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=66,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20 ] )
 
     def CASE67( self, main ):
         """
@@ -921,13 +1353,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 67,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20, 30, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=67,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20, 30, 40 ] )
 
     def CASE68( self, main ):
         """
@@ -938,13 +1378,21 @@
         Start 2x4 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 68,
-                                topology = '2x4',
-                                onosNodes = 3,
-                                description = "Bridging test between two tagged hosts with different vlan id",
-                                vlan = [ 10, 20, 30, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=68,
+                            topology='2x4',
+                            onosNodes=3,
+                            description="Bridging test between two tagged hosts with different vlan id",
+                            vlan=[ 10, 20, 30, 40 ] )
 
     def CASE71( self, main ):
         """
@@ -955,13 +1403,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 71,
-                                topology = '0x1',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=71,
+                            topology='0x1',
+                            onosNodes=1,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20 ] )
 
     def CASE72( self, main ):
         """
@@ -972,13 +1428,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 72,
-                                topology = '0x2',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=72,
+                            topology='0x2',
+                            onosNodes=1,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20 ] )
 
     def CASE73( self, main ):
         """
@@ -989,13 +1453,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 73,
-                                topology = '2x2',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20, 0, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=73,
+                            topology='2x2',
+                            onosNodes=1,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20, 0, 40 ] )
 
     def CASE74( self, main ):
         """
@@ -1006,13 +1478,21 @@
         Start 2x2 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 74,
-                                topology = '2x4',
-                                onosNodes = 1,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20, 0, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=74,
+                            topology='2x4',
+                            onosNodes=1,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20, 0, 40 ] )
 
     def CASE75( self, main ):
         """
@@ -1023,13 +1503,21 @@
         Start 0x1 single ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 75,
-                                topology = '0x1',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=75,
+                            topology='0x1',
+                            onosNodes=3,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20 ] )
 
     def CASE76( self, main ):
         """
@@ -1040,13 +1528,21 @@
         Start 0x2 dual-homed ToR topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 76,
-                                topology = '0x2',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=76,
+                            topology='0x2',
+                            onosNodes=3,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20 ] )
 
     def CASE77( self, main ):
         """
@@ -1057,13 +1553,21 @@
         Start 2x2 leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 77,
-                                topology = '2x2',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20, 0, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=77,
+                            topology='2x2',
+                            onosNodes=3,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20, 0, 40 ] )
 
     def CASE78( self, main ):
         """
@@ -1074,10 +1578,18 @@
         Start 2x2 dual-homed leaf-spine topology
         Pingall
         """
-        from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
-        SRBridgingTest.runTest( main,
-                                test_idx = 78,
-                                topology = '2x4',
-                                onosNodes = 3,
-                                description = "Bridging test between untagged and tagged hosts with different vlan id",
-                                vlan = [ 0, 20, 0, 40 ] )
+        try:
+            from tests.USECASE.SegmentRouting.SRBridging.dependencies.SRBridgingTest import SRBridgingTest
+        except ImportError:
+            main.log.error( "SRBridgingTest not found. Exiting the test" )
+            main.cleanAndExit()
+        try:
+            main.funcs
+        except ( NameError, AttributeError ):
+            main.funcs = SRBridgingTest()
+        main.funcs.runTest( main,
+                            test_idx=78,
+                            topology='2x4',
+                            onosNodes=3,
+                            description="Bridging test between untagged and tagged hosts with different vlan id",
+                            vlan=[ 0, 20, 0, 40 ] )
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
index fa496dd..d1a8ee3 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
@@ -25,20 +25,18 @@
 
     def __init__( self ):
         self.default = ''
-
-    @staticmethod
-    def runTest( main, test_idx, topology, onosNodes, description, vlan = [] ):
-        topo = dict()
+        self.topo = dict()
         # (number of spine switch, number of leaf switch, dual-homed, description, minFlowCount - leaf)
-        topo[ '0x1' ] = ( 0, 1, False, 'single ToR', 28 )
-        topo[ '0x2' ] = ( 0, 2, True, 'dual-homed ToR', 37 )
-        topo[ '2x2' ] = ( 2, 2, False, '2x2 leaf-spine topology', 37 )
+        self.topo[ '0x1' ] = ( 0, 1, False, 'single ToR', 28 )
+        self.topo[ '0x2' ] = ( 0, 2, True, 'dual-homed ToR', 37 )
+        self.topo[ '2x2' ] = ( 2, 2, False, '2x2 leaf-spine topology', 37 )
         # TODO: Implement 2x3 topology
         # topo[ '2x3' ] = ( 2, 3, True, '2x3 leaf-spine topology with dual ToR and single ToR', 28 )
-        topo[ '2x4' ] = ( 2, 4, True, '2x4 dual-homed leaf-spine topology', 53 )
-        switchNames = {}
-        switchNames[ '2x2' ] = [ "leaf1", "leaf2", "spine101", "spine102" ]
+        self.topo[ '2x4' ] = ( 2, 4, True, '2x4 dual-homed leaf-spine topology', 53 )
+        self.switchNames = {}
+        self.switchNames[ '2x2' ] = [ "leaf1", "leaf2", "spine101", "spine102" ]
 
+    def runTest( self, main, test_idx, topology, onosNodes, description, vlan = [] ):
         skipPackage = False
         init = False
         if not hasattr( main, 'apps' ):
@@ -49,16 +47,17 @@
             skipPackage = True
 
         main.case( '%s, with %s and %d ONOS instance%s' %
-                   ( description, topo[ topology ][ 3 ], onosNodes, 's' if onosNodes > 1 else '' ) )
+                   ( description, self.topo[ topology ][ 3 ], onosNodes, 's' if onosNodes > 1 else '' ) )
 
         main.cfgName = 'CASE%01d%01d' % ( test_idx / 10, ( ( test_idx - 1 ) % 10 ) % 4 + 1 )
-        main.configPath = main.path + "/dependencies/"
         main.Cluster.setRunningNode( onosNodes )
         run.installOnos( main, skipPackage=skipPackage, cliSleep=5 )
+        run.loadJson( main )
+        run.loadChart( main )
         if hasattr( main, 'Mininet1' ):
             # Run the test with Mininet
-            mininet_args = ' --spine=%d --leaf=%d' % ( topo[ topology ][ 0 ], topo[ topology ][ 1 ] )
-            if topo[ topology ][ 2 ]:
+            mininet_args = ' --spine=%d --leaf=%d' % ( self.topo[ topology ][ 0 ], self.topo[ topology ][ 1 ] )
+            if self.topo[ topology ][ 2 ]:
                 mininet_args += ' --dual-homed'
             if len( vlan ) > 0 :
                 mininet_args += ' --vlan=%s' % ( ','.join( ['%d' % vlanId for vlanId in vlan ] ) )
@@ -66,12 +65,12 @@
             run.startMininet( main, 'trellis_fabric.py', args=mininet_args )
         else:
             # Run the test with physical devices
-            run.connectToPhysicalNetwork( main, switchNames[ topology ] )
+            run.connectToPhysicalNetwork( main, self.switchNames[ topology ] )
 
-        run.checkFlows( main, minFlowCount=topo[ topology ][ 4 ] * topo[ topology ][ 1 ], sleep=5 )
-        leaf_dpid = [ "of:%016d" % ( ls + 1 ) for ls in range( topo[ topology ][ 1 ] ) ]
+        run.checkFlows( main, minFlowCount=self.topo[ topology ][ 4 ] * self.topo[ topology ][ 1 ], sleep=5 )
+        leaf_dpid = [ "of:%016d" % ( ls + 1 ) for ls in range( self.topo[ topology ][ 1 ] ) ]
         for dpid in leaf_dpid:
-            run.checkFlowsByDpid( main, dpid, topo[ topology ][ 4 ], sleep=5 )
+            run.checkFlowsByDpid( main, dpid, self.topo[ topology ][ 4 ], sleep=5 )
         run.pingAll( main )
 
         if hasattr( main, 'Mininet1' ):
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE01.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE01.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE01.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE01.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE02.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE02.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE02.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE02.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE03.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE03.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE03.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE03.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE04.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE04.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE04.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE04.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE11.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE11.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE11.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE11.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE12.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE12.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE12.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE12.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE13.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE13.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE13.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE13.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE14.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE14.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE14.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE14.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE21.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE21.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE21.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE21.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE22.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE22.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE22.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE22.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE23.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE23.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE23.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE23.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE24.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE24.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE24.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE24.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE31.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE31.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE31.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE31.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE32.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE32.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE32.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE32.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE33.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE33.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE33.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE33.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE34.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE34.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE34.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE34.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE41.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE41.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE41.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE41.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE42.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE42.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE42.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE42.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE43.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE43.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE43.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE43.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE44.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE44.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE44.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE44.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE51.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE51.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE51.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE51.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE52.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE52.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE52.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE52.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE53.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE53.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE53.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE53.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE54.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE54.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE54.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE54.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE61.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE61.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE61.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE61.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE62.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE62.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE62.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE62.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE63.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE63.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE63.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE63.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE64.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE64.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE64.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE64.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE71.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE71.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE71.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE71.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE72.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE72.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE72.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE72.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE73.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE73.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE73.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE73.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE74.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE74.chart
similarity index 100%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE74.chart
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE74.chart
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdbgp1.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdbgp1.conf
new file mode 100644
index 0000000..8870fb4
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdbgp1.conf
@@ -0,0 +1,81 @@
+log file /var/log/quagga/bgpdbgp1.log
+hostname bgp1
+password quagga
+!
+! Different next hop for IPv4
+!
+ip prefix-list 1 seq 10 permit 10.0.2.0/24
+ip prefix-list 1 seq 20 permit 10.1.2.0/24
+ip prefix-list 1 seq 30 permit 10.0.3.0/24
+ip prefix-list 1 seq 40 permit 10.0.4.0/24
+!
+route-map NEXTHOP41 permit 10
+match ip address prefix-list 1
+set ip next-hop 10.0.1.254
+!
+!
+route-map NEXTHOP47 permit 10
+match ip address prefix-list 1
+set ip next-hop 10.0.7.254
+!
+! Different next hop for IPv6
+!
+ipv6 prefix-list 2 seq 10 permit 2000::200/120
+ipv6 prefix-list 2 seq 20 permit 2000::300/120
+!
+route-map NEXTHOP61 permit 10
+match ipv6 address prefix-list 2
+set ipv6 next-hop global 2000::1ff
+set ipv6 next-hop local 2000::1ff
+!
+!
+route-map NEXTHOP67 permit 10
+match ipv6 address prefix-list 2
+set ipv6 next-hop global 2000::7ff
+set ipv6 next-hop local 2000::7ff
+!
+! Basic router config
+!
+router bgp 65003
+bgp router-id 172.16.0.3
+timers bgp 3 9
+!
+! IPv4
+!
+neighbor 10.0.1.1 remote-as 65001
+neighbor 10.0.1.1 ebgp-multihop
+neighbor 10.0.1.1 timers connect 5
+neighbor 10.0.1.1 advertisement-interval 5
+neighbor 10.0.1.1 route-map NEXTHOP41 out
+!
+neighbor 2000::101 remote-as 65001
+neighbor 2000::101 timers connect 5
+neighbor 2000::101 advertisement-interval 1
+no neighbor 2000::101 activate
+!
+neighbor 10.0.7.1 remote-as 65002
+neighbor 10.0.7.1 ebgp-multihop
+neighbor 10.0.7.1 timers connect 5
+neighbor 10.0.7.1 advertisement-interval 5
+neighbor 10.0.7.1 route-map NEXTHOP47 out
+!
+neighbor 2000::701 remote-as 65002
+neighbor 2000::701 timers connect 5
+neighbor 2000::701 advertisement-interval 1
+no neighbor 2000::701 activate
+!
+network 10.0.2.0/24
+network 10.1.2.0/24
+network 10.0.3.0/24
+network 10.0.4.0/24
+!
+! IPv6
+!
+address-family ipv6
+network 2000::200/120
+network 2000::300/120
+neighbor 2000::101 activate
+neighbor 2000::101 route-map NEXTHOP61 out
+neighbor 2000::701 activate
+neighbor 2000::701 route-map NEXTHOP67 out
+exit-address-family
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdbgp2.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdbgp2.conf
new file mode 100644
index 0000000..e554de4
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdbgp2.conf
@@ -0,0 +1,81 @@
+log file /var/log/quagga/bgpdbgp2.log
+hostname bgp2
+password quagga
+!
+! Different next hop for IPv4
+!
+ip prefix-list 1 seq 10 permit 10.0.2.0/24
+ip prefix-list 1 seq 20 permit 10.1.2.0/24
+ip prefix-list 1 seq 30 permit 10.0.3.0/24
+ip prefix-list 1 seq 40 permit 10.0.4.0/24
+!
+route-map NEXTHOP45 permit 10
+match ip address prefix-list 1
+set ip next-hop 10.0.5.254
+!
+!
+route-map NEXTHOP46 permit 10
+match ip address prefix-list 1
+set ip next-hop 10.0.6.254
+!
+! Different next hop for IPv6
+!
+ipv6 prefix-list 2 seq 10 permit 2000::200/120
+ipv6 prefix-list 2 seq 20 permit 2000::300/120
+!
+route-map NEXTHOP65 permit 10
+match ipv6 address prefix-list 2
+set ipv6 next-hop global 2000::5ff
+set ipv6 next-hop local 2000::5ff
+!
+!
+route-map NEXTHOP66 permit 10
+match ipv6 address prefix-list 2
+set ipv6 next-hop global 2000::6ff
+set ipv6 next-hop local 2000::6ff
+!
+! Basic router config
+!
+router bgp 65003
+bgp router-id 172.16.0.4
+timers bgp 3 9
+!
+! IPv4
+!
+neighbor 10.0.5.1 remote-as 65001
+neighbor 10.0.5.1 ebgp-multihop
+neighbor 10.0.5.1 timers connect 5
+neighbor 10.0.5.1 advertisement-interval 5
+neighbor 10.0.5.1 route-map NEXTHOP45 out
+!
+neighbor 2000::501 remote-as 65001
+neighbor 2000::501 timers connect 5
+neighbor 2000::501 advertisement-interval 1
+no neighbor 2000::501 activate
+!
+neighbor 10.0.6.1 remote-as 65002
+neighbor 10.0.6.1 ebgp-multihop
+neighbor 10.0.6.1 timers connect 5
+neighbor 10.0.6.1 advertisement-interval 5
+neighbor 10.0.6.1 route-map NEXTHOP46 out
+!
+neighbor 2000::601 remote-as 65002
+neighbor 2000::601 timers connect 5
+neighbor 2000::601 advertisement-interval 1
+no neighbor 2000::601 activate
+!
+network 10.0.2.0/24
+network 10.1.2.0/24
+network 10.0.3.0/24
+network 10.0.4.0/24
+!
+! IPv6
+!
+address-family ipv6
+network 2000::200/120
+network 2000::300/120
+neighbor 2000::501 activate
+neighbor 2000::501 route-map NEXTHOP65 out
+neighbor 2000::601 activate
+neighbor 2000::601 route-map NEXTHOP66 out
+exit-address-family
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdr1.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdr1.conf
new file mode 100644
index 0000000..9e526b8
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdr1.conf
@@ -0,0 +1,42 @@
+log file /var/log/quagga/bgpdr1.log
+hostname r1
+password quagga
+!
+! Basic router config
+!
+router bgp 65001
+bgp router-id 10.0.1.1
+timers bgp 3 9
+!
+! IPv4
+!
+neighbor 10.0.1.2 remote-as 65003
+neighbor 10.0.1.2 ebgp-multihop
+neighbor 10.0.1.2 timers connect 5
+neighbor 10.0.1.2 advertisement-interval 5
+!
+neighbor 2000::102 remote-as 65003
+neighbor 2000::102 timers connect 5
+neighbor 2000::102 advertisement-interval 1
+no neighbor 2000::102 activate
+!
+neighbor 10.0.5.2 remote-as 65003
+neighbor 10.0.5.2 ebgp-multihop
+neighbor 10.0.5.2 timers connect 5
+neighbor 10.0.5.2 advertisement-interval 5
+!
+neighbor 2000::502 remote-as 65003
+neighbor 2000::502 timers connect 5
+neighbor 2000::502 advertisement-interval 1
+no neighbor 2000::502 activate
+!
+network 10.0.99.0/24
+!
+! IPv6
+!
+address-family ipv6
+network 2000::7700/120
+network 2000::9900/120
+neighbor 2000::102 activate
+neighbor 2000::502 activate
+exit-address-family
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdr2.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdr2.conf
new file mode 100644
index 0000000..49553e2
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/bgpdr2.conf
@@ -0,0 +1,42 @@
+log file /var/log/quagga/bgpdr2.log
+hostname r2
+password quagga
+!
+! Basic router config
+!
+router bgp 65002
+bgp router-id 10.0.6.1
+timers bgp 3 9
+!
+! IPv4
+!
+neighbor 10.0.6.2 remote-as 65003
+neighbor 10.0.6.2 ebgp-multihop
+neighbor 10.0.6.2 timers connect 5
+neighbor 10.0.6.2 advertisement-interval 5
+!
+neighbor 2000::602 remote-as 65003
+neighbor 2000::602 timers connect 5
+neighbor 2000::602 advertisement-interval 1
+no neighbor 2000::602 activate
+!
+neighbor 10.0.7.2 remote-as 65003
+neighbor 10.0.7.2 ebgp-multihop
+neighbor 10.0.7.2 timers connect 5
+neighbor 10.0.7.2 advertisement-interval 5
+!
+neighbor 2000::702 remote-as 65003
+neighbor 2000::702 timers connect 5
+neighbor 2000::702 advertisement-interval 1
+no neighbor 2000::702 activate
+!
+network 10.0.99.0/24
+!
+! IPv6
+!
+address-family ipv6
+network 2000::8800/120
+network 2000::9900/120
+neighbor 2000::602 activate
+neighbor 2000::702 activate
+exit-address-family
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/dhcpd.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/dhcpd.conf
new file mode 100644
index 0000000..aa559d2
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/dhcpd.conf
@@ -0,0 +1,55 @@
+ddns-update-style none;
+
+default-lease-time 600;
+max-lease-time 7200;
+
+option domain-name-servers 8.8.8.8, 8.8.4.4;
+option domain-name "trellis.local";
+
+subnet 10.0.2.0 netmask 255.255.255.0 {
+  range 10.0.2.100 10.0.2.240;
+  option routers 10.0.2.254;
+}
+
+subnet 10.1.2.0 netmask 255.255.255.0 {
+  range 10.1.2.100 10.1.2.240;
+  option routers 10.1.2.254;
+}
+
+subnet 10.0.3.0 netmask 255.255.255.0 {
+  range 10.0.3.100 10.0.3.240;
+  option routers 10.0.3.254;
+}
+
+subnet 10.0.4.0 netmask 255.255.255.0 {
+  range 10.0.4.100 10.0.4.240;
+  option routers 10.0.4.254;
+}
+
+subnet 10.0.99.3 netmask 255.255.255.255 {
+}
+
+host h1 {
+  hardware ethernet 00:aa:00:00:00:01;
+  fixed-address 10.0.2.1;
+}
+
+host h2 {
+  hardware ethernet 00:aa:00:00:00:02;
+  fixed-address 10.0.2.2;
+}
+
+host h3 {
+  hardware ethernet 00:aa:00:00:00:03;
+  fixed-address 10.0.3.1;
+}
+
+host h4 {
+  hardware ethernet 00:aa:00:00:00:04;
+  fixed-address 10.0.3.2;
+}
+
+host dh1 {
+  hardware ethernet 00:cc:00:00:00:01;
+  fixed-address 10.1.2.1;
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/dhcpd6.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/dhcpd6.conf
new file mode 100644
index 0000000..526de85
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/dhcpd6.conf
@@ -0,0 +1,37 @@
+default-lease-time 600;
+max-lease-time 7200;
+
+option dhcp6.next-hop code 242 = ip6-address;
+
+subnet6 2000::200/120 {
+  range6 2000::260 2000::2fe;
+  option dhcp6.next-hop 2000::02ff;
+}
+
+subnet6 2000::300/120 {
+  range6 2000::360 2000::3fe;
+  option dhcp6.next-hop 2000::03ff;
+}
+
+subnet6 2000::9903/128 {
+}
+
+host h1v6 {
+  hardware ethernet 00:bb:00:00:00:01;
+  fixed-address6 2000::201;
+}
+
+host h2v6 {
+  hardware ethernet 00:bb:00:00:00:02;
+  fixed-address6 2000::202;
+}
+
+host h3v6 {
+  hardware ethernet 00:bb:00:00:00:03;
+  fixed-address6 2000::301;
+}
+
+host h4v6 {
+  hardware ethernet 00:bb:00:00:00:04;
+  fixed-address6 2000::302;
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/zebradbgp1.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/zebradbgp1.conf
new file mode 100644
index 0000000..51991a4
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/zebradbgp1.conf
@@ -0,0 +1,9 @@
+log file /var/log/quagga/zebradbgp1.log
+hostname zebra-bgp1
+password quagga
+!
+! Default route via virtual management switch
+!
+ip route 0.0.0.0/0 172.16.0.1
+!
+fpm connection ip 192.168.56.11 port 2620
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/zebradbgp2.conf b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/zebradbgp2.conf
new file mode 100644
index 0000000..dce218d
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/conf/zebradbgp2.conf
@@ -0,0 +1,9 @@
+log file /var/log/quagga/zebradbgp2.log
+hostname zebra-bgp2
+password quagga
+!
+! Default route via virtual management switch
+!
+ip route 0.0.0.0/0 172.16.0.1
+!
+fpm connection ip 192.168.56.11 port 2620
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/extra.json b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/extra.json
new file mode 100644
index 0000000..e3544bf
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/extra.json
@@ -0,0 +1,16 @@
+{
+    "hosts" : {
+        "00:00:00:00:00:09/-1" : {
+            "basic": {
+                "ips": ["10.0.1.9"],
+                "locations": ["of:0000000000000001/3"]
+            }
+        },
+        "00:00:00:00:09:01/-1" : {
+            "basic": {
+                "ips": ["10.0.9.1"],
+                "locations": ["of:0000000000000001/4"]
+            }
+        }
+    }
+}
