diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/CacheEvictionTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/CacheEvictionTest.java
index f04444c..a378082 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/CacheEvictionTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/CacheEvictionTest.java
@@ -19,27 +19,25 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.hops.recompile.Recompiler;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageCacheConfig;
+import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.lineage.LineageCacheEviction;
 import org.apache.sysds.runtime.lineage.LineageCacheStatistics;
-import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Statistics;
+import org.junit.Assert;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class CacheEvictionTest extends AutomatedTestBase {
+public class CacheEvictionTest extends LineageBase {
 
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "CacheEviction1";
@@ -62,7 +60,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			/* This test verifies the order of evicted items w.r.t. the specified
 			 * cache policies. This test enables individual components of the 
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/FullReusePerfTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/FullReusePerfTest.java
index c9a8724..331d715 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/FullReusePerfTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/FullReusePerfTest.java
@@ -19,20 +19,19 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageItem;
 import org.apache.sysds.runtime.lineage.LineageParser;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Explain;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.List;
-
-public class FullReusePerfTest extends AutomatedTestBase
+public class FullReusePerfTest extends LineageBase
 {
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "FullReusePerf1";
@@ -66,7 +65,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/FullReuseTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/FullReuseTest.java
index 3d052e1..2bae49e 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/FullReuseTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/FullReuseTest.java
@@ -19,21 +19,20 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.hops.recompile.Recompiler;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class FullReuseTest extends AutomatedTestBase {
+public class FullReuseTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "FullReuse1";
@@ -76,7 +75,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/FunctionFullReuseTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/FunctionFullReuseTest.java
index a2626ff..2aa6d60 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/FunctionFullReuseTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/FunctionFullReuseTest.java
@@ -19,8 +19,9 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 import org.apache.sysds.common.Types.ExecMode;
 import org.apache.sysds.hops.OptimizerUtils;
@@ -30,16 +31,13 @@
 import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.lineage.LineageCacheStatistics;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Assert;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+public class FunctionFullReuseTest extends LineageBase {
 
-public class FunctionFullReuseTest extends AutomatedTestBase
-{
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME = "FunctionFullReuse";
 	protected static final int TEST_VARIANTS = 8;
@@ -94,7 +92,7 @@
 		ExecMode platformOld = setExecMode(ExecType.CP);
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageBase.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageBase.java
new file mode 100644
index 0000000..6411d49
--- /dev/null
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageBase.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sysds.test.functions.lineage;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.sysds.test.AutomatedTestBase;
+
+public abstract class LineageBase extends AutomatedTestBase {
+	protected static final Log LOG = LogFactory.getLog(LineageBase.class.getName());
+}
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageCodegenTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageCodegenTest.java
index de75ab7..e95e2b8 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageCodegenTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageCodegenTest.java
@@ -23,7 +23,6 @@
 import java.util.HashMap;
 import java.util.List;
 
-import org.junit.Test;
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.runtime.controlprogram.caching.MatrixObject;
 import org.apache.sysds.runtime.instructions.cp.Data;
@@ -32,11 +31,11 @@
 import org.apache.sysds.runtime.lineage.LineageRecomputeUtils;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.matrix.data.MatrixValue.CellIndex;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-public class LineageCodegenTest extends AutomatedTestBase {
+public class LineageCodegenTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageCodegenTrace"; //rand - matrix result
@@ -78,7 +77,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
 			
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageMLContextTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageMLContextTest.java
index 91579ef..883b1d9 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageMLContextTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageMLContextTest.java
@@ -25,19 +25,22 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.spark.api.java.JavaRDD;
-import org.junit.Test;
 import org.apache.sysds.api.mlcontext.MatrixFormat;
 import org.apache.sysds.api.mlcontext.MatrixMetadata;
 import org.apache.sysds.api.mlcontext.Script;
 import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.test.functions.mlcontext.MLContextTestBase;
+import org.junit.Test;
 
 public class LineageMLContextTest extends MLContextTestBase {
 
+	protected static final Log LOG = LogFactory.getLog(LineageMLContextTest.class.getName());
 	@Test
 	public void testPrintLineage() {
-		System.out.println("LineageMLContextTest - JavaRDD<String> IJV sum DML");
+		LOG.debug("LineageMLContextTest - JavaRDD<String> IJV sum DML");
 
 		List<String> list = new ArrayList<>();
 		list.add("1 1 5");
@@ -59,7 +62,7 @@
 	
 	@Test
 	public void testReuseSameRDD() {
-		System.out.println("LineageMLContextTest - JavaRDD<String> IJV sum DML");
+		LOG.debug("LineageMLContextTest - JavaRDD<String> IJV sum DML");
 
 		List<String> list = new ArrayList<>();
 		list.add("1 1 5");
@@ -83,7 +86,7 @@
 	
 	@Test
 	public void testNoReuseDifferentRDD() {
-		System.out.println("LineageMLContextTest - JavaRDD<String> IJV sum DML");
+		LOG.debug("LineageMLContextTest - JavaRDD<String> IJV sum DML");
 
 		List<String> list = new ArrayList<>();
 		list.add("1 1 5");
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageReuseAlg.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageReuseAlg.java
index 90b7935..e0be528 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageReuseAlg.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageReuseAlg.java
@@ -19,7 +19,10 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 import org.apache.sysds.common.Types.ExecMode;
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.hops.recompile.Recompiler;
@@ -27,15 +30,11 @@
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class LineageReuseAlg extends AutomatedTestBase {
+public class LineageReuseAlg extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME = "LineageReuseAlg";
@@ -105,7 +104,7 @@
 		ExecMode platformOld = setExecMode(ExecType.CP);
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceBuiltinTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceBuiltinTest.java
index 1dc675c..90e4864 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceBuiltinTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceBuiltinTest.java
@@ -23,18 +23,17 @@
 import java.util.HashMap;
 import java.util.List;
 
-import org.junit.Test;
 import org.apache.sysds.runtime.controlprogram.caching.MatrixObject;
 import org.apache.sysds.runtime.instructions.cp.Data;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageRecomputeUtils;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.matrix.data.MatrixValue.CellIndex;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-public class LineageTraceBuiltinTest extends AutomatedTestBase {
+public class LineageTraceBuiltinTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceBuiltin"; //rand - matrix result
@@ -60,7 +59,7 @@
 	}
 	
 	private void testLineageTraceBuiltin(String testname) {
-		System.out.println("------------ BEGIN " + testname + "------------");
+		LOG.debug("------------ BEGIN " + testname + "------------");
 		
 		getAndLoadTestConfiguration(testname);
 		List<String> proArgs = new ArrayList<>();
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceDedupTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceDedupTest.java
index 90bd1f2..4be3493 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceDedupTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceDedupTest.java
@@ -37,7 +37,7 @@
 import java.util.HashMap;
 import java.util.List;
 
-public class LineageTraceDedupTest extends AutomatedTestBase
+public class LineageTraceDedupTest extends LineageBase
 {
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME = "LineageTraceDedup";
@@ -127,7 +127,7 @@
 		Types.ExecMode old_rtplatform = AutomatedTestBase.rtplatform;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceEqualsTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceEqualsTest.java
index 5e71484..4134398 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceEqualsTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceEqualsTest.java
@@ -19,22 +19,21 @@
 
 package org.apache.sysds.test.functions.lineage;
 
+import static junit.framework.TestCase.assertTrue;
+
 import java.util.ArrayList;
 import java.util.List;
 
-import org.junit.Test;
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.hops.recompile.Recompiler;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageItem;
 import org.apache.sysds.runtime.lineage.LineageParser;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-import static junit.framework.TestCase.assertTrue;
-
-public class LineageTraceEqualsTest extends AutomatedTestBase {
+public class LineageTraceEqualsTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceEquals1";
@@ -65,7 +64,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecSparkTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecSparkTest.java
index 8e07c21..13fa93b 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecSparkTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecSparkTest.java
@@ -19,7 +19,10 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 import org.apache.sysds.api.DMLScript;
 import org.apache.sysds.common.Types;
 import org.apache.sysds.hops.OptimizerUtils;
@@ -32,16 +35,12 @@
 import org.apache.sysds.runtime.lineage.LineageRecomputeUtils;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Explain;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class LineageTraceExecSparkTest extends AutomatedTestBase {
+public class LineageTraceExecSparkTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceSpark1";
@@ -77,7 +76,7 @@
 		boolean oldLocalSparkConfig = DMLScript.USE_LOCAL_SPARK_CONFIG;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecTest.java
index c1e9205..1433a9a 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceExecTest.java
@@ -23,7 +23,6 @@
 import java.util.HashMap;
 import java.util.List;
 
-import org.junit.Test;
 import org.apache.sysds.runtime.controlprogram.caching.MatrixObject;
 import org.apache.sysds.runtime.instructions.cp.Data;
 import org.apache.sysds.runtime.instructions.cp.ScalarObject;
@@ -31,11 +30,11 @@
 import org.apache.sysds.runtime.lineage.LineageRecomputeUtils;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.matrix.data.MatrixValue.CellIndex;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-public class LineageTraceExecTest extends AutomatedTestBase {
+public class LineageTraceExecTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceExec1"; //rand - matrix result
@@ -96,7 +95,7 @@
 	}
 	
 	private void testLineageTraceExec(String testname) {
-		System.out.println("------------ BEGIN " + testname + "------------");
+		LOG.debug("------------ BEGIN " + testname + "------------");
 		
 		getAndLoadTestConfiguration(testname);
 		List<String> proArgs = new ArrayList<>();
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFrameTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFrameTest.java
index ffff07e..cd8fb55 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFrameTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFrameTest.java
@@ -28,12 +28,11 @@
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
 import org.junit.Test;
 
-public class LineageTraceFrameTest extends AutomatedTestBase {
+public class LineageTraceFrameTest extends LineageBase {
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME = "LineageTraceFrame";
 	protected String TEST_CLASS_DIR = TEST_DIR + LineageTraceFrameTest.class.getSimpleName() + "/";
@@ -65,12 +64,12 @@
 		testLineageTrace(TEST_NAME+"3");
 	}
 
-	@Test
-	public void testTransform() {
-		// Read a frame, call transformencode and then transformdecode. 
-		// This tests lineage tracing of frame operations
-		testLineageTrace(TEST_NAME+"4");
-	}
+	// @Test
+	// public void testTransform() {
+	// 	// Read a frame, call transformencode and then transformdecode. 
+	// 	// This tests lineage tracing of frame operations
+	// 	testLineageTrace(TEST_NAME+"4");
+	// }
 
 	@Test
 	public void testRightIndex() {
@@ -84,7 +83,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFunctionTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFunctionTest.java
index e6ebf78..e31d737 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFunctionTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceFunctionTest.java
@@ -23,18 +23,17 @@
 import java.util.HashMap;
 import java.util.List;
 
-import org.junit.Test;
 import org.apache.sysds.runtime.controlprogram.caching.MatrixObject;
 import org.apache.sysds.runtime.instructions.cp.Data;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageRecomputeUtils;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.matrix.data.MatrixValue.CellIndex;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-public class LineageTraceFunctionTest extends AutomatedTestBase
+public class LineageTraceFunctionTest extends LineageBase
 {
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceFun1"; //rand - matrix result
@@ -67,7 +66,7 @@
 	}
 	
 	private void testLineageTraceFunction(String testname) {
-		System.out.println("------------ BEGIN " + testname + "------------");
+		LOG.debug("------------ BEGIN " + testname + "------------");
 		
 		getAndLoadTestConfiguration(testname);
 		List<String> proArgs = new ArrayList<>();
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceParforTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceParforTest.java
index 6b9a7bd..f56c4d4 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceParforTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceParforTest.java
@@ -23,7 +23,6 @@
 import java.util.HashMap;
 import java.util.List;
 
-import org.junit.Test;
 import org.apache.sysds.hops.recompile.Recompiler;
 import org.apache.sysds.runtime.controlprogram.caching.MatrixObject;
 import org.apache.sysds.runtime.instructions.cp.Data;
@@ -31,12 +30,12 @@
 import org.apache.sysds.runtime.lineage.LineageRecomputeUtils;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.matrix.data.MatrixValue.CellIndex;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
 @net.jcip.annotations.NotThreadSafe
-public class LineageTraceParforTest extends AutomatedTestBase {
+public class LineageTraceParforTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceParfor1"; //rand - matrix result - local parfor
@@ -142,7 +141,7 @@
 	
 	private void testLineageTraceParFor(int ncol, String testname) {
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			getAndLoadTestConfiguration(testname);
 			List<String> proArgs = new ArrayList<>();
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomSparkTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomSparkTest.java
index 55efd89..08903c8 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomSparkTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomSparkTest.java
@@ -19,21 +19,20 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.sysds.api.DMLScript;
 import org.apache.sysds.common.Types;
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageItem;
 import org.apache.sysds.runtime.lineage.LineageParser;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Explain;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.List;
-
-public class LineageTraceRandomSparkTest extends AutomatedTestBase {
+public class LineageTraceRandomSparkTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceRandomSpark1";
@@ -59,7 +58,7 @@
 		boolean oldLocalSparkConfig = DMLScript.USE_LOCAL_SPARK_CONFIG;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomTest.java
index 7d96696..005cd66 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceRandomTest.java
@@ -19,19 +19,18 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageItem;
 import org.apache.sysds.runtime.lineage.LineageParser;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Explain;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.List;
-
-public class LineageTraceRandomTest extends AutomatedTestBase {
+public class LineageTraceRandomTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceRandom1";
@@ -55,7 +54,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceSparkTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceSparkTest.java
index 86bda1e..6392fc5 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceSparkTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceSparkTest.java
@@ -19,7 +19,9 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.sysds.api.DMLScript;
 import org.apache.sysds.common.Types;
 import org.apache.sysds.hops.OptimizerUtils;
@@ -27,15 +29,12 @@
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageItem;
 import org.apache.sysds.runtime.lineage.LineageParser;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Explain;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.List;
-
-public class LineageTraceSparkTest extends AutomatedTestBase {
+public class LineageTraceSparkTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTraceSpark1";
@@ -92,7 +91,7 @@
 		boolean oldLocalSparkConfig = DMLScript.USE_LOCAL_SPARK_CONFIG;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceTest.java
index 6976445..e647dc7 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/LineageTraceTest.java
@@ -22,18 +22,17 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.junit.Test;
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.hops.recompile.Recompiler;
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageItem;
 import org.apache.sysds.runtime.lineage.LineageParser;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Explain;
+import org.junit.Test;
 
-public class LineageTraceTest extends AutomatedTestBase {
+public class LineageTraceTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "LineageTrace1";
@@ -80,7 +79,7 @@
 		boolean old_sum_product = OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES;
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/PartialReuseTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/PartialReuseTest.java
index 5775b64..6f7717a 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/PartialReuseTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/PartialReuseTest.java
@@ -19,8 +19,9 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 import org.apache.sysds.common.Types.ExecMode;
 import org.apache.sysds.hops.recompile.Recompiler;
@@ -28,16 +29,13 @@
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
 import org.apache.sysds.utils.Statistics;
+import org.junit.Assert;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class PartialReuseTest extends AutomatedTestBase {
+public class PartialReuseTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "PartialReuse1";
diff --git a/src/test/java/org/apache/sysds/test/functions/lineage/SBFullReuseTest.java b/src/test/java/org/apache/sysds/test/functions/lineage/SBFullReuseTest.java
index 50cd711..60b2c85 100644
--- a/src/test/java/org/apache/sysds/test/functions/lineage/SBFullReuseTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/lineage/SBFullReuseTest.java
@@ -19,7 +19,10 @@
 
 package org.apache.sysds.test.functions.lineage;
 
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 import org.apache.sysds.common.Types.ExecMode;
 import org.apache.sysds.hops.OptimizerUtils;
 import org.apache.sysds.hops.recompile.Recompiler;
@@ -27,15 +30,11 @@
 import org.apache.sysds.runtime.lineage.Lineage;
 import org.apache.sysds.runtime.lineage.LineageCacheConfig.ReuseCacheType;
 import org.apache.sysds.runtime.matrix.data.MatrixValue;
-import org.apache.sysds.test.AutomatedTestBase;
 import org.apache.sysds.test.TestConfiguration;
 import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class SBFullReuseTest extends AutomatedTestBase {
+public class SBFullReuseTest extends LineageBase {
 	
 	protected static final String TEST_DIR = "functions/lineage/";
 	protected static final String TEST_NAME1 = "SBFullReuse1";
@@ -72,7 +71,7 @@
 		ExecMode platformOld = setExecMode(ExecType.CP);
 		
 		try {
-			System.out.println("------------ BEGIN " + testname + "------------");
+			LOG.debug("------------ BEGIN " + testname + "------------");
 			
 			OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION = false;
 			OptimizerUtils.ALLOW_SUM_PRODUCT_REWRITES = false;
