You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by du...@apache.org on 2015/12/10 22:04:11 UTC

incubator-systemml git commit: Add caching to selected matrix unit tests.

Repository: incubator-systemml
Updated Branches:
  refs/heads/master 80872d865 -> 130794da7


Add caching to selected matrix unit tests.

These changes follow same pattern as done for matrix_full_other tests to reuse expected R results and skip redundant R script invocations to help reduce test harness time. Note no changes to matrix characteristics of input test data.

Replaced left-over usage of TARGET_IN/OUT/EXPECTED variables in FullMatrixMultiplicationTest. Also corrected typos in matrix_full_cellwise tests ('subtract' without 's') in VectorColCellwise, VectorRowCellwise and VectorVectorCellwise tests.

Closes #13.


Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/130794da
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/130794da
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/130794da

Branch: refs/heads/master
Commit: 130794da79325518ee137c97367770002daa5a1d
Parents: 80872d8
Author: Glenn Weidner <gw...@us.ibm.com>
Authored: Thu Dec 10 13:01:52 2015 -0800
Committer: Mike Dusenberry <mw...@us.ibm.com>
Committed: Thu Dec 10 13:01:52 2015 -0800

----------------------------------------------------------------------
 .../matrix/DiagMatrixMultiplicationTest.java    |  36 ++++-
 .../binary/matrix/MapMultChainTest.java         |  30 +++-
 .../TransposeMatrixMultiplicationTest.java      |  36 ++++-
 .../binary/matrix/UaggOuterChainTest.java       |  58 +++++--
 .../FullMatrixMatrixCellwiseOperationTest.java  |  51 ++++--
 ...ullMatrixVectorColCellwiseOperationTest.java | 109 ++++++++-----
 ...ullMatrixVectorRowCellwiseOperationTest.java | 109 ++++++++-----
 .../FullVectorVectorCellwiseOperationTest.java  | 159 +++++++++++--------
 .../FullMatrixMultiplicationTest.java           |  42 ++---
 .../functions/unary/matrix/FullCummaxTest.java  |  29 +++-
 .../functions/unary/matrix/FullCumminTest.java  |  29 +++-
 .../functions/unary/matrix/FullCumprodTest.java |  28 +++-
 .../functions/unary/matrix/FullCumsumTest.java  |  29 +++-
 .../unary/matrix/FullSelectPosTest.java         |  29 +++-
 .../unary/matrix/MLUnaryBuiltinTest.java        |  28 +++-
 .../functions/unary/matrix/MinusTest.java       |  28 +++-
 16 files changed, 614 insertions(+), 216 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/DiagMatrixMultiplicationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/DiagMatrixMultiplicationTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/DiagMatrixMultiplicationTest.java
index 13e97ba..b7afe2e 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/DiagMatrixMultiplicationTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/DiagMatrixMultiplicationTest.java
@@ -21,6 +21,8 @@ package org.apache.sysml.test.integration.functions.binary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -57,8 +59,25 @@ public class DiagMatrixMultiplicationTest extends AutomatedTestBase
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[] { "C" }) ); 
 		addTestConfiguration(TEST_NAME2, 
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2, new String[] { "C" }) ); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
 	}
 
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
+	}
 	
 	@Test
 	public void testDiagMMDenseDenseCP() 
@@ -286,10 +305,21 @@ public class DiagMatrixMultiplicationTest extends AutomatedTestBase
 		
 		try
 		{
-			getAndLoadTestConfiguration(TEST_NAME);
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = simplify;
 			
+			double sparsityM1 = sparseM1?sparsity2:sparsity1;
+			double sparsityM2 = sparseM2?sparsity2:sparsity1;
+			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = sparsityM1 + "_" + sparsityM2 + "_" + rightTranspose + "_" + rightVector + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
 			/* This is for running the junit test the new way, i.e., construct the arguments directly */
 			String HOME = SCRIPT_DIR + TEST_DIR;
 			fullDMLScriptName = HOME + TEST_NAME + ".dml";
@@ -301,9 +331,9 @@ public class DiagMatrixMultiplicationTest extends AutomatedTestBase
 			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 			
 			//generate actual dataset
-			double[][] A = getRandomMatrix(rowsA, colsA, 0, 1, sparseM1?sparsity2:sparsity1, 7); 
+			double[][] A = getRandomMatrix(rowsA, colsA, 0, 1, sparsityM1, 7); 
 			writeInputMatrix("A", A, true);
-			double[][] B = getRandomMatrix(rowsB, rightVector?1:colsB, 0, 1, sparseM2?sparsity2:sparsity1, 3); 
+			double[][] B = getRandomMatrix(rowsB, rightVector?1:colsB, 0, 1, sparsityM2, 3); 
 			writeInputMatrix("B", B, true);
 	
 			boolean exceptionExpected = false;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/MapMultChainTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/MapMultChainTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/MapMultChainTest.java
index 82cc978..47c2793 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/MapMultChainTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/MapMultChainTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.binary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -59,6 +61,24 @@ public class MapMultChainTest extends AutomatedTestBase
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[] { "R" })); 
 		addTestConfiguration(TEST_NAME2, 
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2, new String[] { "R" })); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	@Test
@@ -232,7 +252,15 @@ public class MapMultChainTest extends AutomatedTestBase
 		try
 		{
 			String TEST_NAME = testname;
-			getAndLoadTestConfiguration(TEST_NAME);
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = TEST_NAME + "_" + sparse + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			/* This is for running the junit test the new way, i.e., construct the arguments directly */
 			String HOME = SCRIPT_DIR + TEST_DIR;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/TransposeMatrixMultiplicationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/TransposeMatrixMultiplicationTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/TransposeMatrixMultiplicationTest.java
index 05f235b..5bb8090 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/TransposeMatrixMultiplicationTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/TransposeMatrixMultiplicationTest.java
@@ -21,6 +21,8 @@ package org.apache.sysml.test.integration.functions.binary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -68,8 +70,25 @@ public class TransposeMatrixMultiplicationTest extends AutomatedTestBase
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[] { "C" }) );
 		addTestConfiguration( TEST_NAME2, 
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2, new String[] { "C" }) );
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
 	}
 
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
+	}
 	
 	@Test
 	public void testTransposeMMDenseDenseCP() 
@@ -299,7 +318,18 @@ public class TransposeMatrixMultiplicationTest extends AutomatedTestBase
 		
 		try
 		{
-			getAndLoadTestConfiguration(TEST_NAME);
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			
+			double sparsityM1 = sparseM1?sparsity2:sparsity1;
+			double sparsityM2 = sparseM2?sparsity2:sparsity1;
+			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = sparsityM1 + "_" + sparsityM2 + "_" + vectorM2 + "_" + minusM1 + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			/* This is for running the junit test the new way, i.e., construct the arguments directly */
 			String HOME = SCRIPT_DIR + TEST_DIR;
@@ -312,9 +342,9 @@ public class TransposeMatrixMultiplicationTest extends AutomatedTestBase
 			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 			
 			//generate actual dataset
-			double[][] A = getRandomMatrix(rowsA, colsA, 0, 1, sparseM1?sparsity2:sparsity1, 7); 
+			double[][] A = getRandomMatrix(rowsA, colsA, 0, 1, sparsityM1, 7); 
 			writeInputMatrix("A", A, true);
-			double[][] B = getRandomMatrix(rowsB, colsB, 0, 1, sparseM2?sparsity2:sparsity1, 3); 
+			double[][] B = getRandomMatrix(rowsB, colsB, 0, 1, sparsityM2, 3); 
 			writeInputMatrix("B", B, true);
 	
 			boolean exceptionExpected = false;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/UaggOuterChainTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/UaggOuterChainTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/UaggOuterChainTest.java
index d737c27..64d4c2a 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/UaggOuterChainTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix/UaggOuterChainTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.binary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -72,6 +74,24 @@ public class UaggOuterChainTest extends AutomatedTestBase
 		TestUtils.clearAssertionInformation();
 		addTestConfiguration(TEST_NAME1, 
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[] { "C" })); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 	
 	// Less Uagg RowSums -- MR
@@ -1136,7 +1156,7 @@ public class UaggOuterChainTest extends AutomatedTestBase
 	// Uagg RowIndexMin -- SP
 
 	@Test
-	public void TESTEQUALSUAGGOUTERCHAINROWINDEXMINSINGLEDENSESP() 
+	public void testEqualsUaggOuterChainRowIndexMinSingleDenseSP() 
 	{
 		 runBinUaggTest(TEST_NAME1, Type.EQUALS, true, false, SumType.ROW_INDEX_MIN, false, ExecType.SPARK);
 	}
@@ -1230,7 +1250,7 @@ public class UaggOuterChainTest extends AutomatedTestBase
 		try
 		{
 			String TEST_NAME = testname;
-			getAndLoadTestConfiguration(TEST_NAME);
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
 			
 			/* This is for running the junit test the new way, i.e., construct the arguments directly */
 
@@ -1275,14 +1295,6 @@ public class UaggOuterChainTest extends AutomatedTestBase
 					strSumTypeSuffix = new String("RowIndexMin");
 					break;
 			}
-			
-			String HOME = SCRIPT_DIR + TEST_DIR;			
-			fullDMLScriptName = HOME + TEST_NAME + suffix + strSumTypeSuffix + ".dml";
-			programArgs = new String[]{"-stats", "-explain","-args", 
-				input("A"), input("B"), output("C")};
-			
-			fullRScriptName = HOME + TEST_NAME + suffix + strSumTypeSuffix +".R";
-			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 	
 			double dAMinVal = -1, dAMaxVal = 1, dBMinVal = -1, dBMaxVal = 1;
 			
@@ -1294,12 +1306,30 @@ public class UaggOuterChainTest extends AutomatedTestBase
 					dBMinVal = 0;
 					dBMaxVal = 0;
 				}
-				
-					
+			
+			double sparsity = sparse?sparsity2:sparsity1;
+			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_"+ sumType.ordinal() + "_" +
+						singleBlock + "_" + sparsity + "_" + bEmptyBlock + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
+			String HOME = SCRIPT_DIR + TEST_DIR;			
+			fullDMLScriptName = HOME + TEST_NAME + suffix + strSumTypeSuffix + ".dml";
+			programArgs = new String[]{"-stats", "-explain","-args", 
+				input("A"), input("B"), output("C")};
+			
+			fullRScriptName = HOME + TEST_NAME + suffix + strSumTypeSuffix +".R";
+			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
+			
 			//generate actual datasets
-			double[][] A = getRandomMatrix(rows, 1, dAMinVal, dAMaxVal, sparse?sparsity2:sparsity1, 235);
+			double[][] A = getRandomMatrix(rows, 1, dAMinVal, dAMaxVal, sparsity, 235);
 			writeInputMatrixWithMTD("A", A, true);
-			double[][] B = getRandomMatrix(1, singleBlock?cols1:cols2, dBMinVal, dBMaxVal, sparse?sparsity2:sparsity1, 124);
+			double[][] B = getRandomMatrix(1, singleBlock?cols1:cols2, dBMinVal, dBMaxVal, sparsity, 124);
 			writeInputMatrixWithMTD("B", B, true);
 			
 			runTest(true, false, null, -1); 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixMatrixCellwiseOperationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixMatrixCellwiseOperationTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixMatrixCellwiseOperationTest.java
index be7de75..51ad7a3 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixMatrixCellwiseOperationTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixMatrixCellwiseOperationTest.java
@@ -21,6 +21,8 @@ package org.apache.sysml.test.integration.functions.binary.matrix_full_cellwise;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -68,6 +70,24 @@ public class FullMatrixMatrixCellwiseOperationTest extends AutomatedTestBase
 		addTestConfiguration(TEST_NAME2,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2,new String[]{"C"})); 
 		addTestConfiguration(TEST_NAME3,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME3,new String[]{"C"})); 
 		addTestConfiguration(TEST_NAME4,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME4,new String[]{"C"})); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	// ----------------
@@ -754,18 +774,6 @@ public class FullMatrixMatrixCellwiseOperationTest extends AutomatedTestBase
 			}
 			
 			TestConfiguration config = getTestConfiguration(TEST_NAME);
-			loadTestConfiguration(config);
-			
-			/* This is for running the junit test the new way, i.e., construct the arguments directly */
-			String HOME = SCRIPT_DIR + TEST_DIR;
-			fullDMLScriptName = HOME + TEST_NAME + ".dml";
-			programArgs = new String[]{"-explain", "-args",
-				input("A"), Integer.toString(rows), Integer.toString(cols),
-				input("B"), Integer.toString(rows), Integer.toString(cols),
-				output("C") };
-			
-			fullRScriptName = HOME + TEST_NAME + ".R";
-			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 	
 			//get sparsity
 			double lsparsity1 = 1.0, lsparsity2 = 1.0;
@@ -780,6 +788,25 @@ public class FullMatrixMatrixCellwiseOperationTest extends AutomatedTestBase
 				case EMPTY: lsparsity2 = 0.0; break;
 			}
 			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED && (type != OpType.DIVISION))
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + lsparsity1 + "_" + lsparsity2 + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
+			/* This is for running the junit test the new way, i.e., construct the arguments directly */
+			String HOME = SCRIPT_DIR + TEST_DIR;
+			fullDMLScriptName = HOME + TEST_NAME + ".dml";
+			programArgs = new String[]{"-explain", "-args",
+				input("A"), Integer.toString(rows), Integer.toString(cols),
+				input("B"), Integer.toString(rows), Integer.toString(cols),
+				output("C") };
+			
+			fullRScriptName = HOME + TEST_NAME + ".R";
+			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
+			
 			//generate actual dataset
 			double[][] A = getRandomMatrix(rows, cols, 0, (lsparsity1==0)?0:1, lsparsity1, 7); 
 			writeInputMatrix("A", A, true);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorColCellwiseOperationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorColCellwiseOperationTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorColCellwiseOperationTest.java
index 45b8fea..2036a15 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorColCellwiseOperationTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorColCellwiseOperationTest.java
@@ -21,6 +21,8 @@ package org.apache.sysml.test.integration.functions.binary.matrix_full_cellwise;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -64,10 +66,28 @@ public class FullMatrixVectorColCellwiseOperationTest extends AutomatedTestBase
 	@Override
 	public void setUp() 
 	{
-		addTestConfiguration(TEST_NAME1,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1,new String[]{"C"})); 
-		addTestConfiguration(TEST_NAME2,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2,new String[]{"C"})); 
-		addTestConfiguration(TEST_NAME3,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME3,new String[]{"C"})); 
-		addTestConfiguration(TEST_NAME4,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME4,new String[]{"C"})); 
+		addTestConfiguration(TEST_NAME1, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[]{"C"}));
+		addTestConfiguration(TEST_NAME2, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2, new String[]{"C"}));
+		addTestConfiguration(TEST_NAME3, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME3, new String[]{"C"}));
+		addTestConfiguration(TEST_NAME4, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME4, new String[]{"C"}));
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	// ----------------------------
@@ -127,55 +147,55 @@ public class FullMatrixVectorColCellwiseOperationTest extends AutomatedTestBase
 	}
 	
 	@Test
