diff --git a/TestON/bin/test-summary b/TestON/bin/test-summary
index 7832f60..624fddd 100755
--- a/TestON/bin/test-summary
+++ b/TestON/bin/test-summary
@@ -3,12 +3,12 @@
 set -e -o pipefail
 
 if [ "$#" -lt 1 ]; then
-    ls -t ~/OnosSystemTest/TestON/logs/*/*y.txt | head -1 | xargs cat | grep -E "^|FAIL"
+    ls -t ~/OnosSystemTest/TestON/logs/*/*Summary.txt | head -1 | xargs cat | grep -E "^|FAIL"
     exit 1
 fi
 if [ "$1" = "-f" ]; then
     # NOTE: This is blocking
-    ls -t ~/OnosSystemTest/TestON/logs/*/*y.txt | head -1 | xargs tail -n+1 -f
+    ls -t ~/OnosSystemTest/TestON/logs/*/*Summary.txt | head -1 | xargs tail -n+1 -f
 else
     printf "usage: $(basename $0) [options]\n\n"
     printf "Simple command to print the latest test summary file.\n"
diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 6b4efdd..54e7d0f 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -1302,6 +1302,9 @@
             if re.search( "Unknown command", response ):
                 main.log.warn( response )
                 return main.FALSE
+            if re.search( "Permission denied", response ):
+                main.log.warn( response )
+                return main.FALSE
         except pexpect.TIMEOUT:
             main.log.error( self.name + ": pexpect.TIMEOUT found" )
             main.cleanup()
@@ -1903,6 +1906,24 @@
         else:
             main.log.error( "Connection failed to the Mininet host" )
 
+    def checkFlows( self, sw, dumpFormat=None ):
+        if dumpFormat:
+            command = "sh ovs-ofctl -F " + \
+                dumpFormat + " dump-flows " + str( sw )
+        else:
+            command = "sh ovs-ofctl dump-flows " + str( sw )
+        try:
+            response = self.execute(
+                cmd=command,
+                prompt="mininet>",
+                timeout=10 )
+            return response
+        except pexpect.EOF:
+            main.log.error( self.name + ": EOF exception found" )
+            main.log.error( self.name + ":     " + self.handle.before )
+            main.cleanup()
+            main.exit()
+
     def flowTableComp( self, flowTable1, flowTable2 ):
         # This function compares the selctors and treatments of each flow
         try:
