diff --git a/asterix-app/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java b/asterix-app/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
index 7aa04c3..b10b42a 100644
--- a/asterix-app/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
+++ b/asterix-app/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
@@ -51,16 +51,13 @@
         int num = 0;
         int chunkCounter = 0;
         int recordCounter = 0;
-        try {
 
+        try {
             while ((lineExpected = readerExpected.readLine()) != null) {
                 // Skipe the blank line in the expected file.
                 if (lineExpected.isEmpty()) {
                     continue;
                 }
-                if (jArray.length() <= chunkCounter) {
-                    throw new Exception("No more results available.");
-                }
                 JSONArray resultArray = jArray.getJSONArray(chunkCounter);
 
                 if ((lineActual = resultArray.getString(recordCounter)) == null) {
@@ -77,12 +74,18 @@
                 if (recordCounter >= resultArray.length()) {
                     chunkCounter++;
                     recordCounter = 0;
+                    if (chunkCounter >= jArray.length()) {
+                        break;
+                    }
                 }
             }
+
+            while ((lineExpected = readerExpected.readLine()) != null) {
+                // TODO(khurram): Print out the remaining expected file contents
+            }
         } finally {
             readerExpected.close();
         }
-
     }
 
     private static boolean equalStrings(String s1, String s2) {
diff --git a/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java b/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java
index 9a7e1d0..aacec61 100644
--- a/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java
+++ b/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java
@@ -233,6 +233,13 @@
         for (CompilationUnit cUnit : cUnits) {
             LOGGER.info("[TEST]: " + tcCtx.getTestCase().getFilePath() + "/" + cUnit.getName());
 
+//            if (!(tcCtx.getTestCase().getFilePath().contains("dml") && cUnit.getName().equals(
+//                    "delete-from-loaded-dataset-with-index"))) {
+//                continue;
+//            }
+//
+//            System.out.println("/Test/: " + tcCtx.getTestCase().getFilePath() + "/" + cUnit.getName());
+
             testFileCtxs = tcCtx.getTestFiles(cUnit);
             expectedResultFileCtxs = tcCtx.getExpectedResultFiles(cUnit);
 