-	public void testSubstractionDenseDenseSP() 
+	public void testSubtractionDenseDenseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseSP() 
+	public void testSubtractionDenseSparseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptySP() 
+	public void testSubtractionDenseEmptySP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseSP() 
+	public void testSubtractionSparseDenseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseSP() 
+	public void testSubtractionSparseSparseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptySP() 
+	public void testSubtractionSparseEmptySP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseSP() 
+	public void testSubtractionEmptyDenseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseSP() 
+	public void testSubtractionEmptySparseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptySP() 
+	public void testSubtractionEmptyEmptySP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.SPARK);
 	}
@@ -399,109 +419,109 @@ public class FullMatrixVectorColCellwiseOperationTest extends AutomatedTestBase
 	}	
 	
 	@Test
-	public void testSubstractionDenseDenseCP() 
+	public void testSubtractionDenseDenseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseCP() 
+	public void testSubtractionDenseSparseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptyCP() 
+	public void testSubtractionDenseEmptyCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseCP() 
+	public void testSubtractionSparseDenseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseCP() 
+	public void testSubtractionSparseSparseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptyCP() 
+	public void testSubtractionSparseEmptyCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseCP() 
+	public void testSubtractionEmptyDenseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseCP() 
+	public void testSubtractionEmptySparseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptyCP() 
+	public void testSubtractionEmptyEmptyCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseDenseMR() 
+	public void testSubtractionDenseDenseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseMR() 
+	public void testSubtractionDenseSparseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptyMR() 
+	public void testSubtractionDenseEmptyMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseMR() 
+	public void testSubtractionSparseDenseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseMR() 
+	public void testSubtractionSparseSparseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptyMR() 
+	public void testSubtractionSparseEmptyMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseMR() 
+	public void testSubtractionEmptyDenseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseMR() 
+	public void testSubtractionEmptySparseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptyMR() 
+	public void testSubtractionEmptyEmptyMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.MR);
 	}
@@ -754,16 +774,6 @@ public class FullMatrixVectorColCellwiseOperationTest extends AutomatedTestBase
 			}
 			
 			TestConfiguration config = getTestConfiguration(TEST_NAME);
-			loadTestConfiguration(config);
-			
-			/* This is for running the junit test the new way, i.e., construct the arguments directly */
-			String HOME = SCRIPT_DIR + TEST_DIR;
-			fullDMLScriptName = HOME + TEST_NAME + ".dml";
-			programArgs = new String[]{"-explain","recompile_runtime","-args",
-				input("A"), input("B"), output("C") };
-			
-			fullRScriptName = HOME + TEST_NAME + ".R";
-			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 			
 			//get sparsity
 			double lsparsity1 = 1.0, lsparsity2 = 1.0;
@@ -778,6 +788,23 @@ public class FullMatrixVectorColCellwiseOperationTest extends AutomatedTestBase
 				case EMPTY: lsparsity2 = 0.0; break;
 			}
 			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED && (type != OpType.DIVISION))
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + lsparsity1 + "_" + lsparsity2 + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
+			/* This is for running the junit test the new way, i.e., construct the arguments directly */
+			String HOME = SCRIPT_DIR + TEST_DIR;
+			fullDMLScriptName = HOME + TEST_NAME + ".dml";
+			programArgs = new String[]{"-explain","recompile_runtime","-args",
+				input("A"), input("B"), output("C") };
+			
+			fullRScriptName = HOME + TEST_NAME + ".R";
+			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
+			
 			//generate actual dataset
 			double[][] A = getRandomMatrix(rows, cols, 0, (lsparsity1==0)?0:1, lsparsity1, 7); 
 			writeInputMatrixWithMTD("A", A, true);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorRowCellwiseOperationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorRowCellwiseOperationTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorRowCellwiseOperationTest.java
index 51ec3a0..c1fd31c 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorRowCellwiseOperationTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullMatrixVectorRowCellwiseOperationTest.java
@@ -21,6 +21,8 @@ package org.apache.sysml.test.integration.functions.binary.matrix_full_cellwise;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -64,10 +66,28 @@ public class FullMatrixVectorRowCellwiseOperationTest extends AutomatedTestBase
 	@Override
 	public void setUp() 
 	{
-		addTestConfiguration(TEST_NAME1,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1,new String[]{"C"})); 
-		addTestConfiguration(TEST_NAME2,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2,new String[]{"C"})); 
-		addTestConfiguration(TEST_NAME3,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME3,new String[]{"C"})); 
-		addTestConfiguration(TEST_NAME4,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME4,new String[]{"C"})); 
+		addTestConfiguration(TEST_NAME1, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[]{"C"}));
+		addTestConfiguration(TEST_NAME2, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2, new String[]{"C"}));
+		addTestConfiguration(TEST_NAME3, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME3, new String[]{"C"}));
+		addTestConfiguration(TEST_NAME4, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME4, new String[]{"C"}));
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	// ------------------------------------
@@ -127,55 +147,55 @@ public class FullMatrixVectorRowCellwiseOperationTest extends AutomatedTestBase
 	}
 	
 	@Test
-	public void testSubstractionDenseDenseSP() 
+	public void testSubtractionDenseDenseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseSP() 
+	public void testSubtractionDenseSparseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptySP() 
+	public void testSubtractionDenseEmptySP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseSP() 
+	public void testSubtractionSparseDenseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseSP() 
+	public void testSubtractionSparseSparseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptySP() 
+	public void testSubtractionSparseEmptySP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseSP() 
+	public void testSubtractionEmptyDenseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseSP() 
+	public void testSubtractionEmptySparseSP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptySP() 
+	public void testSubtractionEmptyEmptySP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.SPARK);
 	}
