diff --git a/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.params b/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.params
index 1a58556..a757a48 100755
--- a/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.params
+++ b/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.params
@@ -1,6 +1,6 @@
 <PARAMS>
 
-    <testcases>1,2,3</testcases>
+    <testcases>1,2,3,4,5,6</testcases>
 
     <SCALE>
         <size>3</size>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.py b/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.py
index 77e90e3..631248b 100755
--- a/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRSanity/SRSanity.py
@@ -1,7 +1,10 @@
 # This test should always succeed. it runs cases 1,2,3
 #CASE1: 2x2 Leaf-Spine topo and test IP connectivity
 #CASE2: 4x4 topo + IP connectivity test
-#CASE3: 2x2 topo + 3-node ONOS CLUSTER + IP connectivity test
+#CASE3: Single switch topo + IP connectivity test
+#CASE4: 2x2 topo + 3-node ONOS CLUSTER + IP connectivity test
+#CASE5: 4x4 topo + 3-node ONOS CLUSTER + IP connectivity test
+#CASE6: Single switch + 3-node ONOS CLUSTER + IP connectivity test
 
 class SRSanity:
 
@@ -26,7 +29,7 @@
         run.installOnos(main)
         run.startMininet(main, 'cord_fabric.py')
         #pre-configured routing and bridging test
-        run.checkFlows(main, flowCount=116)
+        run.checkFlows(main, minFlowCount=116)
         run.pingAll(main, "CASE1")
         #TODO Dynamic config of hosts in subnet
         #TODO Dynamic config of host not in subnet
@@ -51,7 +54,7 @@
         run.installOnos(main)
         run.startMininet(main, 'cord_fabric.py', args="--leaf=4 --spine=4")
         #pre-configured routing and bridging test
-        run.checkFlows(main, flowCount=350)
+        run.checkFlows(main, minFlowCount=350)
         run.pingAll(main, 'CASE2')
         #TODO Dynamic config of hosts in subnet
         #TODO Dynamic config of host not in subnet
@@ -62,6 +65,31 @@
 
     def CASE3( self, main ):
         """
+        Sets up 1-node Onos-cluster
+        Start single switch topology
+        Pingall
+        """
+        from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as run
+        if not hasattr(main,'apps'):
+            run.initTest(main)
+        description = "Bridging and Routing sanity test with single switch "
+        main.case( description )
+        main.cfgName = '0x1'
+        main.numCtrls = 1
+        run.installOnos(main)
+        run.startMininet(main, 'cord_fabric.py', args="--leaf=1 --spine=0")
+        #pre-configured routing and bridging test
+        run.checkFlows(main, minFlowCount=15)
+        run.pingAll(main, 'CASE3')
+        #TODO Dynamic config of hosts in subnet
+        #TODO Dynamic config of host not in subnet
+        #TODO Dynamic config of vlan xconnect
+        #TODO Vrouter integration
+        #TODO Mcast integration
+        run.cleanup(main)
+
+    def CASE4( self, main ):
+        """
         Sets up 3-node Onos-cluster
         Start 2x2 Leaf-Spine topology
         Pingall
@@ -76,11 +104,61 @@
         run.installOnos(main)
         run.startMininet(main, 'cord_fabric.py')
         #pre-configured routing and bridging test
-        run.checkFlows(main, flowCount=116)
-        run.pingAll(main, 'CASE3')
+        run.checkFlows(main, minFlowCount=116)
+        run.pingAll(main, 'CASE4')
         #TODO Dynamic config of hosts in subnet
         #TODO Dynamic config of host not in subnet
         #TODO Dynamic config of vlan xconnect
         #TODO Vrouter integration
         #TODO Mcast integration
         run.cleanup(main)
+
+    def CASE5( self, main ):
+        """
+        Sets up 3-node Onos-cluster
+        Start 4x4 Leaf-Spine topology
+        Pingall
+        """
+        from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as run
+        if not hasattr(main,'apps'):
+            run.initTest(main)
+        description = "Bridging and Routing sanity test with 4x4 Leaf-spine "
+        main.case( description )
+        main.cfgName = '4x4'
+        main.numCtrls = 3
+        run.installOnos(main)
+        run.startMininet(main, 'cord_fabric.py', args="--leaf=4 --spine=4")
+        #pre-configured routing and bridging test
+        run.checkFlows(main, minFlowCount=350)
+        run.pingAll(main, 'CASE5')
+        #TODO Dynamic config of hosts in subnet
+        #TODO Dynamic config of host not in subnet
+        #TODO Dynamic config of vlan xconnect
+        #TODO Vrouter integration
+        #TODO Mcast integration
+        run.cleanup(main)
+
+    def CASE6( self, main ):
+        """
+        Sets up 3-node Onos-cluster
+        Start single switch topology
+        Pingall
+        """
+        from tests.USECASE.SegmentRouting.dependencies.Testcaselib import Testcaselib as run
+        if not hasattr(main,'apps'):
+            run.initTest(main)
+        description = "Bridging and Routing sanity test with single switch "
+        main.case( description )
+        main.cfgName = '0x1'
+        main.numCtrls = 3
+        run.installOnos(main)
+        run.startMininet(main, 'cord_fabric.py', args="--leaf=1 --spine=0")
+        #pre-configured routing and bridging test
+        run.checkFlows(main, minFlowCount=15)
+        run.pingAll(main, 'CASE4')
+        #TODO Dynamic config of hosts in subnet
+        #TODO Dynamic config of host not in subnet
+        #TODO Dynamic config of vlan xconnect
+        #TODO Vrouter integration
+        #TODO Mcast integration
+        run.cleanup(main)
\ No newline at end of file
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/0x1.json b/TestON/tests/USECASE/SegmentRouting/dependencies/0x1.json
new file mode 100755
index 0000000..0ba5dbd
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/0x1.json
@@ -0,0 +1,53 @@
+{
+    "ports" : {
+    "of:0000000000000001/1" : {
+        "interfaces" : [
+        {
+            "ips" : [ "10.0.1.254/24" ]
+        }
+        ]
+    },
+    "of:0000000000000001/2" : {
+        "interfaces" : [
+        {
+            "ips" : [ "10.0.1.254/24" ]
+        }
+        ]
+    }
+    },
+    "devices" : {
+        "of:0000000000000001" : {
+            "basic":{ "driver" : "ofdpa-cpqd" },
+            "segmentrouting" : {
+                "name" : "Leaf-R1",
+                "nodeSid" : 1,
+                "routerIp" : "192.168.0.1",
+                "routerMac" : "10:00:00:00:00:01",
+                "isEdgeRouter" : true,
+                "adjacencySids" : []
+            }
+        }
+    },
+    "apps": {
+        "org.onosproject.segmentrouting": {
+          "segmentrouting": {
+            "hostLearning": true
+          }
+        }
+    },
+    "hosts" : {
+        "00:00:00:00:00:01/-1" : {
+            "basic": {
+                "ips": ["10.0.1.1"],
+                "location": "of:0000000000000001/1"
+            }
+        },
+        "00:00:00:00:00:02/-1" : {
+            "basic": {
+                "ips": ["10.0.1.2"],
+                "location": "of:0000000000000001/2"
+            }
+        }
+    }
+
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 3bbca7d..3ba3cc0 100755
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -17,7 +17,6 @@
             - Install ONOS package
             - Build ONOS package
         """
