diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/USECASE_SdnipI2MN.py b/TestON/tests/USECASE_SdnipI2/Dependency/USECASE_SdnipI2MN.py
index 28d4725..efac235 100755
--- a/TestON/tests/USECASE_SdnipI2/Dependency/USECASE_SdnipI2MN.py
+++ b/TestON/tests/USECASE_SdnipI2/Dependency/USECASE_SdnipI2MN.py
@@ -25,6 +25,7 @@
 
 QUAGGA_DIR = '/usr/lib/quagga'
 QUAGGA_RUN_DIR = '/usr/local/var/run/quagga'
+QUAGGA_CONFIG_DIR = '~/OnosSystemTest/TestON/tests/USECASE_SdnipI2/Dependency/'
 onos1IP = '10.128.4.52'
 numSw = 39
 
@@ -239,6 +240,7 @@
 
 def startquagga( host, num, config_file ):
     info( '*** Starting Quagga on %s\n' % host )
+    host.cmd( "cd %s" % QUAGGA_CONFIG_DIR )
     zebra_cmd = \
     '%s/zebra -d -f  ./zebra.conf -z %s/zserv%s.api -i %s/zebra%s.pid'\
      % ( QUAGGA_DIR, QUAGGA_RUN_DIR, num, QUAGGA_RUN_DIR, num )
@@ -380,5 +382,5 @@
     net.stop()
 
 if __name__ == '__main__':
-    # setLogLevel( 'debug' )
+    setLogLevel( 'debug' )
     sdn1net()
diff --git a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py b/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py
index 740304f..d7b8802 100644
--- a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py
+++ b/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py
@@ -127,11 +127,17 @@
         '''
         ping test from 3 bgp peers to BGP speaker
         '''
+
+        m2SIntentsNumberActual = main.ONOScli.m2SIntentInstalledNumber()
+        main.log.info( "MultiPointToSinglePoint intent number actual is:" )
+        main.log.info( m2SIntentsNumberActual )
+
         main.case( "This case is to check ping between BGP peers and speakers" )
         result1 = main.Mininet.pingHost( src = "speaker1", target = "peer64514" )
         result2 = main.Mininet.pingHost( src = "speaker1", target = "peer64515" )
         result3 = main.Mininet.pingHost( src = "speaker1", target = "peer64516" )
 
+
         caseResult = result1 and result2 and result3
         utilities.assert_equals( expect = main.TRUE, actual = caseResult,
                                  onpass = "Speaker1 ping peers successful",
@@ -141,6 +147,7 @@
             main.cleanup()
             main.exit()
 
+
     def CASE2( self, main ):
         '''
         point-to-point intents test for each BGP peer and BGP speaker pair
@@ -210,3 +217,21 @@
             onfail = "***MultiPointToSinglePoint Intent Num in SDN-IP is \
             wrong!***" )
 
+
+    def CASE4( self, main ):
+        '''
+        Ping test in data plane for each route
+        '''
+        main.case( "This case is to check ping for each route" )
+        result1 = main.Mininet.pingHost( src = "host64514", target = "host64515" )
+        result2 = main.Mininet.pingHost( src = "host64515", target = "host64516" )
+        result3 = main.Mininet.pingHost( src = "host64514", target = "host64516" )
+
+        caseResult = result1 and result2 and result3
+        utilities.assert_equals( expect = main.TRUE, actual = caseResult,
+                                 onpass = "Ping test for each route successful",
+                                 onfail = "Ping test for each route NOT successful" )
+
+        if caseResult == main.FALSE:
+            main.cleanup()
+            main.exit()