@@ -399,109 +419,109 @@ public class FullMatrixVectorRowCellwiseOperationTest extends AutomatedTestBase
 	}	
 	
 	@Test
-	public void testSubstractionDenseDenseCP() 
+	public void testSubtractionDenseDenseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseCP() 
+	public void testSubtractionDenseSparseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptyCP() 
+	public void testSubtractionDenseEmptyCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseCP() 
+	public void testSubtractionSparseDenseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseCP() 
+	public void testSubtractionSparseSparseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptyCP() 
+	public void testSubtractionSparseEmptyCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseCP() 
+	public void testSubtractionEmptyDenseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseCP() 
+	public void testSubtractionEmptySparseCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptyCP() 
+	public void testSubtractionEmptyEmptyCP() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseDenseMR() 
+	public void testSubtractionDenseDenseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseMR() 
+	public void testSubtractionDenseSparseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptyMR() 
+	public void testSubtractionDenseEmptyMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseMR() 
+	public void testSubtractionSparseDenseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseMR() 
+	public void testSubtractionSparseSparseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptyMR() 
+	public void testSubtractionSparseEmptyMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseMR() 
+	public void testSubtractionEmptyDenseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseMR() 
+	public void testSubtractionEmptySparseMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptyMR() 
+	public void testSubtractionEmptyEmptyMR() 
 	{
 		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.MR);
 	}
@@ -754,16 +774,6 @@ public class FullMatrixVectorRowCellwiseOperationTest extends AutomatedTestBase
 			}
 			
 			TestConfiguration config = getTestConfiguration(TEST_NAME);
-			loadTestConfiguration(config);
-			
-			/* This is for running the junit test the new way, i.e., construct the arguments directly */
-			String HOME = SCRIPT_DIR + TEST_DIR;
-			fullDMLScriptName = HOME + TEST_NAME + ".dml";
-			programArgs = new String[]{"-explain","recompile_runtime","-args",
-				input("A"), input("B"), output("C") };
-			
-			fullRScriptName = HOME + TEST_NAME + ".R";
-			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 	
 			//get sparsity
 			double lsparsity1 = 1.0, lsparsity2 = 1.0;
@@ -778,6 +788,23 @@ public class FullMatrixVectorRowCellwiseOperationTest extends AutomatedTestBase
 				case EMPTY: lsparsity2 = 0.0; break;
 			}
 			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED && (type != OpType.DIVISION))
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + lsparsity1 + "_" + lsparsity2 + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
+			/* This is for running the junit test the new way, i.e., construct the arguments directly */
+			String HOME = SCRIPT_DIR + TEST_DIR;
+			fullDMLScriptName = HOME + TEST_NAME + ".dml";
+			programArgs = new String[]{"-explain","recompile_runtime","-args",
+				input("A"), input("B"), output("C") };
+			
+			fullRScriptName = HOME + TEST_NAME + ".R";
+			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
+			
 			//generate actual dataset
 			double[][] A = getRandomMatrix(rows, cols, 0, (lsparsity1==0)?0:1, lsparsity1, 7); 
 			writeInputMatrixWithMTD("A", A, true);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullVectorVectorCellwiseOperationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullVectorVectorCellwiseOperationTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullVectorVectorCellwiseOperationTest.java
index 3396460..0ac9ce2 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullVectorVectorCellwiseOperationTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_cellwise/FullVectorVectorCellwiseOperationTest.java
@@ -21,6 +21,8 @@ package org.apache.sysml.test.integration.functions.binary.matrix_full_cellwise;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -51,7 +53,7 @@ public class FullVectorVectorCellwiseOperationTest extends AutomatedTestBase
 	
 	private enum OpType{
 		ADDITION,
-		SUBSTRACTION,
+		SUBTRACTION,
 		MULTIPLICATION,
 		LESS_THAN,
 	}
@@ -66,6 +68,24 @@ public class FullVectorVectorCellwiseOperationTest extends AutomatedTestBase
 	public void setUp() 
 	{
 		addTestConfiguration(TEST_NAME, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME, new String[]{"C"}));
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 	
 	@Test
@@ -123,57 +143,57 @@ public class FullVectorVectorCellwiseOperationTest extends AutomatedTestBase
 	}
 	
 	@Test
-	public void testSubstractionDenseDenseSP() 
+	public void testSubtractionDenseDenseSP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseSP() 
+	public void testSubtractionDenseSparseSP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptySP() 
+	public void testSubtractionDenseEmptySP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseSP() 
+	public void testSubtractionSparseDenseSP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseSP() 
+	public void testSubtractionSparseSparseSP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptySP() 
+	public void testSubtractionSparseEmptySP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseSP() 
+	public void testSubtractionEmptyDenseSP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseSP() 
+	public void testSubtractionEmptySparseSP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.SPARK);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptySP() 
+	public void testSubtractionEmptyEmptySP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.SPARK);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.SPARK);
 	}
 	
 	@Test
@@ -394,111 +414,111 @@ public class FullVectorVectorCellwiseOperationTest extends AutomatedTestBase
 	}	
 	
 	@Test