-        main.case( "Constructing test variables and building ONOS" )
         main.step( "Constructing test variables" )
         # Test variables
         main.cellName = main.params[ 'ENV' ][ 'cellName' ]
@@ -192,13 +191,13 @@
             main.exit()
 
     @staticmethod
-    def checkFlows( main, flowCount ):
-        main.step(" Check whether the flow count is bigger than %s" % flowCount)
-        count =  utilities.retry( main.CLIs[main.active].checkFlowCount,
-                                  main.FALSE,
-                                  kwargs={'min':flowCount},
-                                  attempts=10,
-                                  sleep=10 )
+    def checkFlows(main, minFlowCount):
+        main.step(" Check whether the flow count is bigger than %s" % minFlowCount)
+        count =  utilities.retry(main.CLIs[main.active].checkFlowCount,
+                                 main.FALSE,
+                                 kwargs={'min':minFlowCount},
+                                 attempts=10,
+                                 sleep=10)
         utilities.assertEquals( \
                 expect=True,
                 actual=(count>0),
@@ -229,7 +228,6 @@
         utilities.assert_equals( expect=main.TRUE, actual=pa,
                                  onpass="Full connectivity successfully tested",
                                  onfail="Full connectivity failed" )
-        ##FIXME choose valid onos instead of 0
         main.ONOSbench.dumpFlows( main.ONOSip[main.active],
                                   main.logdir, "flowsOn" + tag)
         main.ONOSbench.dumpGroups( main.ONOSip[main.active],
@@ -245,10 +243,8 @@
         main.linkSleep = float( main.params[ 'timers' ][ 'LinkDiscovery' ] )
         main.step( "Kill link between %s and %s" %(end1, end2))
         LinkDown = main.Mininet1.link( END1=end1, END2=end2, OPTION="down" )
-        main.log.info( "Waiting %s seconds for link up to be discovered" % (main.linkSleep) )
-        # TODO Maybe parameterize number of expected links
+        main.log.info( "Waiting %s seconds for link down to be discovered" % main.linkSleep )
         time.sleep( main.linkSleep )
-        ##FIXME CLI for active node instead of 0
         topology =  utilities.retry( main.CLIs[main.active].checkStatus,
                                      main.FALSE,
                                      kwargs={'numoswitch':switches, 'numolink':links},
@@ -265,7 +261,7 @@
         Params:
             end1,end2: identify the end switches, ex.: 'leaf1', 'spine1'
             dpid1, dpid2: dpid of the end switches respectively, ex.: 'of:0000000000000002'
-            port1, port2: respective port of the end switchs that connects to the link, ex.:'1'
+            port1, port2: respective port of the end switches that connects to the link, ex.:'1'
             switches, links: number of expected switches and links after linkDown, ex.: '4', '6'
         Kill a link and verify ONOS can see the proper link change
         """
@@ -276,7 +272,7 @@
             count+=0
             main.Mininet1.link( END1=end1, END2=end2, OPTION="up" )
             main.Mininet1.link( END2=end1, END1=end2, OPTION="up" )
-            main.log.info( "Waiting %s seconds for link up to be discovered" % (main.linkSleep) )
+            main.log.info( "Waiting %s seconds for link up to be discovered" % main.linkSleep )
             time.sleep( main.linkSleep )
             main.CLIs[main.active].portstate( dpid=dpid1, port=port1 )
             main.CLIs[main.active].portstate( dpid=dpid2, port=port2 )
@@ -293,7 +289,7 @@
     def killSwitch( main, switch, switches, links ):
         """
         Params: switches, links: number of expected switches and links after SwitchDown, ex.: '4', '6'
-        Kill a switch and verify ONOS can see the proper change
+        Completely kill a switch and verify ONOS can see the proper change
         """
         main.switchSleep = float( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
         main.step( "Kill " + switch )
