diff --git a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java
index 96e889e..f41df87 100644
--- a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java
+++ b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java
@@ -18,8 +18,6 @@
 import java.io.File;
 import java.io.FileReader;
 import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.logging.Logger;
 
@@ -33,7 +31,6 @@
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.runners.Parameterized.Parameters;
 
 import edu.uci.ics.asterix.test.aql.TestsUtils;
 import edu.uci.ics.asterix.testframework.context.TestCaseContext;
@@ -46,26 +43,23 @@
     private static final String LIBRARY_DATAVERSE = "external";
     private static final String PATH_BASE = "src/test/resources/integrationts/";
     private static final String PATH_ACTUAL = "ittest/";
+    private static final String LIBRARY_PATH = "asterix-external-data" + File.separator + "target" + File.separator
+            + "testlib-binary-assembly.zip";
     private static final Logger LOGGER = Logger.getLogger(AsterixExternalLibraryIT.class.getName());
-    private static Collection<Object[]> testArgs;
+    private static List<TestCaseContext> testCaseCollection;
 
     @BeforeClass
     public static void setUp() throws Exception {
         AsterixInstallerIntegrationUtil.init();
-        String libraryPath = AsterixInstallerIntegrationUtil.getManagixHome() + File.separator
-                + "asterix-external-data" + File.separator + "target" + File.separator + "testlib-binary-assembly.zip";
+        String libraryPath = AsterixInstallerIntegrationUtil.getManagixHome() + File.separator + LIBRARY_PATH;
         AsterixInstallerIntegrationUtil.installLibrary(LIBRARY_NAME, LIBRARY_DATAVERSE, libraryPath);
-
-        Collection<Object[]> testArgs = new ArrayList<Object[]>();
         TestCaseContext.Builder b = new TestCaseContext.Builder();
-        for (TestCaseContext ctx : b.build(new File(PATH_BASE))) {
-            testArgs.add(new Object[] { ctx });
-        }
+        testCaseCollection = b.build(new File(PATH_BASE));
     }
 
     @AfterClass
     public static void tearDown() throws Exception {
-	AsterixInstallerIntegrationUtil.deinit();
+        AsterixInstallerIntegrationUtil.deinit();
     }
 
     // Method that reads a DDL/Update/Query File
@@ -188,57 +182,61 @@
 
         int queryCount = 0;
         JSONObject result;
+        for (TestCaseContext testCaseCtx : testCaseCollection) {
 
-        List<CompilationUnit> cUnits = tcCtx.getTestCase().getCompilationUnit();
-        for (CompilationUnit cUnit : cUnits) {
-            LOGGER.info("[TEST]: " + tcCtx.getTestCase().getFilePath() + "/" + cUnit.getName());
+            List<CompilationUnit> cUnits = testCaseCtx.getTestCase().getCompilationUnit();
+            for (CompilationUnit cUnit : cUnits) {
+                LOGGER.info("[TEST]: " + testCaseCtx.getTestCase().getFilePath() + "/" + cUnit.getName());
 
-            testFileCtxs = tcCtx.getTestFiles(cUnit);
-            expectedResultFileCtxs = tcCtx.getExpectedResultFiles(cUnit);
+                testFileCtxs = testCaseCtx.getTestFiles(cUnit);
+                expectedResultFileCtxs = testCaseCtx.getExpectedResultFiles(cUnit);
 
-            for (TestFileContext ctx : testFileCtxs) {
-                testFile = ctx.getFile();
-                statement = readTestFile(testFile);
-                try {
-                    switch (ctx.getType()) {
-                        case "ddl":
-                            executeDDL(statement);
-                            break;
-                        case "update":
-                            executeUpdate(statement);
-                            break;
-                        case "query":
-                            result = executeQuery(statement);
-                            if (!cUnit.getExpectedError().isEmpty()) {
-                                if (!result.has("error")) {
-                                    throw new Exception("Test \"" + testFile + "\" FAILED!");
+                for (TestFileContext ctx : testFileCtxs) {
+                    testFile = ctx.getFile();
+                    statement = readTestFile(testFile);
+                    try {
+                        switch (ctx.getType()) {
+                            case "ddl":
+                                executeDDL(statement);
+                                break;
+                            case "update":
+                                executeUpdate(statement);
+                                break;
+                            case "query":
+                                result = executeQuery(statement);
+                                if (!cUnit.getExpectedError().isEmpty()) {
+                                    if (!result.has("error")) {
+                                        throw new Exception("Test \"" + testFile + "\" FAILED!");
+                                    }
+                                } else {
+                                    expectedResultFile = expectedResultFileCtxs.get(queryCount).getFile();
+
+                                    File actualFile = new File(PATH_ACTUAL + File.separator
+                                            + testCaseCtx.getTestCase().getFilePath().replace(File.separator, "_")
+                                            + "_" + cUnit.getName() + ".adm");
+
+                                    File actualResultFile = testCaseCtx.getActualResultFile(cUnit,
+                                            new File(PATH_ACTUAL));
+                                    actualResultFile.getParentFile().mkdirs();
+
+                                    TestsUtils.writeResultsToFile(actualFile, result);
+
+                                    TestsUtils.runScriptAndCompareWithResult(testFile, new PrintWriter(System.err),
+                                            expectedResultFile, actualFile);
                                 }
-                            } else {
-                                expectedResultFile = expectedResultFileCtxs.get(queryCount).getFile();
-
-                                File actualFile = new File(PATH_ACTUAL + File.separator
-                                        + tcCtx.getTestCase().getFilePath().replace(File.separator, "_") + "_"
-                                        + cUnit.getName() + ".adm");
-
-                                File actualResultFile = tcCtx.getActualResultFile(cUnit, new File(PATH_ACTUAL));
-                                actualResultFile.getParentFile().mkdirs();
-
-                                TestsUtils.writeResultsToFile(actualFile, result);
-
-                                TestsUtils.runScriptAndCompareWithResult(testFile, new PrintWriter(System.err),
-                                        expectedResultFile, actualFile);
-                            }
-                            queryCount++;
-                            break;
-                        default:
-                            throw new IllegalArgumentException("No statements of type " + ctx.getType());
-                    }
-                } catch (Exception e) {
-                    if (cUnit.getExpectedError().isEmpty()) {
-                        throw new Exception("Test \"" + testFile + "\" FAILED!", e);
+                                queryCount++;
+                                break;
+                            default:
+                                throw new IllegalArgumentException("No statements of type " + ctx.getType());
+                        }
+                    } catch (Exception e) {
+                        if (cUnit.getExpectedError().isEmpty()) {
+                            throw new Exception("Test \"" + testFile + "\" FAILED!", e);
+                        }
                     }
                 }
             }
         }
     }
+
 }
diff --git a/asterix-installer/src/test/resources/integrationts/results/library/mysum/mysum.1.adm b/asterix-installer/src/test/resources/integrationts/results/library/mysum/mysum.1.adm
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/asterix-installer/src/test/resources/integrationts/results/library/mysum/mysum.1.adm
@@ -0,0 +1 @@
+7