-	public void testSubstractionDenseDenseCP() 
+	public void testSubtractionDenseDenseCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseCP() 
+	public void testSubtractionDenseSparseCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptyCP() 
+	public void testSubtractionDenseEmptyCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseCP() 
+	public void testSubtractionSparseDenseCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseCP() 
+	public void testSubtractionSparseSparseCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptyCP() 
+	public void testSubtractionSparseEmptyCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseCP() 
+	public void testSubtractionEmptyDenseCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseCP() 
+	public void testSubtractionEmptySparseCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptyCP() 
+	public void testSubtractionEmptyEmptyCP() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.CP);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.CP);
 	}
 	
 	@Test
-	public void testSubstractionDenseDenseMR() 
+	public void testSubtractionDenseDenseMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionDenseSparseMR() 
+	public void testSubtractionDenseSparseMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionDenseEmptyMR() 
+	public void testSubtractionDenseEmptyMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.DENSE, SparsityType.EMPTY, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseDenseMR() 
+	public void testSubtractionSparseDenseMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseSparseMR() 
+	public void testSubtractionSparseSparseMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionSparseEmptyMR() 
+	public void testSubtractionSparseEmptyMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.SPARSE, SparsityType.EMPTY, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptyDenseMR() 
+	public void testSubtractionEmptyDenseMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.DENSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptySparseMR() 
+	public void testSubtractionEmptySparseMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.SPARSE, ExecType.MR);
 	}
 	
 	@Test
-	public void testSubstractionEmptyEmptyMR() 
+	public void testSubtractionEmptyEmptyMR() 
 	{
-		runMatrixVectorCellwiseOperationTest(OpType.SUBSTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.MR);
+		runMatrixVectorCellwiseOperationTest(OpType.SUBTRACTION, SparsityType.EMPTY, SparsityType.EMPTY, ExecType.MR);
 	}
 	
 	@Test
@@ -745,22 +765,12 @@ public class FullVectorVectorCellwiseOperationTest extends AutomatedTestBase
 			switch( type )
 			{
 				case ADDITION: opcode = "+"; opcoder="+";  break;
-				case SUBSTRACTION: opcode = "-";  opcoder="-"; break;
+				case SUBTRACTION: opcode = "-";  opcoder="-"; break;
 				case MULTIPLICATION: opcode="*";  opcoder="mult"; break;
 				case LESS_THAN: opcode="<"; opcoder="lt"; break;
 			}
 			
 			TestConfiguration config = getTestConfiguration(TEST_NAME);
-			loadTestConfiguration(config);
-			
-			String HOME = SCRIPT_DIR + TEST_DIR;
-			fullDMLScriptName = HOME + TEST_NAME + ".dml";
-			programArgs = new String[]{"-explain","recompile_runtime","-args",
-				input("A"), input("B"), opcode, output("C") };
-			
-			fullRScriptName = HOME + TEST_NAME + ".R";
-			rCmd = "Rscript" + " " + fullRScriptName + " " + 
-				inputDir() + " " + opcoder + " " + expectedDir();
 			
 			//get sparsity
 			double lsparsity1 = 1.0, lsparsity2 = 1.0;
@@ -775,6 +785,23 @@ public class FullVectorVectorCellwiseOperationTest extends AutomatedTestBase
 				case EMPTY: lsparsity2 = 0.0; break;
 			}
 			
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + lsparsity1 + "_" + lsparsity2 + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
+			String HOME = SCRIPT_DIR + TEST_DIR;
+			fullDMLScriptName = HOME + TEST_NAME + ".dml";
+			programArgs = new String[]{"-explain", "recompile_runtime", "-args",
+				input("A"), input("B"), opcode, output("C") };
+			
+			fullRScriptName = HOME + TEST_NAME + ".R";
+			rCmd = "Rscript" + " " + fullRScriptName + " " + 
+				inputDir() + " " + opcoder + " " + expectedDir();
+			
 			//generate actual dataset
 			double[][] A = getRandomMatrix(rows1, 1, 0, (lsparsity1==0)?0:1, lsparsity1, 7); 
 			writeInputMatrixWithMTD("A", A, true);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_other/FullMatrixMultiplicationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_other/FullMatrixMultiplicationTest.java b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_other/FullMatrixMultiplicationTest.java
index e744047..3145456 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_other/FullMatrixMultiplicationTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/binary/matrix_full_other/FullMatrixMultiplicationTest.java
@@ -272,24 +272,17 @@ public class FullMatrixMultiplicationTest extends AutomatedTestBase
 				TEST_CACHE_DIR = "mm" + String.valueOf(sparsityA) + "_" + String.valueOf(sparsityB) + "/";
 			}
 			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
 			/* This is for running the junit test the new way, i.e., construct the arguments directly */
 			String HOME = SCRIPT_DIR + TEST_DIR;
-			String TARGET_IN = TEST_DATA_DIR + TEST_CLASS_DIR + INPUT_DIR;
-			String TARGET_OUT = TEST_DATA_DIR + TEST_CLASS_DIR + OUTPUT_DIR;
-			String TARGET_EXPECTED = TEST_DATA_DIR + TEST_CLASS_DIR + EXPECTED_DIR + TEST_CACHE_DIR;
 			fullDMLScriptName = HOME + TEST_NAME + ".dml";
-			programArgs = new String[]{"-args", TARGET_IN + "A",
-                                            Integer.toString(rowsA),
-                                            Integer.toString(colsA),
-                                            TARGET_IN + "B",
-                                            Integer.toString(rowsB),
-                                            Integer.toString(colsB),
-                                            TARGET_OUT + "C"    };
-			fullRScriptName = HOME + TEST_NAME + ".R";
-			rCmd = "Rscript" + " " + fullRScriptName + " " + 
-			       TARGET_IN + " " + TARGET_EXPECTED;
+			programArgs = new String[]{"-args",
+				input("A"), Integer.toString(rowsA), Integer.toString(colsA),
+				input("B"), Integer.toString(rowsB), Integer.toString(colsB), output("C") };
 			
-			loadTestConfiguration(config, TEST_CACHE_DIR);
+			fullRScriptName = HOME + TEST_NAME + ".R";
+			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 	
 			//generate actual dataset
 			double[][] A = getRandomMatrix(rowsA, colsA, 0, 1, sparsityA, 7); 
@@ -337,24 +330,17 @@ public class FullMatrixMultiplicationTest extends AutomatedTestBase
 				TEST_CACHE_DIR = "mv" + String.valueOf(sparsityA) + "/";
 			}
 			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
+			
 			/* This is for running the junit test the new way, i.e., construct the arguments directly */
 			String HOME = SCRIPT_DIR + TEST_DIR;
-			String TARGET_IN = TEST_DATA_DIR + TEST_CLASS_DIR + INPUT_DIR;
-			String TARGET_OUT = TEST_DATA_DIR + TEST_CLASS_DIR + OUTPUT_DIR;
-			String TARGET_EXPECTED = TEST_DATA_DIR + TEST_CLASS_DIR + EXPECTED_DIR + TEST_CACHE_DIR;
 			fullDMLScriptName = HOME + TEST_NAME + ".dml";
-			programArgs = new String[]{"-args", TARGET_IN + "A",
-					                        Integer.toString(rowsA),
-					                        Integer.toString(colsA),
-					                        TARGET_IN + "B",
-					                        Integer.toString(rowsB),
-					                        Integer.toString(1),
-					                        TARGET_OUT + "C"    };
-			fullRScriptName = HOME + TEST_NAME + ".R";
-			rCmd = "Rscript" + " " + fullRScriptName + " " + 
-			       TARGET_IN + " " + TARGET_EXPECTED;
+			programArgs = new String[]{"-args",
+				input("A"), Integer.toString(rowsA), Integer.toString(colsA),
+				input("B"), Integer.toString(rowsB), Integer.toString(1), output("C") };
 			
-			loadTestConfiguration(config, TEST_CACHE_DIR);
+			fullRScriptName = HOME + TEST_NAME + ".R";
+			rCmd = "Rscript" + " " + fullRScriptName + " " + inputDir() + " " + expectedDir();
 	
 			//generate actual dataset
 			double[][] A = getRandomMatrix(rowsA, colsA, 0, 1, sparsityA, 7); 

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCummaxTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCummaxTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCummaxTest.java
index f8ec330..1300638 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCummaxTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCummaxTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.unary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -61,6 +63,24 @@ public class FullCummaxTest extends AutomatedTestBase
 	public void setUp() 
 	{
 		addTestConfiguration(TEST_NAME,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME,new String[]{"B"})); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	@Test
@@ -243,7 +263,14 @@ public class FullCummaxTest extends AutomatedTestBase
 			int rows = (type==InputType.ROW_VECTOR) ? 1 : rowsMatrix;
 			double sparsity = (sparse) ? spSparse : spDense;
 			
-			getAndLoadTestConfiguration(TEST_NAME);
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + sparsity + "/";
+			}
+			
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			// This is for running the junit test the new way, i.e., construct the arguments directly
 			String HOME = SCRIPT_DIR + TEST_DIR;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumminTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumminTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumminTest.java
index e209ee1..89114d2 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumminTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumminTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.unary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -61,6 +63,24 @@ public class FullCumminTest extends AutomatedTestBase
 	public void setUp() 
 	{
 		addTestConfiguration(TEST_NAME,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME,new String[]{"B"})); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	@Test
@@ -243,7 +263,14 @@ public class FullCumminTest extends AutomatedTestBase
 			int rows = (type==InputType.ROW_VECTOR) ? 1 : rowsMatrix;
 			double sparsity = (sparse) ? spSparse : spDense;
 			
-			getAndLoadTestConfiguration(TEST_NAME);
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + sparsity + "/";
+			}
+			
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			// This is for running the junit test the new way, i.e., construct the arguments directly
 			String HOME = SCRIPT_DIR + TEST_DIR;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumprodTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumprodTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumprodTest.java
index a73b535..30b5502 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumprodTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumprodTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.unary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -61,8 +63,25 @@ public class FullCumprodTest extends AutomatedTestBase
 	public void setUp() 
 	{
 		addTestConfiguration(TEST_NAME,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME,new String[]{"B"})); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
 	}
 
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
+	}
 		
 	@Test
 	public void testCumprodColVectorDenseCP() 
@@ -244,7 +263,14 @@ public class FullCumprodTest extends AutomatedTestBase
 			int rows = (type==InputType.ROW_VECTOR) ? 1 : rowsMatrix;
 			double sparsity = (sparse) ? spSparse : spDense;
 			
-			getAndLoadTestConfiguration(TEST_NAME);
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + sparsity + "/";
+			}
+			
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			// This is for running the junit test the new way, i.e., construct the arguments directly
 			String HOME = SCRIPT_DIR + TEST_DIR;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumsumTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumsumTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumsumTest.java
index 4ba8ae0..51ae9d7 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumsumTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullCumsumTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.unary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -61,6 +63,24 @@ public class FullCumsumTest extends AutomatedTestBase
 	public void setUp() 
 	{
 		addTestConfiguration(TEST_NAME,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME,new String[]{"B"})); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	@Test
@@ -242,7 +262,14 @@ public class FullCumsumTest extends AutomatedTestBase
 			int rows = (type==InputType.ROW_VECTOR) ? 1 : rowsMatrix;
 			double sparsity = (sparse) ? spSparse : spDense;
 			
-			getAndLoadTestConfiguration(TEST_NAME);
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = type.ordinal() + "_" + sparsity + "/";
+			}
+			
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			// This is for running the junit test the new way, i.e., construct the arguments directly
 			String HOME = SCRIPT_DIR + TEST_DIR;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullSelectPosTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullSelectPosTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullSelectPosTest.java
index 25bd867..cd24e2e 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullSelectPosTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/FullSelectPosTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.unary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -57,6 +59,24 @@ public class FullSelectPosTest extends AutomatedTestBase
 	public void setUp() 
 	{
 		addTestConfiguration(TEST_NAME,new TestConfiguration(TEST_CLASS_DIR, TEST_NAME,new String[]{"B"})); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 
 	@Test
@@ -147,7 +167,14 @@ public class FullSelectPosTest extends AutomatedTestBase
 		{
 			double sparsity = (sparse) ? spSparse : spDense;
 			
-			getAndLoadTestConfiguration(TEST_NAME);
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = sparsity + "/";
+			}
+			
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			// This is for running the junit test the new way, i.e., construct the arguments directly
 			String HOME = SCRIPT_DIR + TEST_DIR;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MLUnaryBuiltinTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MLUnaryBuiltinTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MLUnaryBuiltinTest.java
index 84e860e..17c0ffa 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MLUnaryBuiltinTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MLUnaryBuiltinTest.java
@@ -21,7 +21,9 @@ package org.apache.sysml.test.integration.functions.unary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript;
@@ -64,8 +66,25 @@ public class MLUnaryBuiltinTest extends AutomatedTestBase
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[]{"B"}));
 		addTestConfiguration(TEST_NAME2,
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2, new String[]{"B"}));
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
 	}
 
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
+	}
 	
 	@Test
 	public void testSampleProportionVectorDenseCP() 
@@ -241,7 +260,14 @@ public class MLUnaryBuiltinTest extends AutomatedTestBase
 			double sparsity = (sparse) ? spSparse : spDense;
 			String TEST_NAME = testname;
 			
-			getAndLoadTestConfiguration(TEST_NAME);
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = testname + type.ordinal() + "_" + sparsity + "/";
+			}
+			
+			TestConfiguration config = getTestConfiguration(TEST_NAME);
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			// This is for running the junit test the new way, i.e., construct the arguments directly
 			String HOME = SCRIPT_DIR + TEST_DIR;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/130794da/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MinusTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MinusTest.java b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MinusTest.java
index 11b042e..a0ae72a 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MinusTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/unary/matrix/MinusTest.java
@@ -21,6 +21,8 @@ package org.apache.sysml.test.integration.functions.unary.matrix;
 
 import java.util.HashMap;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import org.apache.sysml.api.DMLScript.RUNTIME_PLATFORM;
@@ -49,6 +51,24 @@ public class MinusTest extends AutomatedTestBase
 		
 		addTestConfiguration(TEST_NAME1, 
 			new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[] { "Y" }) ); 
+
+		if (TEST_CACHE_ENABLED) {
+			setOutAndExpectedDeletionDisabled(true);
+		}
+	}
+
+	@BeforeClass
+	public static void init()
+	{
+		TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+	}
+
+	@AfterClass
+	public static void cleanUp()
+	{
+		if (TEST_CACHE_ENABLED) {
+			TestUtils.clearDirectory(TEST_DATA_DIR + TEST_CLASS_DIR);
+		}
 	}
 	
 	@Test
@@ -108,7 +128,13 @@ public class MinusTest extends AutomatedTestBase
 			config.addVariable("rows", rows);
 			config.addVariable("cols", cols);
 			
-			loadTestConfiguration(config);
+			String TEST_CACHE_DIR = "";
+			if (TEST_CACHE_ENABLED)
+			{
+				TEST_CACHE_DIR = sparse + "/";
+			}
+			
+			loadTestConfiguration(config, TEST_CACHE_DIR);
 			
 			/* This is for running the junit test the new way, i.e., construct the arguments directly */
 			String HOME = SCRIPT_DIR + TEST_DIR;