You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by vo...@apache.org on 2019/12/04 12:55:55 UTC

[drill] 01/11: DRILL-7393: Revisit Drill tests to ensure that patching is executed before any test run

This is an automated email from the ASF dual-hosted git repository.

volodymyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git

commit ba601b01563afa520896f4c30044c79219f7bb8a
Author: Anton Gozhiy <an...@gmail.com>
AuthorDate: Thu Nov 28 14:04:22 2019 +0200

    DRILL-7393: Revisit Drill tests to ensure that patching is executed before any test run
    
    - Added BaseTest with patchers and extended all tests from it.
    - Added a test to java-exec module to ensure that all tests there are inherited from BaseTest.
    - Revised exception handling in the patchers, now it's individual for each patching method.
    
    closes #1910
---
 .../org/apache/drill/common/util/GuavaPatcher.java | 233 +++++++++++----------
 .../apache/drill/common/util/ProtobufPatcher.java  | 154 +++++++-------
 .../java/org/apache/drill/common/TestVersion.java  |   3 +-
 .../drill/common/exceptions/TestUserException.java |   3 +-
 .../drill/common/map/TestCaseInsensitiveMap.java   |   3 +-
 .../common/util/function/TestCheckedFunction.java  |   3 +-
 .../test/java/org/apache/drill/test/BaseTest.java  |  42 ++++
 .../Drill2130CommonHamcrestConfigurationTest.java  |   2 +-
 .../test/java/org/apache/drill/test/DrillTest.java |   4 +-
 .../mapr/drill/maprdb/tests/MaprDBTestsSuite.java  |   3 +-
 .../maprdb/tests/json/TestFieldPathHelper.java     |   3 +-
 .../org/apache/drill/hbase/HBaseTestsSuite.java    |  10 +-
 ...l2130StorageHBaseHamcrestConfigurationTest.java |   3 +-
 .../inspectors/SkipFooterRecordsInspectorTest.java |   3 +-
 .../store/hive/schema/TestColumnListCache.java     |   3 +-
 .../store/hive/schema/TestSchemaConversion.java    |   3 +-
 ...30StorageHiveCoreHamcrestConfigurationTest.java |   3 +-
 .../drill/exec/store/kafka/TestKafkaSuit.java      |   3 +-
 .../kafka/decoders/MessageReaderFactoryTest.java   |   3 +-
 .../apache/drill/store/kudu/TestKuduConnect.java   |   3 +-
 .../drill/exec/store/mongo/MongoTestSuit.java      |   3 +-
 .../exec/store/mongo/TestMongoChunkAssignment.java |   3 +-
 .../yarn/appMaster/DrillApplicationMaster.java     |   5 +-
 .../org/apache/drill/yarn/client/DrillOnYarn.java  |   5 +-
 .../org/apache/drill/yarn/client/TestClient.java   |   3 +-
 .../drill/yarn/client/TestCommandLineOptions.java  |   3 +-
 .../org/apache/drill/yarn/core/TestConfig.java     |   3 +-
 .../org/apache/drill/yarn/scripts/TestScripts.java |   3 +-
 .../apache/drill/yarn/zk/TestAmRegistration.java   |   3 +-
 .../org/apache/drill/yarn/zk/TestZkRegistry.java   |   3 +-
 .../java/org/apache/drill/exec/expr/TestPrune.java |  38 ----
 .../org/apache/drill/exec/server/Drillbit.java     |   5 +-
 .../java/org/apache/drill/BaseTestInheritance.java |  54 +++++
 .../java/org/apache/drill/TestImplicitCasting.java |   3 +-
 .../drill/common/scanner/TestClassPathScanner.java |   3 +-
 .../org/apache/drill/exec/TestOpSerialization.java |   3 +-
 .../java/org/apache/drill/exec/TestSSLConfig.java  |   3 +-
 .../ConnectTriesPropertyTestClusterBits.java       |   3 +-
 .../exec/client/DrillSqlLineApplicationTest.java   |   3 +-
 .../drill/exec/compile/TestEvaluationVisitor.java  |   3 +-
 .../drill/exec/coord/zk/TestEphemeralStore.java    |   3 +-
 .../drill/exec/coord/zk/TestEventDispatcher.java   |   3 +-
 .../apache/drill/exec/coord/zk/TestPathUtils.java  |   3 +-
 .../org/apache/drill/exec/coord/zk/TestZKACL.java  |   3 +-
 .../drill/exec/coord/zk/TestZookeeperClient.java   |   3 +-
 .../drill/exec/dotdrill/TestDotDrillUtil.java      |   3 +-
 .../exec/expr/fn/FunctionInitializerTest.java      |   3 +-
 .../drill/exec/expr/fn/impl/TestSqlPatterns.java   |   3 +-
 .../fn/registry/FunctionRegistryHolderTest.java    |   3 +-
 .../physical/impl/common/HashPartitionTest.java    |   3 +-
 .../common/HashTableAllocationTrackerTest.java     |   3 +-
 .../impl/join/TestBatchSizePredictorImpl.java      |   3 +-
 .../impl/join/TestBuildSidePartitioningImpl.java   |   3 +-
 .../join/TestHashJoinHelperSizeCalculatorImpl.java |   3 +-
 .../impl/join/TestHashJoinMemoryCalculator.java    |   3 +-
 ...estHashTableSizeCalculatorConservativeImpl.java |   3 +-
 .../join/TestHashTableSizeCalculatorLeanImpl.java  |   3 +-
 .../exec/physical/impl/join/TestPartitionStat.java |   5 +-
 .../impl/join/TestPostBuildCalculationsImpl.java   |   3 +-
 .../scan/project/projSet/TestProjectionSet.java    |   3 +-
 .../impl/svremover/AbstractGenericCopierTest.java  |   3 +-
 .../resultSet/project/TestProjectedTuple.java      |   3 +-
 .../resultSet/project/TestProjectionType.java      |   3 +-
 .../common/TestNumericEquiDepthHistogram.java      |   3 +-
 .../TestHardAffinityFragmentParallelizer.java      |   3 +-
 .../drill/exec/planner/logical/DrillOptiqTest.java |   3 +-
 .../exec/planner/logical/FilterSplitTest.java      |   3 +-
 .../drill/exec/record/TestMaterializedField.java   |   3 +-
 .../record/metadata/schema/TestSchemaProvider.java |   3 +-
 .../exec/resourcemgr/TestResourcePoolTree.java     |   3 +-
 .../TestBestFitSelectionPolicy.java                |   3 +-
 .../TestDefaultSelectionPolicy.java                |   3 +-
 .../config/selectors/TestAclSelector.java          |   3 +-
 .../config/selectors/TestComplexSelectors.java     |   3 +-
 .../config/selectors/TestNotEqualSelector.java     |   3 +-
 .../selectors/TestResourcePoolSelectors.java       |   3 +-
 .../config/selectors/TestTagSelector.java          |   3 +-
 .../rpc/control/ConnectionManagerRegistryTest.java |   3 +-
 .../control/TestLocalControlConnectionManager.java |   3 +-
 .../apache/drill/exec/server/TestFailureUtils.java |   3 +-
 .../drill/exec/server/options/OptionValueTest.java |   3 +-
 .../server/options/PersistedOptionValueTest.java   |   3 +-
 .../exec/server/options/TestConfigLinkage.java     |   3 +-
 .../exec/server/rest/StatusResourcesTest.java      |   3 +-
 .../exec/server/rest/TestMainLoginPageModel.java   |   3 +-
 .../exec/server/rest/WebSessionResourcesTest.java  |   3 +-
 .../rest/spnego/TestDrillSpnegoAuthenticator.java  |   3 +-
 .../rest/spnego/TestSpnegoAuthentication.java      |   3 +-
 .../exec/server/rest/spnego/TestSpnegoConfig.java  |   3 +-
 .../drill/exec/sql/TestSqlBracketlessSyntax.java   |   3 +-
 .../drill/exec/store/StorageStrategyTest.java      |   3 +-
 .../exec/store/bson/TestBsonRecordReader.java      |   3 +-
 .../drill/exec/store/dfs/TestDrillFileSystem.java  |   3 +-
 .../store/dfs/TestFormatPluginOptionExtractor.java |   3 +-
 .../store/parquet/TestComplexColumnInSchema.java   |   3 +-
 .../store/parquet/TestParquetMetadataVersion.java  |   3 +-
 .../store/parquet/TestParquetReaderConfig.java     |   3 +-
 .../store/parquet/TestParquetReaderUtility.java    |   3 +-
 .../drill/exec/store/store/TestAssignment.java     |   3 +-
 ...Drill2130JavaExecHamcrestConfigurationTest.java |   3 +-
 .../drill/exec/util/DrillExceptionUtilTest.java    |   3 +-
 .../drill/exec/util/FileSystemUtilTestBase.java    |   3 +-
 .../exec/util/TestApproximateStringMatcher.java    |   3 +-
 .../drill/exec/util/TestArrayWrappedIntIntMap.java |   3 +-
 .../exec/util/TestValueVectorElementFormatter.java |   3 +-
 .../drill/exec/vector/TestSplitAndTransfer.java    |   3 +-
 .../exec/vector/accessor/GenericAccessorTest.java  |   3 +-
 .../exec/vector/accessor/TestTimePrintMillis.java  |   3 +-
 .../complex/writer/TestPromotableWriter.java       |   3 +-
 .../exec/vector/complex/writer/TestRepeated.java   |   3 +-
 .../drill/exec/work/filter/BloomFilterTest.java    |   3 +-
 .../work/fragment/FragmentStatusReporterTest.java  |   3 +-
 .../java/org/apache/drill/test/ExampleTest.java    |   2 +-
 .../test/rowSet/test/TestRowSetComparison.java     |   3 +-
 .../org/apache/drill/jdbc/ITTestShadedJar.java     |   3 +-
 .../jdbc/ConnectionTransactionMethodsTest.java     |   3 +-
 .../apache/drill/jdbc/DatabaseMetaDataTest.java    |   3 +-
 .../drill/jdbc/DrillColumnMetaDataListTest.java    |   3 +-
 .../jdbc/impl/TypeConvertingSqlAccessorTest.java   |   3 +-
 ...Drill2130JavaJdbcHamcrestConfigurationTest.java |   3 +-
 .../Drill2288GetColumnsMetadataWhenNoRowsTest.java |   3 +-
 .../drill/exec/memory/BoundsCheckingTest.java      |   4 +-
 .../apache/drill/exec/memory/TestAccountant.java   |   3 +-
 .../drill/exec/memory/TestBaseAllocator.java       |   3 +-
 .../apache/drill/exec/memory/TestEndianess.java    |   3 +-
 .../record/metadata/TestMetadataProperties.java    |   3 +-
 .../schema/parser/TestParserErrorHandling.java     |   3 +-
 .../metadata/schema/parser/TestSchemaParser.java   |   3 +-
 .../exec/vector/VariableLengthVectorTest.java      |   4 +-
 .../org/apache/drill/exec/vector/VectorTest.java   |   3 +-
 .../drill/common/expression/SchemaPathTest.java    |   3 +-
 .../expression/fn/JodaDateValidatorTest.java       |   3 +-
 .../drill/common/logical/data/OrderTest.java       |   3 +-
 .../drill/metastore/iceberg/IcebergBaseTest.java   |  11 +-
 .../components/tables/TestBasicTablesRequests.java |   3 +-
 .../tables/TestBasicTablesTransformer.java         |   3 +-
 .../components/tables/TestMetastoreTableInfo.java  |   3 +-
 .../tables/TestTableMetadataUnitConversion.java    |   3 +-
 .../metastore/metadata/MetadataSerDeTest.java      |   3 +-
 pom.xml                                            |  19 --
 140 files changed, 556 insertions(+), 410 deletions(-)

diff --git a/common/src/main/java/org/apache/drill/common/util/GuavaPatcher.java b/common/src/main/java/org/apache/drill/common/util/GuavaPatcher.java
index 921d56d..8eed12d 100644
--- a/common/src/main/java/org/apache/drill/common/util/GuavaPatcher.java
+++ b/common/src/main/java/org/apache/drill/common/util/GuavaPatcher.java
@@ -24,154 +24,157 @@ import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
-import javassist.CannotCompileException;
 import javassist.ClassPool;
 import javassist.CtClass;
 import javassist.CtConstructor;
 import javassist.CtMethod;
 import javassist.CtNewMethod;
-import javassist.NotFoundException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class GuavaPatcher {
   private static final Logger logger = LoggerFactory.getLogger(GuavaPatcher.class);
 
-  private static boolean patched;
+  private static boolean patchingAttempted;
 
   public static synchronized void patch() {
-    if (!patched) {
-      try {
-        patchStopwatch();
-        patchCloseables();
-        patchPreconditions();
-        patched = true;
-      } catch (Throwable e) {
-        logger.warn("Unable to patch Guava classes.", e);
-      }
+    if (!patchingAttempted) {
+      patchingAttempted = true;
+      patchStopwatch();
+      patchCloseables();
+      patchPreconditions();
     }
   }
 
   /**
    * Makes Guava stopwatch look like the old version for compatibility with hbase-server (for test purposes).
    */
-  private static void patchStopwatch() throws Exception {
-
-    ClassPool cp = ClassPool.getDefault();
-    CtClass cc = cp.get("com.google.common.base.Stopwatch");
-
-    // Expose the constructor for Stopwatch for old libraries who use the pattern new Stopwatch().start().
-    for (CtConstructor c : cc.getConstructors()) {
-      if (!Modifier.isStatic(c.getModifiers())) {
-        c.setModifiers(Modifier.PUBLIC);
+  private static void patchStopwatch() {
+    try {
+      ClassPool cp = ClassPool.getDefault();
+      CtClass cc = cp.get("com.google.common.base.Stopwatch");
+
+      // Expose the constructor for Stopwatch for old libraries who use the pattern new Stopwatch().start().
+      for (CtConstructor c : cc.getConstructors()) {
+        if (!Modifier.isStatic(c.getModifiers())) {
+          c.setModifiers(Modifier.PUBLIC);
+        }
       }
-    }
 
-    // Add back the Stopwatch.elapsedMillis() method for old consumers.
-    CtMethod newMethod = CtNewMethod.make(
-        "public long elapsedMillis() { return elapsed(java.util.concurrent.TimeUnit.MILLISECONDS); }", cc);
-    cc.addMethod(newMethod);
+      // Add back the Stopwatch.elapsedMillis() method for old consumers.
+      CtMethod newMethod = CtNewMethod.make(
+          "public long elapsedMillis() { return elapsed(java.util.concurrent.TimeUnit.MILLISECONDS); }", cc);
+      cc.addMethod(newMethod);
 
-    // Load the modified class instead of the original.
-    cc.toClass();
+      // Load the modified class instead of the original.
+      cc.toClass();
 
-    logger.info("Google's Stopwatch patched for old HBase Guava version.");
+      logger.info("Google's Stopwatch patched for old HBase Guava version.");
+    } catch (Exception e) {
+      logger.warn("Unable to patch Guava classes.", e);
+    }
   }
 
-  private static void patchCloseables() throws Exception {
-
-    ClassPool cp = ClassPool.getDefault();
-    CtClass cc = cp.get("com.google.common.io.Closeables");
+  private static void patchCloseables() {
+    try {
+      ClassPool cp = ClassPool.getDefault();
+      CtClass cc = cp.get("com.google.common.io.Closeables");
 
+      // Add back the Closeables.closeQuietly() method for old consumers.
+      CtMethod newMethod = CtNewMethod.make(
+          "public static void closeQuietly(java.io.Closeable closeable) { try{closeable.close();}catch(Exception e){} }",
+          cc);
+      cc.addMethod(newMethod);
 
-    // Add back the Closeables.closeQuietly() method for old consumers.
-    CtMethod newMethod = CtNewMethod.make(
-        "public static void closeQuietly(java.io.Closeable closeable) { try{closeable.close();}catch(Exception e){} }",
-        cc);
-    cc.addMethod(newMethod);
-
-    // Load the modified class instead of the original.
-    cc.toClass();
+      // Load the modified class instead of the original.
+      cc.toClass();
 
-    logger.info("Google's Closeables patched for old HBase Guava version.");
+      logger.info("Google's Closeables patched for old HBase Guava version.");
+    } catch (Exception e) {
+      logger.warn("Unable to patch Guava classes.", e);
+    }
   }
 
   /**
    * Patches Guava Preconditions with missing methods, added for the Apache Iceberg.
    */
-  private static void patchPreconditions() throws NotFoundException, CannotCompileException {
-    ClassPool cp = ClassPool.getDefault();
-    CtClass cc = cp.get("com.google.common.base.Preconditions");
-
-    // Javassist does not support varargs, generate methods with varying number of arguments
-    int startIndex = 1;
-    int endIndex = 5;
-
-    List<String> methodsWithVarargsTemplates = Arrays.asList(
-      "public static void checkArgument(boolean expression, String errorMessageTemplate, %s) {\n"
-        + "    if (!expression) {\n"
-        + "      throw new IllegalArgumentException(format(errorMessageTemplate, new Object[] { %s }));\n"
-        + "    }\n"
-        + "  }",
-
-      "public static Object checkNotNull(Object reference, String errorMessageTemplate, %s) {\n"
-        + "    if (reference == null) {\n"
-        + "      throw new NullPointerException(format(errorMessageTemplate, new Object[] { %s }));\n"
-        + "    } else {\n"
-        + "      return reference;\n"
-        + "    }\n"
-        + "  }",
-
-      "public static void checkState(boolean expression, String errorMessageTemplate, %s) {\n"
-        + "    if (!expression) {\n"
-        + "      throw new IllegalStateException(format(errorMessageTemplate, new Object[] { %s }));\n"
-        + "    }\n"
-        + "  }"
-    );
-
-    List<String> methodsWithPrimitives = Arrays.asList(
-      "public static void checkArgument(boolean expression, String errorMessageTemplate, int arg1) {\n"
-        + "    if (!expression) {\n"
-        + "      throw new IllegalArgumentException(format(errorMessageTemplate, new Object[] { new Integer(arg1) }));\n"
-        + "    }\n"
-        + "  }",
-      "public static Object checkNotNull(Object reference, String errorMessageTemplate, int arg1) {\n"
-        + "    if (reference == null) {\n"
-        + "      throw new NullPointerException(format(errorMessageTemplate, new Object[] { new Integer(arg1) }));\n"
-        + "    } else {\n"
-        + "      return reference;\n"
-        + "    }\n"
-        + "  }"
-    );
-
-    List<String> newMethods = IntStream.rangeClosed(startIndex, endIndex)
-      .mapToObj(
-        i -> {
-          List<String> args = IntStream.rangeClosed(startIndex, i)
-            .mapToObj(j -> "arg" + j)
-            .collect(Collectors.toList());
-
-          String methodInput = args.stream()
-            .map(arg -> "Object " + arg)
-            .collect(Collectors.joining(", "));
-
-          String arrayInput = String.join(", ", args);
-
-          return methodsWithVarargsTemplates.stream()
-            .map(method -> String.format(method, methodInput, arrayInput))
-            .collect(Collectors.toList());
-        })
-      .flatMap(Collection::stream)
-      .collect(Collectors.toList());
-
-    newMethods.addAll(methodsWithPrimitives);
-
-    for (String method : newMethods) {
-      CtMethod newMethod = CtNewMethod.make(method, cc);
-      cc.addMethod(newMethod);
-    }
+  private static void patchPreconditions() {
+    try {
+      ClassPool cp = ClassPool.getDefault();
+      CtClass cc = cp.get("com.google.common.base.Preconditions");
+
+      // Javassist does not support varargs, generate methods with varying number of arguments
+      int startIndex = 1;
+      int endIndex = 5;
+
+      List<String> methodsWithVarargsTemplates = Arrays.asList(
+          "public static void checkArgument(boolean expression, String errorMessageTemplate, %s) {\n"
+              + "    if (!expression) {\n"
+              + "      throw new IllegalArgumentException(format(errorMessageTemplate, new Object[] { %s }));\n"
+              + "    }\n"
+              + "  }",
+
+          "public static Object checkNotNull(Object reference, String errorMessageTemplate, %s) {\n"
+              + "    if (reference == null) {\n"
+              + "      throw new NullPointerException(format(errorMessageTemplate, new Object[] { %s }));\n"
+              + "    } else {\n"
+              + "      return reference;\n"
+              + "    }\n"
+              + "  }",
+
+          "public static void checkState(boolean expression, String errorMessageTemplate, %s) {\n"
+              + "    if (!expression) {\n"
+              + "      throw new IllegalStateException(format(errorMessageTemplate, new Object[] { %s }));\n"
+              + "    }\n"
+              + "  }"
+      );
+
+      List<String> methodsWithPrimitives = Arrays.asList(
+          "public static void checkArgument(boolean expression, String errorMessageTemplate, int arg1) {\n"
+              + "    if (!expression) {\n"
+              + "      throw new IllegalArgumentException(format(errorMessageTemplate, new Object[] { new Integer(arg1) }));\n"
+              + "    }\n"
+              + "  }",
+          "public static Object checkNotNull(Object reference, String errorMessageTemplate, int arg1) {\n"
+              + "    if (reference == null) {\n"
+              + "      throw new NullPointerException(format(errorMessageTemplate, new Object[] { new Integer(arg1) }));\n"
+              + "    } else {\n"
+              + "      return reference;\n"
+              + "    }\n"
+              + "  }"
+      );
+
+      List<String> newMethods = IntStream.rangeClosed(startIndex, endIndex)
+          .mapToObj(
+              i -> {
+                List<String> args = IntStream.rangeClosed(startIndex, i)
+                    .mapToObj(j -> "arg" + j)
+                    .collect(Collectors.toList());
+
+                String methodInput = args.stream()
+                    .map(arg -> "Object " + arg)
+                    .collect(Collectors.joining(", "));
+
+                String arrayInput = String.join(", ", args);
+
+                return methodsWithVarargsTemplates.stream()
+                    .map(method -> String.format(method, methodInput, arrayInput))
+                    .collect(Collectors.toList());
+              })
+          .flatMap(Collection::stream)
+          .collect(Collectors.toList());
+
+      newMethods.addAll(methodsWithPrimitives);
+
+      for (String method : newMethods) {
+        CtMethod newMethod = CtNewMethod.make(method, cc);
+        cc.addMethod(newMethod);
+      }
 
-    cc.toClass();
-    logger.info("Google's Preconditions were patched to hold new methods.");
+      cc.toClass();
+      logger.info("Google's Preconditions were patched to hold new methods.");
+    } catch (Exception e) {
+      logger.warn("Unable to patch Guava classes.", e);
+    }
   }
 }
diff --git a/common/src/main/java/org/apache/drill/common/util/ProtobufPatcher.java b/common/src/main/java/org/apache/drill/common/util/ProtobufPatcher.java
index b0c11a5..3556eec 100644
--- a/common/src/main/java/org/apache/drill/common/util/ProtobufPatcher.java
+++ b/common/src/main/java/org/apache/drill/common/util/ProtobufPatcher.java
@@ -25,7 +25,6 @@ import javassist.CtMethod;
 import javassist.CtNewConstructor;
 import javassist.CtNewMethod;
 import javassist.Modifier;
-import javassist.NotFoundException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,14 +39,10 @@ public class ProtobufPatcher {
    */
   public static synchronized void patch() {
     if (!patchingAttempted) {
-      try {
-        patchingAttempted = true;
-        patchByteString();
-        patchGeneratedMessageLite();
-        patchGeneratedMessageLiteBuilder();
-      } catch (Exception e) {
-        logger.warn("Unable to patch Protobuf.", e);
-      }
+      patchingAttempted = true;
+      patchByteString();
+      patchGeneratedMessageLite();
+      patchGeneratedMessageLiteBuilder();
     }
   }
 
@@ -56,73 +51,75 @@ public class ProtobufPatcher {
    * that were made final in version 3.6+ of protobuf.
    * This method removes the final modifiers. It also creates and loads classes
    * that were made private nested in protobuf 3.6+ to be accessible by the old fully qualified name.
-   *
-   * @throws NotFoundException if unable to find a method or class to patch.
-   * @throws CannotCompileException if unable to compile the patched class.
    */
-  private static void patchByteString() throws NotFoundException, CannotCompileException {
-    ClassPool classPool = ClassPool.getDefault();
-    CtClass byteString = classPool.get("com.google.protobuf.ByteString");
-    removeFinal(byteString.getDeclaredMethod("toString"));
-    removeFinal(byteString.getDeclaredMethod("hashCode"));
-    removeFinal(byteString.getDeclaredMethod("iterator"));
-
-    // Need to inherit from these classes to make them accessible by the old path.
-    CtClass googleLiteralByteString = classPool.get("com.google.protobuf.ByteString$LiteralByteString");
-    removePrivate(googleLiteralByteString);
-    CtClass googleBoundedByteString = classPool.get("com.google.protobuf.ByteString$BoundedByteString");
-    removePrivate(googleBoundedByteString);
-    removeFinal(googleBoundedByteString);
-    for (CtMethod ctMethod : googleLiteralByteString.getDeclaredMethods()) {
-      removeFinal(ctMethod);
+  private static void patchByteString() {
+    try {
+      ClassPool classPool = ClassPool.getDefault();
+      CtClass byteString = classPool.get("com.google.protobuf.ByteString");
+      removeFinal(byteString.getDeclaredMethod("toString"));
+      removeFinal(byteString.getDeclaredMethod("hashCode"));
+      removeFinal(byteString.getDeclaredMethod("iterator"));
+
+      // Need to inherit from these classes to make them accessible by the old path.
+      CtClass googleLiteralByteString = classPool.get("com.google.protobuf.ByteString$LiteralByteString");
+      removePrivate(googleLiteralByteString);
+      CtClass googleBoundedByteString = classPool.get("com.google.protobuf.ByteString$BoundedByteString");
+      removePrivate(googleBoundedByteString);
+      removeFinal(googleBoundedByteString);
+      for (CtMethod ctMethod : googleLiteralByteString.getDeclaredMethods()) {
+        removeFinal(ctMethod);
+      }
+      byteString.toClass();
+      googleLiteralByteString.toClass();
+      googleBoundedByteString.toClass();
+
+      // Adding the classes back to the old path.
+      CtClass literalByteString = classPool.makeClass("com.google.protobuf.LiteralByteString");
+      literalByteString.setSuperclass(googleLiteralByteString);
+      literalByteString.toClass();
+      CtClass boundedByteString = classPool.makeClass("com.google.protobuf.BoundedByteString");
+      boundedByteString.setSuperclass(googleBoundedByteString);
+      boundedByteString.toClass();
+    } catch (Exception e) {
+      logger.warn("Unable to patch Protobuf.", e);
     }
-    byteString.toClass();
-    googleLiteralByteString.toClass();
-    googleBoundedByteString.toClass();
-
-    // Adding the classes back to the old path.
-    CtClass literalByteString = classPool.makeClass("com.google.protobuf.LiteralByteString");
-    literalByteString.setSuperclass(googleLiteralByteString);
-    literalByteString.toClass();
-    CtClass boundedByteString = classPool.makeClass("com.google.protobuf.BoundedByteString");
-    boundedByteString.setSuperclass(googleBoundedByteString);
-    boundedByteString.toClass();
   }
 
   /**
    * MapR-DB client extends {@link com.google.protobuf.GeneratedMessageLite} and overrides some methods,
    * that were made final in version 3.6+ of protobuf.
    * This method removes the final modifiers.
-   *
-   * @throws NotFoundException if unable to find a method or class to patch.
-   * @throws CannotCompileException if unable to compile the patched method body.
    */
-  private static void patchGeneratedMessageLite() throws NotFoundException, CannotCompileException {
-    ClassPool classPool = ClassPool.getDefault();
-    CtClass generatedMessageLite = classPool.get("com.google.protobuf.GeneratedMessageLite");
-    removeFinal(generatedMessageLite.getDeclaredMethod("getParserForType"));
-    removeFinal(generatedMessageLite.getDeclaredMethod("isInitialized"));
-
-    // The method was removed, but it is used in com.mapr.fs.proto.Dbserver.
-    // Adding it back.
-    generatedMessageLite.addMethod(CtNewMethod.make("protected void makeExtensionsImmutable() { }", generatedMessageLite));
-
-    // A constructor with this signature was removed. Adding it back.
-    generatedMessageLite.addConstructor(CtNewConstructor.make("protected GeneratedMessageLite(com.google.protobuf.GeneratedMessageLite.Builder builder) { }", generatedMessageLite));
-
-    // This single method was added instead of several abstract methods.
-    // MapR-DB client doesn't use it, but it was added in overridden equals() method.
-    // Adding default implementation.
-    CtMethod dynamicMethod = generatedMessageLite.getDeclaredMethod("dynamicMethod", new CtClass[] {
-        classPool.get("com.google.protobuf.GeneratedMessageLite$MethodToInvoke"),
-        classPool.get("java.lang.Object"),
-        classPool.get("java.lang.Object")});
-    addImplementation(dynamicMethod, "if ($1.equals(com.google.protobuf.GeneratedMessageLite.MethodToInvoke.GET_DEFAULT_INSTANCE)) {" +
-                                  "  return this;" +
-                                  "} else {" +
-                                  "  return null;" +
-                                  "}");
-    generatedMessageLite.toClass();
+  private static void patchGeneratedMessageLite() {
+    try {
+      ClassPool classPool = ClassPool.getDefault();
+      CtClass generatedMessageLite = classPool.get("com.google.protobuf.GeneratedMessageLite");
+      removeFinal(generatedMessageLite.getDeclaredMethod("getParserForType"));
+      removeFinal(generatedMessageLite.getDeclaredMethod("isInitialized"));
+
+      // The method was removed, but it is used in com.mapr.fs.proto.Dbserver.
+      // Adding it back.
+      generatedMessageLite.addMethod(CtNewMethod.make("protected void makeExtensionsImmutable() { }", generatedMessageLite));
+
+      // A constructor with this signature was removed. Adding it back.
+      generatedMessageLite.addConstructor(CtNewConstructor.make("protected GeneratedMessageLite(com.google.protobuf.GeneratedMessageLite.Builder builder) { }", generatedMessageLite));
+
+      // This single method was added instead of several abstract methods.
+      // MapR-DB client doesn't use it, but it was added in overridden equals() method.
+      // Adding default implementation.
+      CtMethod dynamicMethod = generatedMessageLite.getDeclaredMethod("dynamicMethod", new CtClass[]{
+          classPool.get("com.google.protobuf.GeneratedMessageLite$MethodToInvoke"),
+          classPool.get("java.lang.Object"),
+          classPool.get("java.lang.Object")});
+      addImplementation(dynamicMethod, "if ($1.equals(com.google.protobuf.GeneratedMessageLite.MethodToInvoke.GET_DEFAULT_INSTANCE)) {" +
+          "  return this;" +
+          "} else {" +
+          "  return null;" +
+          "}");
+      generatedMessageLite.toClass();
+    } catch (Exception e) {
+      logger.warn("Unable to patch Protobuf.", e);
+    }
   }
 
   /**
@@ -130,17 +127,18 @@ public class ProtobufPatcher {
    * that were made final in version 3.6+ of protobuf.
    * This method removes the final modifiers.
    * Also, adding back a default constructor that was removed.
-   *
-   * @throws NotFoundException if unable to find a method or class to patch.
-   * @throws CannotCompileException if unable to add a default constructor.
    */
-  private static void patchGeneratedMessageLiteBuilder() throws NotFoundException, CannotCompileException {
-    ClassPool classPool = ClassPool.getDefault();
-    CtClass builder = classPool.get("com.google.protobuf.GeneratedMessageLite$Builder");
-    removeFinal(builder.getDeclaredMethod("isInitialized"));
-    removeFinal(builder.getDeclaredMethod("clear"));
-    builder.addConstructor(CtNewConstructor.defaultConstructor(builder));
-    builder.toClass();
+  private static void patchGeneratedMessageLiteBuilder() {
+    try {
+      ClassPool classPool = ClassPool.getDefault();
+      CtClass builder = classPool.get("com.google.protobuf.GeneratedMessageLite$Builder");
+      removeFinal(builder.getDeclaredMethod("isInitialized"));
+      removeFinal(builder.getDeclaredMethod("clear"));
+      builder.addConstructor(CtNewConstructor.defaultConstructor(builder));
+      builder.toClass();
+    } catch (Exception e) {
+      logger.warn("Unable to patch Protobuf.", e);
+    }
   }
 
   /**
@@ -176,7 +174,7 @@ public class ProtobufPatcher {
   /**
    * Removes abstract modifier and adds implementation to a given method.
    *
-   * @param ctMethod method to process.
+   * @param ctMethod   method to process.
    * @param methodBody method implementation.
    * @throws CannotCompileException if unable to compile given method body.
    */
diff --git a/common/src/test/java/org/apache/drill/common/TestVersion.java b/common/src/test/java/org/apache/drill/common/TestVersion.java
index cabacb3..c11dbaa 100644
--- a/common/src/test/java/org/apache/drill/common/TestVersion.java
+++ b/common/src/test/java/org/apache/drill/common/TestVersion.java
@@ -21,13 +21,14 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 /**
  * Test class for {@code Version}
  *
  */
-public class TestVersion {
+public class TestVersion extends BaseTest {
 
   @Test
   public void testSnapshotVersion() {
diff --git a/common/src/test/java/org/apache/drill/common/exceptions/TestUserException.java b/common/src/test/java/org/apache/drill/common/exceptions/TestUserException.java
index 42af634..5e61bbc 100644
--- a/common/src/test/java/org/apache/drill/common/exceptions/TestUserException.java
+++ b/common/src/test/java/org/apache/drill/common/exceptions/TestUserException.java
@@ -19,13 +19,14 @@ package org.apache.drill.common.exceptions;
 
 import org.apache.drill.exec.proto.UserBitShared.DrillPBError;
 import org.apache.drill.exec.proto.UserBitShared.DrillPBError.ErrorType;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
 /**
  * Test various use cases when creating user exceptions
  */
-public class TestUserException {
+public class TestUserException extends BaseTest {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory
       .getLogger("--ignore.as.this.is.for.testing.exceptions--");
 
diff --git a/common/src/test/java/org/apache/drill/common/map/TestCaseInsensitiveMap.java b/common/src/test/java/org/apache/drill/common/map/TestCaseInsensitiveMap.java
index 19b2b93..2d9e04b 100644
--- a/common/src/test/java/org/apache/drill/common/map/TestCaseInsensitiveMap.java
+++ b/common/src/test/java/org/apache/drill/common/map/TestCaseInsensitiveMap.java
@@ -17,6 +17,7 @@
  */
 package org.apache.drill.common.map;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import java.util.HashMap;
@@ -28,7 +29,7 @@ import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-public class TestCaseInsensitiveMap {
+public class TestCaseInsensitiveMap extends BaseTest {
 
   @Test
   public void putAndGet() {
diff --git a/common/src/test/java/org/apache/drill/common/util/function/TestCheckedFunction.java b/common/src/test/java/org/apache/drill/common/util/function/TestCheckedFunction.java
index a1ab389..0ded4ce 100644
--- a/common/src/test/java/org/apache/drill/common/util/function/TestCheckedFunction.java
+++ b/common/src/test/java/org/apache/drill/common/util/function/TestCheckedFunction.java
@@ -17,6 +17,7 @@
  */
 package org.apache.drill.common.util.function;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -24,7 +25,7 @@ import org.junit.rules.ExpectedException;
 import java.util.HashMap;
 import java.util.Map;
 
-public class TestCheckedFunction {
+public class TestCheckedFunction extends BaseTest {
 
   @Rule
   public ExpectedException thrown = ExpectedException.none();
diff --git a/common/src/test/java/org/apache/drill/test/BaseTest.java b/common/src/test/java/org/apache/drill/test/BaseTest.java
new file mode 100644
index 0000000..adf0d5e
--- /dev/null
+++ b/common/src/test/java/org/apache/drill/test/BaseTest.java
@@ -0,0 +1,42 @@
+/*
+ * 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.drill.test;
+
+import org.apache.drill.common.util.GuavaPatcher;
+import org.apache.drill.common.util.ProtobufPatcher;
+
+/**
+ * Contains patchers that must be executed at the very beginning of test runs.
+ * All Drill test classes should be inherited from it to avoid exceptions (e.g. NoSuchMethodError etc.).
+ */
+public class BaseTest {
+
+  static {
+    /*
+     * HBase and MapR-DB clients use older version of protobuf,
+     * and override some methods that became final in recent versions.
+     * This code removes these final modifiers.
+     */
+    ProtobufPatcher.patch();
+    /*
+     * Some libraries, such as Hadoop or HBase, depend on incompatible versions of Guava.
+     * This code adds back some methods to so that the libraries can work with single Guava version.
+     */
+    GuavaPatcher.patch();
+  }
+}
diff --git a/common/src/test/java/org/apache/drill/test/Drill2130CommonHamcrestConfigurationTest.java b/common/src/test/java/org/apache/drill/test/Drill2130CommonHamcrestConfigurationTest.java
index a747966..ba5f567 100644
--- a/common/src/test/java/org/apache/drill/test/Drill2130CommonHamcrestConfigurationTest.java
+++ b/common/src/test/java/org/apache/drill/test/Drill2130CommonHamcrestConfigurationTest.java
@@ -23,7 +23,7 @@ import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 import static org.hamcrest.CoreMatchers.equalTo;
 
-public class Drill2130CommonHamcrestConfigurationTest {
+public class Drill2130CommonHamcrestConfigurationTest extends BaseTest {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Drill2130CommonHamcrestConfigurationTest.class);
 
   @SuppressWarnings("unused")
diff --git a/common/src/test/java/org/apache/drill/test/DrillTest.java b/common/src/test/java/org/apache/drill/test/DrillTest.java
index 54506e3..43015a2 100644
--- a/common/src/test/java/org/apache/drill/test/DrillTest.java
+++ b/common/src/test/java/org/apache/drill/test/DrillTest.java
@@ -23,7 +23,6 @@ import java.lang.management.MemoryMXBean;
 import java.util.List;
 
 import org.apache.drill.common.util.DrillStringUtils;
-import org.apache.drill.common.util.GuavaPatcher;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Rule;
@@ -37,12 +36,11 @@ import org.slf4j.Logger;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-public class DrillTest {
+public class DrillTest extends BaseTest {
 
   protected static final ObjectMapper objectMapper;
 
   static {
-    GuavaPatcher.patch();
     System.setProperty("line.separator", "\n");
     objectMapper = new ObjectMapper();
   }
diff --git a/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/MaprDBTestsSuite.java b/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/MaprDBTestsSuite.java
index edd5ab4..642a989 100644
--- a/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/MaprDBTestsSuite.java
+++ b/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/MaprDBTestsSuite.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.server.DrillbitContext;
 import org.apache.drill.exec.store.StoragePluginRegistry;
 import org.apache.drill.exec.store.dfs.FileSystemConfig;
 import org.apache.drill.hbase.HBaseTestsSuite;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -46,7 +47,7 @@ import com.mapr.drill.maprdb.tests.json.TestSimpleJson;
   TestSimpleJson.class,
   TestScanRanges.class
 })
-public class MaprDBTestsSuite {
+public class MaprDBTestsSuite extends BaseTest {
   public static final int INDEX_FLUSH_TIMEOUT = 60000;
 
   private static final boolean IS_DEBUG = ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
diff --git a/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestFieldPathHelper.java b/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestFieldPathHelper.java
index 914ad96..1287297 100644
--- a/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestFieldPathHelper.java
+++ b/contrib/format-maprdb/src/test/java/com/mapr/drill/maprdb/tests/json/TestFieldPathHelper.java
@@ -21,10 +21,11 @@ import static org.junit.Assert.assertEquals;
 
 import org.apache.drill.common.expression.SchemaPath;
 import org.apache.drill.exec.store.mapr.db.json.FieldPathHelper;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.ojai.FieldPath;
 
-public class TestFieldPathHelper {
+public class TestFieldPathHelper extends BaseTest {
 
   @Test
   public void simeTests() {
diff --git a/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/HBaseTestsSuite.java b/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/HBaseTestsSuite.java
index 8460647..39c1e3b 100644
--- a/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/HBaseTestsSuite.java
+++ b/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/HBaseTestsSuite.java
@@ -22,9 +22,8 @@ import java.lang.management.ManagementFactory;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.drill.exec.ZookeeperTestUtil;
-import org.apache.drill.common.util.GuavaPatcher;
-import org.apache.drill.common.util.ProtobufPatcher;
 import org.apache.drill.hbase.test.Drill2130StorageHBaseHamcrestConfigurationTest;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
@@ -53,14 +52,9 @@ import org.junit.runners.Suite.SuiteClasses;
   TestHBaseTableProvider.class,
   TestOrderedBytesConvertFunctions.class
 })
-public class HBaseTestsSuite {
+public class HBaseTestsSuite extends BaseTest {
   static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HBaseTestsSuite.class);
 
-  static {
-    ProtobufPatcher.patch();
-    GuavaPatcher.patch();
-  }
-
   private static final boolean IS_DEBUG = ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
 
   protected static final TableName TEST_TABLE_1 = TableName.valueOf("TestTable1");
diff --git a/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/test/Drill2130StorageHBaseHamcrestConfigurationTest.java b/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/test/Drill2130StorageHBaseHamcrestConfigurationTest.java
index 1936285..f74f399 100644
--- a/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/test/Drill2130StorageHBaseHamcrestConfigurationTest.java
+++ b/contrib/storage-hbase/src/test/java/org/apache/drill/hbase/test/Drill2130StorageHBaseHamcrestConfigurationTest.java
@@ -21,9 +21,10 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
-public class Drill2130StorageHBaseHamcrestConfigurationTest {
+public class Drill2130StorageHBaseHamcrestConfigurationTest extends BaseTest {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Drill2130StorageHBaseHamcrestConfigurationTest.class);
 
   @SuppressWarnings("unused")
diff --git a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/inspectors/SkipFooterRecordsInspectorTest.java b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/inspectors/SkipFooterRecordsInspectorTest.java
index 68a3878..31518cf 100644
--- a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/inspectors/SkipFooterRecordsInspectorTest.java
+++ b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/inspectors/SkipFooterRecordsInspectorTest.java
@@ -18,6 +18,7 @@
 package org.apache.drill.exec.store.hive.inspectors;
 
 import org.apache.drill.exec.store.hive.readers.inspectors.SkipFooterRecordsInspector;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.mapred.RecordReader;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -27,7 +28,7 @@ import static org.junit.Assert.assertNull;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-public class SkipFooterRecordsInspectorTest {
+public class SkipFooterRecordsInspectorTest extends BaseTest {
 
   private static RecordReader<Object, Object> recordReader;
 
diff --git a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestColumnListCache.java b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestColumnListCache.java
index d0bfb33..bdec132 100644
--- a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestColumnListCache.java
+++ b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestColumnListCache.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.store.hive.schema;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 import org.apache.drill.exec.store.hive.ColumnListsCache;
 import org.apache.drill.categories.SlowTest;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -30,7 +31,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
 @Category({SlowTest.class})
-public class TestColumnListCache {
+public class TestColumnListCache extends BaseTest {
 
   @Test
   public void testTableColumnsIndex() {
diff --git a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestSchemaConversion.java b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestSchemaConversion.java
index 7154c1b..62f3451 100644
--- a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestSchemaConversion.java
+++ b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/schema/TestSchemaConversion.java
@@ -27,6 +27,7 @@ import org.apache.drill.exec.record.metadata.ColumnMetadata;
 import org.apache.drill.exec.record.metadata.PrimitiveColumnMetadata;
 import org.apache.drill.exec.record.metadata.SchemaBuilder;
 import org.apache.drill.exec.store.hive.HiveUtilities;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.junit.Rule;
 import org.junit.Test;
@@ -36,7 +37,7 @@ import org.junit.rules.ExpectedException;
 import static org.junit.Assert.assertEquals;
 
 @Category({SlowTest.class})
-public class TestSchemaConversion {
+public class TestSchemaConversion extends BaseTest {
   private static final HiveToRelDataTypeConverter dataTypeConverter
       = new HiveToRelDataTypeConverter(new SqlTypeFactoryImpl(new DrillRelDataTypeSystem()));
 
diff --git a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/test/Drill2130StorageHiveCoreHamcrestConfigurationTest.java b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/test/Drill2130StorageHiveCoreHamcrestConfigurationTest.java
index 12adf92..66037e0 100644
--- a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/test/Drill2130StorageHiveCoreHamcrestConfigurationTest.java
+++ b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/test/Drill2130StorageHiveCoreHamcrestConfigurationTest.java
@@ -17,13 +17,14 @@
  */
 package org.apache.drill.exec.test;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 import static org.hamcrest.CoreMatchers.equalTo;
 
-public class Drill2130StorageHiveCoreHamcrestConfigurationTest {
+public class Drill2130StorageHiveCoreHamcrestConfigurationTest extends BaseTest {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Drill2130StorageHiveCoreHamcrestConfigurationTest.class);
 
   @SuppressWarnings("unused")
diff --git a/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/TestKafkaSuit.java b/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/TestKafkaSuit.java
index b586d7d..c996c38 100644
--- a/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/TestKafkaSuit.java
+++ b/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/TestKafkaSuit.java
@@ -24,6 +24,7 @@ import org.apache.drill.categories.SlowTest;
 import org.apache.drill.exec.ZookeeperTestUtil;
 import org.apache.drill.exec.store.kafka.cluster.EmbeddedKafkaCluster;
 import org.apache.drill.exec.store.kafka.decoders.MessageReaderFactoryTest;
+import org.apache.drill.test.BaseTest;
 import org.apache.kafka.clients.admin.AdminClient;
 import org.apache.kafka.clients.admin.CreateTopicsResult;
 import org.apache.kafka.clients.admin.NewTopic;
@@ -50,7 +51,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 @Category({KafkaStorageTest.class, SlowTest.class})
 @RunWith(Suite.class)
 @SuiteClasses({KafkaQueriesTest.class, MessageIteratorTest.class, MessageReaderFactoryTest.class, KafkaFilterPushdownTest.class})
-public class TestKafkaSuit {
+public class TestKafkaSuit extends BaseTest {
   private static final Logger logger = LoggerFactory.getLogger(LoggerFactory.class);
 
   private static final String LOGIN_CONF_RESOURCE_PATHNAME = "login.conf";
diff --git a/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/decoders/MessageReaderFactoryTest.java b/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/decoders/MessageReaderFactoryTest.java
index 1b8aa11..3c4779d 100644
--- a/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/decoders/MessageReaderFactoryTest.java
+++ b/contrib/storage-kafka/src/test/java/org/apache/drill/exec/store/kafka/decoders/MessageReaderFactoryTest.java
@@ -20,12 +20,13 @@ package org.apache.drill.exec.store.kafka.decoders;
 import org.apache.drill.categories.KafkaStorageTest;
 import org.apache.drill.common.exceptions.UserException;
 import org.apache.drill.exec.proto.UserBitShared.DrillPBError.ErrorType;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category({KafkaStorageTest.class})
-public class MessageReaderFactoryTest {
+public class MessageReaderFactoryTest extends BaseTest {
 
   @Test
   public void testShouldThrowExceptionAsMessageReaderIsNull() {
diff --git a/contrib/storage-kudu/src/test/java/org/apache/drill/store/kudu/TestKuduConnect.java b/contrib/storage-kudu/src/test/java/org/apache/drill/store/kudu/TestKuduConnect.java
index ad1e795..f75e983 100644
--- a/contrib/storage-kudu/src/test/java/org/apache/drill/store/kudu/TestKuduConnect.java
+++ b/contrib/storage-kudu/src/test/java/org/apache/drill/store/kudu/TestKuduConnect.java
@@ -22,6 +22,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.drill.categories.KuduStorageTest;
+import org.apache.drill.test.BaseTest;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.apache.kudu.ColumnSchema;
@@ -41,7 +42,7 @@ import org.junit.experimental.categories.Category;
 
 @Ignore("requires remote kudu server")
 @Category(KuduStorageTest.class)
-public class TestKuduConnect {
+public class TestKuduConnect extends BaseTest {
   static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestKuduConnect.class);
 
   public static final String KUDU_MASTER = "172.31.1.99";
diff --git a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestSuit.java b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestSuit.java
index 7910a57..9dce09d 100644
--- a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestSuit.java
+++ b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/MongoTestSuit.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.drill.categories.MongoStorageTest;
 import org.apache.drill.categories.SlowTest;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
+import org.apache.drill.test.BaseTest;
 import org.bson.Document;
 import org.bson.conversions.Bson;
 import org.junit.AfterClass;
@@ -67,7 +68,7 @@ import de.flapdoodle.embed.process.runtime.Network;
 @SuiteClasses({ TestMongoFilterPushDown.class, TestMongoProjectPushDown.class,
     TestMongoQueries.class, TestMongoChunkAssignment.class })
 @Category({SlowTest.class, MongoStorageTest.class})
-public class MongoTestSuit implements MongoTestConstants {
+public class MongoTestSuit extends BaseTest implements MongoTestConstants {
 
   private static final Logger logger = LoggerFactory.getLogger(MongoTestSuit.class);
   protected static MongoClient mongoClient;
diff --git a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoChunkAssignment.java b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoChunkAssignment.java
index 0f0b563..e4c71b1 100644
--- a/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoChunkAssignment.java
+++ b/contrib/storage-mongo/src/test/java/org/apache/drill/exec/store/mongo/TestMongoChunkAssignment.java
@@ -34,6 +34,7 @@ import org.apache.drill.exec.store.mongo.common.ChunkInfo;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 import org.apache.drill.shaded.guava.com.google.common.collect.Maps;
 import org.apache.drill.shaded.guava.com.google.common.collect.Sets;
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -41,7 +42,7 @@ import org.junit.experimental.categories.Category;
 import com.mongodb.ServerAddress;
 
 @Category({SlowTest.class, MongoStorageTest.class})
-public class TestMongoChunkAssignment {
+public class TestMongoChunkAssignment extends BaseTest {
   static final String HOST_A = "A";
   static final String HOST_B = "B";
   static final String HOST_C = "C";
diff --git a/drill-yarn/src/main/java/org/apache/drill/yarn/appMaster/DrillApplicationMaster.java b/drill-yarn/src/main/java/org/apache/drill/yarn/appMaster/DrillApplicationMaster.java
index e32a531..e144bff 100644
--- a/drill-yarn/src/main/java/org/apache/drill/yarn/appMaster/DrillApplicationMaster.java
+++ b/drill-yarn/src/main/java/org/apache/drill/yarn/appMaster/DrillApplicationMaster.java
@@ -55,9 +55,8 @@ public class DrillApplicationMaster {
      */
     ProtobufPatcher.patch();
     /*
-     * HBase client uses older version of Guava's Stopwatch API,
-     * while Drill ships with 18.x which has changes the scope of
-     * these API to 'package', this code make them accessible.
+     * Some libraries, such as Hadoop or HBase, depend on incompatible versions of Guava.
+     * This code adds back some methods to so that the libraries can work with single Guava version.
      */
     GuavaPatcher.patch();
   }
diff --git a/drill-yarn/src/main/java/org/apache/drill/yarn/client/DrillOnYarn.java b/drill-yarn/src/main/java/org/apache/drill/yarn/client/DrillOnYarn.java
index 54900d3..5f79f5d 100644
--- a/drill-yarn/src/main/java/org/apache/drill/yarn/client/DrillOnYarn.java
+++ b/drill-yarn/src/main/java/org/apache/drill/yarn/client/DrillOnYarn.java
@@ -84,9 +84,8 @@ public class DrillOnYarn {
      */
     ProtobufPatcher.patch();
     /*
-     * HBase client uses older version of Guava's Stopwatch API,
-     * while Drill ships with 18.x which has changes the scope of
-     * these API to 'package', this code make them accessible.
+     * Some libraries, such as Hadoop or HBase, depend on incompatible versions of Guava.
+     * This code adds back some methods to so that the libraries can work with single Guava version.
      */
     GuavaPatcher.patch();
   }
diff --git a/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestClient.java b/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestClient.java
index 8be3148..fb8727e 100644
--- a/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestClient.java
+++ b/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestClient.java
@@ -24,9 +24,10 @@ import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 import java.io.UnsupportedEncodingException;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
-public class TestClient {
+public class TestClient extends BaseTest {
 
   /**
    * Unchecked exception to allow capturing "exit" events without actually
diff --git a/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestCommandLineOptions.java b/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestCommandLineOptions.java
index e6c220b..7b1bbe5 100644
--- a/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestCommandLineOptions.java
+++ b/drill-yarn/src/test/java/org/apache/drill/yarn/client/TestCommandLineOptions.java
@@ -17,12 +17,13 @@
  */
 package org.apache.drill.yarn.client;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
-public class TestCommandLineOptions {
+public class TestCommandLineOptions extends BaseTest {
   @Test
   public void testOptions() {
     CommandLineOptions opts = new CommandLineOptions();
diff --git a/drill-yarn/src/test/java/org/apache/drill/yarn/core/TestConfig.java b/drill-yarn/src/test/java/org/apache/drill/yarn/core/TestConfig.java
index b2ec786..1174dc3 100644
--- a/drill-yarn/src/test/java/org/apache/drill/yarn/core/TestConfig.java
+++ b/drill-yarn/src/test/java/org/apache/drill/yarn/core/TestConfig.java
@@ -33,11 +33,12 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import com.typesafe.config.Config;
 
-public class TestConfig {
+public class TestConfig extends BaseTest {
 
   /**
    * Mock config that lets us tinker with loading and environment access for
diff --git a/drill-yarn/src/test/java/org/apache/drill/yarn/scripts/TestScripts.java b/drill-yarn/src/test/java/org/apache/drill/yarn/scripts/TestScripts.java
index 846024e..8422c62 100644
--- a/drill-yarn/src/test/java/org/apache/drill/yarn/scripts/TestScripts.java
+++ b/drill-yarn/src/test/java/org/apache/drill/yarn/scripts/TestScripts.java
@@ -30,6 +30,7 @@ import java.nio.file.Files;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.yarn.scripts.ScriptUtils.DrillbitRun;
 import org.apache.drill.yarn.scripts.ScriptUtils.RunResult;
 import org.apache.drill.yarn.scripts.ScriptUtils.ScriptRunner;
@@ -50,7 +51,7 @@ import org.junit.Test;
 
 // Turned of by default: works only in a developer setup
 @Ignore
-public class TestScripts {
+public class TestScripts extends BaseTest {
   static ScriptUtils context;
 
   @BeforeClass
diff --git a/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestAmRegistration.java b/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestAmRegistration.java
index c8d940e..d0de57d 100644
--- a/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestAmRegistration.java
+++ b/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestAmRegistration.java
@@ -21,10 +21,11 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import org.apache.curator.test.TestingServer;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.yarn.appMaster.AMRegistrar.AMRegistrationException;
 import org.junit.Test;
 
-public class TestAmRegistration {
+public class TestAmRegistration extends BaseTest {
   private static final String TEST_CLUSTER_ID = "drillbits";
   private static final String TEST_ZK_ROOT = "drill";
   private static final String TEST_AM_HOST = "localhost";
diff --git a/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestZkRegistry.java b/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestZkRegistry.java
index 4263b01..654ffad 100644
--- a/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestZkRegistry.java
+++ b/drill-yarn/src/test/java/org/apache/drill/yarn/zk/TestZkRegistry.java
@@ -34,6 +34,7 @@ import org.apache.curator.x.discovery.ServiceInstance;
 import org.apache.drill.exec.coord.DrillServiceInstanceHelper;
 import org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint;
 import org.apache.drill.exec.work.foreman.DrillbitStatusListener;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.yarn.appMaster.EventContext;
 import org.apache.drill.yarn.appMaster.RegistryHandler;
 import org.apache.drill.yarn.appMaster.Task;
@@ -47,7 +48,7 @@ import org.junit.Test;
  * test in isolation using the Curator-provided test server.
  */
 
-public class TestZkRegistry {
+public class TestZkRegistry extends BaseTest {
   private static final String BARNEY_HOST = "barney";
   private static final String WILMA_HOST = "wilma";
   private static final String TEST_HOST = "host";
diff --git a/exec/interpreter/src/test/java/org/apache/drill/exec/expr/TestPrune.java b/exec/interpreter/src/test/java/org/apache/drill/exec/expr/TestPrune.java
deleted file mode 100644
index 565ab33..0000000
--- a/exec/interpreter/src/test/java/org/apache/drill/exec/expr/TestPrune.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.drill.exec.expr;
-
-import org.apache.drill.BaseTestQuery;
-import org.apache.drill.common.util.TestTools;
-import org.junit.Test;
-
-public class TestPrune extends BaseTestQuery {
-
-  String MULTILEVEL = TestTools.getWorkingPath() + "/../java-exec/src/test/resources/multilevel";
-
-  @Test
-  public void pruneCompound() throws Exception {
-    test(String.format("select * from dfs.`%s/csv` where x is null and dir1 in ('Q1', 'Q2')", MULTILEVEL));
-  }
-
-  @Test
-  public void pruneSimple() throws Exception {
-    test(String.format("select * from dfs.`%s/csv` where dir1 in ('Q1', 'Q2')", MULTILEVEL));
-  }
-
-}
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
index 5ff9fda..fb0ff0f 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/Drillbit.java
@@ -85,9 +85,8 @@ public class Drillbit implements AutoCloseable {
      */
     ProtobufPatcher.patch();
     /*
-     * HBase client uses older version of Guava's Stopwatch API,
-     * while Drill ships with 18.x which has changes the scope of
-     * these API to 'package', this code make them accessible.
+     * Some libraries, such as Hadoop or HBase, depend on incompatible versions of Guava.
+     * This code adds back some methods to so that the libraries can work with single Guava version.
      */
     GuavaPatcher.patch();
     Environment.logEnv("Drillbit environment: ", logger);
diff --git a/exec/java-exec/src/test/java/org/apache/drill/BaseTestInheritance.java b/exec/java-exec/src/test/java/org/apache/drill/BaseTestInheritance.java
new file mode 100644
index 0000000..4ae7e88
--- /dev/null
+++ b/exec/java-exec/src/test/java/org/apache/drill/BaseTestInheritance.java
@@ -0,0 +1,54 @@
+/*
+ * 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.drill;
+
+import org.apache.drill.categories.UnlikelyTest;
+import org.apache.drill.test.BaseTest;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.reflections.Reflections;
+import org.reflections.scanners.SubTypesScanner;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class BaseTestInheritance extends BaseTest {
+
+  @Test
+  @Category(UnlikelyTest.class)
+  public void verifyInheritance() {
+    // Get all BaseTest inheritors
+    Reflections reflections = new Reflections("org.apache.drill", new SubTypesScanner(false));
+    Set<Class<? extends BaseTest>> baseTestInheritors = reflections.getSubTypesOf(BaseTest.class);
+
+    // Get all tests that are not inherited from BaseTest
+    Set<String> testClasses = reflections.getSubTypesOf(Object.class).stream()
+        .filter(c -> !c.isInterface())
+        .filter(c -> c.getSimpleName().toLowerCase().contains("test"))
+        .filter(c -> Arrays.stream(c.getDeclaredMethods())
+                .anyMatch(m -> m.getAnnotation(Test.class) != null))
+        .filter(c -> !baseTestInheritors.contains(c))
+        .map(Class::getName)
+        .collect(Collectors.toSet());
+
+    Assert.assertEquals("Found test classes that are not inherited from BaseTest:", Collections.emptySet(), testClasses);
+  }
+}
diff --git a/exec/java-exec/src/test/java/org/apache/drill/TestImplicitCasting.java b/exec/java-exec/src/test/java/org/apache/drill/TestImplicitCasting.java
index 83f0513..4994bb2 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/TestImplicitCasting.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/TestImplicitCasting.java
@@ -20,6 +20,7 @@ package org.apache.drill;
 import org.apache.drill.categories.SqlTest;
 import org.apache.drill.common.types.TypeProtos;
 import org.apache.drill.exec.resolver.TypeCastRules;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
@@ -30,7 +31,7 @@ import java.util.List;
 import static org.junit.Assert.assertEquals;
 
 @Category(SqlTest.class)
-public class TestImplicitCasting {
+public class TestImplicitCasting extends BaseTest {
   @Test
   public void testTimeStampAndTime() {
     final List<TypeProtos.MinorType> inputTypes = Lists.newArrayList();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/common/scanner/TestClassPathScanner.java b/exec/java-exec/src/test/java/org/apache/drill/common/scanner/TestClassPathScanner.java
index 01b1b3b..288f14c 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/common/scanner/TestClassPathScanner.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/common/scanner/TestClassPathScanner.java
@@ -44,13 +44,14 @@ import org.apache.drill.exec.physical.base.PhysicalOperator;
 import org.apache.drill.exec.store.SystemPlugin;
 import org.apache.drill.exec.store.ischema.InfoSchemaStoragePlugin;
 import org.apache.drill.exec.store.sys.SystemTablePlugin;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category({SlowTest.class})
-public class TestClassPathScanner {
+public class TestClassPathScanner extends BaseTest {
 
   private static ScanResult result;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/TestOpSerialization.java b/exec/java-exec/src/test/java/org/apache/drill/exec/TestOpSerialization.java
index 7fb7bdb..f8d7982 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/TestOpSerialization.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/TestOpSerialization.java
@@ -44,13 +44,14 @@ import org.apache.drill.exec.store.direct.DirectSubScan;
 import org.apache.drill.exec.store.mock.MockSubScanPOP;
 import org.apache.drill.exec.store.pojo.DynamicPojoRecordReader;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.Test;
 
 import com.fasterxml.jackson.databind.ObjectWriter;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 
-public class TestOpSerialization {
+public class TestOpSerialization extends BaseTest {
   static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestOpSerialization.class);
   private DrillConfig config;
   private PhysicalPlanReader reader;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/TestSSLConfig.java b/exec/java-exec/src/test/java/org/apache/drill/exec/TestSSLConfig.java
index 8508080..20a930f 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/TestSSLConfig.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/TestSSLConfig.java
@@ -22,6 +22,7 @@ import org.apache.drill.categories.SecurityTest;
 import org.apache.drill.common.exceptions.DrillException;
 import org.apache.drill.exec.ssl.SSLConfig;
 import org.apache.drill.exec.ssl.SSLConfigBuilder;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.test.ConfigBuilder;
 import org.apache.hadoop.conf.Configuration;
 import org.junit.Test;
@@ -36,7 +37,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @Category(SecurityTest.class)
-public class TestSSLConfig {
+public class TestSSLConfig extends BaseTest {
 
   @Test
   public void testMissingKeystorePath() throws Exception {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/client/ConnectTriesPropertyTestClusterBits.java b/exec/java-exec/src/test/java/org/apache/drill/exec/client/ConnectTriesPropertyTestClusterBits.java
index 0fea090..dad73cc 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/client/ConnectTriesPropertyTestClusterBits.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/client/ConnectTriesPropertyTestClusterBits.java
@@ -33,6 +33,7 @@ import org.apache.drill.exec.server.Drillbit;
 
 import org.apache.drill.exec.server.RemoteServiceSet;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -40,7 +41,7 @@ import org.junit.Test;
 import static junit.framework.TestCase.assertTrue;
 import static junit.framework.TestCase.fail;
 
-public class ConnectTriesPropertyTestClusterBits {
+public class ConnectTriesPropertyTestClusterBits extends BaseTest {
 
   public static StringBuilder bitInfo;
   public static final String fakeBitsInfo = "127.0.0.1:5000,127.0.0.1:5001";
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/client/DrillSqlLineApplicationTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/client/DrillSqlLineApplicationTest.java
index 945df70..f75e6df 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/client/DrillSqlLineApplicationTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/client/DrillSqlLineApplicationTest.java
@@ -18,6 +18,7 @@
 package org.apache.drill.exec.client;
 
 import org.apache.drill.common.util.DrillVersionInfo;
+import org.apache.drill.test.BaseTest;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import sqlline.Application;
@@ -38,7 +39,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
-public class DrillSqlLineApplicationTest {
+public class DrillSqlLineApplicationTest extends BaseTest {
 
   private static Application application;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestEvaluationVisitor.java b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestEvaluationVisitor.java
index 68d165e..4cd5a46 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestEvaluationVisitor.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestEvaluationVisitor.java
@@ -27,9 +27,10 @@ import org.apache.drill.exec.expr.ValueVectorReadExpression;
 import org.apache.drill.exec.expr.ValueVectorWriteExpression;
 import org.apache.drill.exec.physical.impl.project.Projector;
 import org.apache.drill.exec.record.TypedFieldId;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
-public class TestEvaluationVisitor {
+public class TestEvaluationVisitor extends BaseTest {
 
   @Test
   public void testEvaluation() {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEphemeralStore.java b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEphemeralStore.java
index 2cd79ca..81a4c70 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEphemeralStore.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEphemeralStore.java
@@ -30,13 +30,14 @@ import org.apache.curator.test.TestingServer;
 import org.apache.drill.exec.ZookeeperTestUtil;
 import org.apache.drill.exec.coord.store.TransientStoreConfig;
 import org.apache.drill.exec.serialization.InstanceSerializer;
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-public class TestEphemeralStore {
+public class TestEphemeralStore extends BaseTest {
   private final static String root = "/test";
   private final static String path = "test-key";
   private final static String value = "testing";
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEventDispatcher.java b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEventDispatcher.java
index f1465a2..3f898a1 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEventDispatcher.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestEventDispatcher.java
@@ -24,12 +24,13 @@ import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent;
 import org.apache.drill.exec.coord.store.TransientStoreConfig;
 import org.apache.drill.exec.coord.store.TransientStoreEvent;
 import org.apache.drill.exec.serialization.InstanceSerializer;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-public class TestEventDispatcher {
+public class TestEventDispatcher extends BaseTest {
 
   private final static String key = "some-key";
   private final static String value = "some-data";
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestPathUtils.java b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestPathUtils.java
index f086e5f..203f1b8 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestPathUtils.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestPathUtils.java
@@ -17,10 +17,11 @@
  */
 package org.apache.drill.exec.coord.zk;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class TestPathUtils {
+public class TestPathUtils extends BaseTest {
 
   @Test(expected = NullPointerException.class)
   public void testNullSegmentThrowsNPE() {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZKACL.java b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZKACL.java
index 07e0465..53da4f5 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZKACL.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZKACL.java
@@ -31,6 +31,7 @@ import org.apache.drill.common.scanner.persistence.ScanResult;
 import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.server.BootStrapContext;
 import org.apache.drill.exec.server.options.SystemOptionManager;
+import org.apache.drill.test.BaseTest;
 import org.apache.zookeeper.data.ACL;
 import org.junit.After;
 import org.junit.Assert;
@@ -43,7 +44,7 @@ import java.util.List;
 
 @Ignore("See DRILL-6823")
 @Category(SecurityTest.class)
-public class TestZKACL {
+public class TestZKACL extends BaseTest {
 
   private TestingServer server;
   private final static String cluster_config_znode = "test-cluster_config_znode";
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZookeeperClient.java b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZookeeperClient.java
index 6dfbd22..fc4bfa1 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZookeeperClient.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/coord/zk/TestZookeeperClient.java
@@ -34,6 +34,7 @@ import org.apache.drill.common.exceptions.DrillRuntimeException;
 import org.apache.drill.exec.ZookeeperTestUtil;
 import org.apache.drill.exec.exception.VersionMismatchException;
 import org.apache.drill.exec.store.sys.store.DataChangeVersion;
+import org.apache.drill.test.BaseTest;
 import org.apache.zookeeper.CreateMode;
 import org.junit.After;
 import org.junit.Assert;
@@ -46,7 +47,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-public class TestZookeeperClient {
+public class TestZookeeperClient extends BaseTest {
   private final static String root = "/test";
   private final static String path = "test-key";
   private final static String abspath = PathUtils.join(root, path);
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/dotdrill/TestDotDrillUtil.java b/exec/java-exec/src/test/java/org/apache/drill/exec/dotdrill/TestDotDrillUtil.java
index 1866c9c..ac5c0a9 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/dotdrill/TestDotDrillUtil.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/dotdrill/TestDotDrillUtil.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertTrue;
 
 import org.apache.drill.exec.store.dfs.DrillFileSystem;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -34,7 +35,7 @@ import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
-public class TestDotDrillUtil {
+public class TestDotDrillUtil extends BaseTest {
 
   private static File tempDir;
   private static Path tempPath;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
index 4185206..292fc41 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
@@ -21,6 +21,7 @@ import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 import org.apache.drill.categories.SqlFunctionTest;
 import org.apache.drill.exec.udf.dynamic.JarBuilder;
 import org.apache.drill.exec.util.JarUtil;
+import org.apache.drill.test.BaseTest;
 import org.codehaus.janino.Java.CompilationUnit;
 import org.junit.BeforeClass;
 import org.junit.ClassRule;
@@ -47,7 +48,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @Category(SqlFunctionTest.class)
-public class FunctionInitializerTest {
+public class FunctionInitializerTest extends BaseTest {
 
   @ClassRule
   public static final TemporaryFolder temporaryFolder = new TemporaryFolder();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestSqlPatterns.java b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestSqlPatterns.java
index 31da5c9..9e5aae6 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestSqlPatterns.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestSqlPatterns.java
@@ -30,13 +30,14 @@ import java.util.List;
 import org.apache.drill.common.exceptions.DrillRuntimeException;
 import org.apache.drill.exec.memory.BufferAllocator;
 import org.apache.drill.exec.memory.RootAllocatorFactory;
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 import io.netty.buffer.DrillBuf;
 
-public class TestSqlPatterns {
+public class TestSqlPatterns extends BaseTest {
   BufferAllocator allocator;
   DrillBuf drillBuf;
   CharsetEncoder charsetEncoder;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/registry/FunctionRegistryHolderTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/registry/FunctionRegistryHolderTest.java
index 3e8e6b8..6004b96 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/registry/FunctionRegistryHolderTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/registry/FunctionRegistryHolderTest.java
@@ -21,6 +21,7 @@ import org.apache.drill.shaded.guava.com.google.common.collect.ArrayListMultimap
 import org.apache.drill.shaded.guava.com.google.common.collect.ListMultimap;
 import org.apache.drill.categories.SqlFunctionTest;
 import org.apache.drill.exec.expr.fn.DrillFuncHolder;
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -45,7 +46,7 @@ import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
 @Category(SqlFunctionTest.class)
-public class FunctionRegistryHolderTest {
+public class FunctionRegistryHolderTest extends BaseTest {
 
   private static final String built_in = "built-in";
   private static final String udf_jar = "DrillUDF-1.0.jar";
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashPartitionTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashPartitionTest.java
index 1189b9e..ce79467 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashPartitionTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashPartitionTest.java
@@ -46,6 +46,7 @@ import org.apache.drill.exec.record.CloseableRecordBatch;
 import org.apache.drill.exec.record.MaterializedField;
 import org.apache.drill.exec.record.RecordBatch;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.test.OperatorFixture;
 import org.apache.drill.exec.physical.rowSet.DirectRowSet;
 import org.apache.drill.exec.physical.rowSet.RowSet;
@@ -57,7 +58,7 @@ import org.junit.Test;
 
 import java.util.List;
 
-public class HashPartitionTest {
+public class HashPartitionTest extends BaseTest {
   @Rule
   public final BaseDirTestWatcher dirTestWatcher = new BaseDirTestWatcher();
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashTableAllocationTrackerTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashTableAllocationTrackerTest.java
index 2445500..246084d 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashTableAllocationTrackerTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/HashTableAllocationTrackerTest.java
@@ -18,12 +18,13 @@
 package org.apache.drill.exec.physical.impl.common;
 
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
 import static org.apache.drill.exec.physical.impl.common.HashTable.BATCH_SIZE;
 
-public class HashTableAllocationTrackerTest {
+public class HashTableAllocationTrackerTest extends BaseTest {
   @Test
   public void testDoubleGetNextCall() {
     final HashTableConfig config = new HashTableConfig(100, true, .5f, Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList());
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBatchSizePredictorImpl.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBatchSizePredictorImpl.java
index e16cdf6..b436677 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBatchSizePredictorImpl.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBatchSizePredictorImpl.java
@@ -18,10 +18,11 @@
 package org.apache.drill.exec.physical.impl.join;
 
 import org.apache.drill.exec.vector.IntVector;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class TestBatchSizePredictorImpl {
+public class TestBatchSizePredictorImpl extends BaseTest {
   @Test
   public void testComputeMaxBatchSizeHash()
   {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBuildSidePartitioningImpl.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBuildSidePartitioningImpl.java
index bff28a8..1ccc2cd 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBuildSidePartitioningImpl.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestBuildSidePartitioningImpl.java
@@ -20,10 +20,11 @@ package org.apache.drill.exec.physical.impl.join;
 import org.apache.drill.shaded.guava.com.google.common.base.Preconditions;
 import org.apache.drill.common.map.CaseInsensitiveMap;
 import org.apache.drill.exec.record.RecordBatch;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class TestBuildSidePartitioningImpl {
+public class TestBuildSidePartitioningImpl extends BaseTest {
   @Test
   public void testSimpleReserveMemoryCalculationNoHashFirstCycle() {
     testSimpleReserveMemoryCalculationNoHashHelper(true);
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinHelperSizeCalculatorImpl.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinHelperSizeCalculatorImpl.java
index 5f7a36a..ac87193 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinHelperSizeCalculatorImpl.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinHelperSizeCalculatorImpl.java
@@ -20,10 +20,11 @@ package org.apache.drill.exec.physical.impl.join;
 import org.apache.drill.common.types.TypeProtos;
 import org.apache.drill.exec.expr.TypeHelper;
 import org.apache.drill.exec.record.RecordBatch;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class TestHashJoinHelperSizeCalculatorImpl {
+public class TestHashJoinHelperSizeCalculatorImpl extends BaseTest {
   @Test
   public void simpleCalculateSize() {
     final long intSize =
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinMemoryCalculator.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinMemoryCalculator.java
index b13829b..6e2b9d6 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinMemoryCalculator.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinMemoryCalculator.java
@@ -17,9 +17,10 @@
  */
 package org.apache.drill.exec.physical.impl.join;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
-public class TestHashJoinMemoryCalculator {
+public class TestHashJoinMemoryCalculator extends BaseTest {
   @Test // Make sure no exception is thrown
   public void testMakeDebugString()
   {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorConservativeImpl.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorConservativeImpl.java
index 3203a45..e00f935 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorConservativeImpl.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorConservativeImpl.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.physical.impl.join;
 import org.apache.drill.shaded.guava.com.google.common.collect.Maps;
 import org.apache.drill.exec.record.RecordBatchSizer;
 import org.apache.drill.exec.vector.UInt4Vector;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -28,7 +29,7 @@ import java.util.Map;
 /**
  * This is a test for the more conservative hash table memory calculator {@link HashTableSizeCalculatorConservativeImpl}.
  */
-public class TestHashTableSizeCalculatorConservativeImpl {
+public class TestHashTableSizeCalculatorConservativeImpl extends BaseTest {
   @Test
   public void testCalculateHashTableSize() {
     final int maxNumRecords = 40;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorLeanImpl.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorLeanImpl.java
index 82121b9..b2260d4 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorLeanImpl.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashTableSizeCalculatorLeanImpl.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.physical.impl.join;
 import org.apache.drill.shaded.guava.com.google.common.collect.Maps;
 import org.apache.drill.exec.record.RecordBatchSizer;
 import org.apache.drill.exec.vector.UInt4Vector;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -28,7 +29,7 @@ import java.util.Map;
 /**
  * This is a test for the more accurate hash table memory calculator {@link HashTableSizeCalculatorLeanImpl}.
  */
-public class TestHashTableSizeCalculatorLeanImpl {
+public class TestHashTableSizeCalculatorLeanImpl extends BaseTest {
   @Test
   public void testCalculateHashTableSize() {
     final int maxNumRecords = 40;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPartitionStat.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPartitionStat.java
index 627d737..f36b6d5 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPartitionStat.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPartitionStat.java
@@ -17,11 +17,12 @@
  */
 package org.apache.drill.exec.physical.impl.join;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class TestPartitionStat
-{
+public class TestPartitionStat extends BaseTest {
+
   @Test
   public void simpleAddBatchTest() {
     final PartitionStatImpl partitionStat = new PartitionStatImpl();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPostBuildCalculationsImpl.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPostBuildCalculationsImpl.java
index 0636cb7..74448ff 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPostBuildCalculationsImpl.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestPostBuildCalculationsImpl.java
@@ -19,6 +19,7 @@ package org.apache.drill.exec.physical.impl.join;
 
 import org.apache.drill.shaded.guava.com.google.common.base.Preconditions;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -26,7 +27,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-public class TestPostBuildCalculationsImpl {
+public class TestPostBuildCalculationsImpl extends BaseTest {
   @Test
   public void testProbeTooBig() {
     final int minProbeRecordsPerBatch = 10;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/scan/project/projSet/TestProjectionSet.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/scan/project/projSet/TestProjectionSet.java
index 30aa74e..ed7ba0e 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/scan/project/projSet/TestProjectionSet.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/scan/project/projSet/TestProjectionSet.java
@@ -39,6 +39,7 @@ import org.apache.drill.exec.record.metadata.TupleMetadata;
 import org.apache.drill.exec.vector.accessor.convert.ColumnConversionFactory;
 import org.apache.drill.exec.vector.accessor.convert.ConvertStringToInt;
 import org.apache.drill.exec.vector.accessor.convert.StandardConversions;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -57,7 +58,7 @@ import org.junit.experimental.categories.Category;
  */
 
 @Category(RowSetTests.class)
-public class TestProjectionSet {
+public class TestProjectionSet extends BaseTest {
 
   /**
    * Empty projection, no schema
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/AbstractGenericCopierTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/AbstractGenericCopierTest.java
index 20f287a..30111a1 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/AbstractGenericCopierTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/AbstractGenericCopierTest.java
@@ -30,6 +30,7 @@ import org.apache.drill.exec.record.BatchSchemaBuilder;
 import org.apache.drill.exec.record.metadata.SchemaBuilder;
 import org.apache.drill.exec.vector.SchemaChangeCallBack;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.test.OperatorFixture;
 import org.apache.drill.exec.physical.rowSet.DirectRowSet;
 import org.apache.drill.exec.physical.rowSet.RowSet;
@@ -38,7 +39,7 @@ import org.apache.drill.test.rowSet.RowSetComparison;
 import org.junit.Rule;
 import org.junit.Test;
 
-public abstract class AbstractGenericCopierTest {
+public abstract class AbstractGenericCopierTest extends BaseTest {
   @Rule
   public final BaseDirTestWatcher baseDirTestWatcher = new BaseDirTestWatcher();
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectedTuple.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectedTuple.java
index b374603..c82870d 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectedTuple.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectedTuple.java
@@ -33,6 +33,7 @@ import org.apache.drill.common.expression.SchemaPath;
 import org.apache.drill.exec.physical.resultSet.impl.RowSetTestUtils;
 import org.apache.drill.exec.physical.resultSet.project.RequestedTuple.RequestedColumn;
 import org.apache.drill.exec.physical.resultSet.project.RequestedTuple.TupleProjectionType;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -48,7 +49,7 @@ import org.junit.experimental.categories.Category;
  */
 
 @Category(RowSetTests.class)
-public class TestProjectedTuple {
+public class TestProjectedTuple extends BaseTest {
 
   @Test
   public void testProjectionAll() {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectionType.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectionType.java
index 88dd665..341e10d 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectionType.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/resultSet/project/TestProjectionType.java
@@ -24,11 +24,12 @@ import static org.junit.Assert.assertTrue;
 import org.apache.drill.categories.RowSetTests;
 import org.apache.drill.common.types.TypeProtos.MinorType;
 import org.apache.drill.common.types.Types;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(RowSetTests.class)
-public class TestProjectionType {
+public class TestProjectionType extends BaseTest {
 
   @Test
   public void testQueries() {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/common/TestNumericEquiDepthHistogram.java b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/common/TestNumericEquiDepthHistogram.java
index cd82e2a..965cb4a 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/common/TestNumericEquiDepthHistogram.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/common/TestNumericEquiDepthHistogram.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.planner.common;
 import org.apache.drill.categories.PlannerTest;
 
 import org.apache.drill.shaded.guava.com.google.common.collect.BoundType;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.Assert;
@@ -27,7 +28,7 @@ import org.apache.drill.shaded.guava.com.google.common.collect.Range;
 
 
 @Category(PlannerTest.class)
-public class TestNumericEquiDepthHistogram {
+public class TestNumericEquiDepthHistogram extends BaseTest {
 
   @Test
   public void testHistogramWithUniqueEndpoints() throws Exception {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/fragment/TestHardAffinityFragmentParallelizer.java b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/fragment/TestHardAffinityFragmentParallelizer.java
index 696486f..c7be3ff 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/fragment/TestHardAffinityFragmentParallelizer.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/fragment/TestHardAffinityFragmentParallelizer.java
@@ -23,6 +23,7 @@ import org.apache.drill.categories.PlannerTest;
 import org.apache.drill.exec.physical.EndpointAffinity;
 import org.apache.drill.exec.physical.base.PhysicalOperator;
 import org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -39,7 +40,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(PlannerTest.class)
-public class TestHardAffinityFragmentParallelizer {
+public class TestHardAffinityFragmentParallelizer extends BaseTest {
 
   // Create a set of test endpoints
   private static final DrillbitEndpoint N1_EP1 = newDrillbitEndpoint("node1", 30010);
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
index 4df08fe..1f35bc6 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
@@ -31,6 +31,7 @@ import org.apache.calcite.sql.type.SqlTypeName;
 import org.apache.drill.categories.PlannerTest;
 import org.apache.drill.common.exceptions.UserException;
 import org.apache.drill.exec.planner.types.DrillRelDataTypeSystem;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -39,7 +40,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 @Category(PlannerTest.class)
-public class DrillOptiqTest {
+public class DrillOptiqTest extends BaseTest {
 
   /* Method checks if we raise the appropriate error while dealing with RexNode that cannot be converted to
    * equivalent Drill expressions
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java
index b70fc9b..d153dbf 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/FilterSplitTest.java
@@ -31,9 +31,10 @@ import org.apache.calcite.rex.RexBuilder;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
-public class FilterSplitTest {
+public class FilterSplitTest extends BaseTest {
   static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(FilterSplitTest.class);
 
   final JavaTypeFactory t = new JavaTypeFactoryImpl();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/record/TestMaterializedField.java b/exec/java-exec/src/test/java/org/apache/drill/exec/record/TestMaterializedField.java
index fc76f1c..5ab5a56 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/record/TestMaterializedField.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/record/TestMaterializedField.java
@@ -23,12 +23,13 @@ import org.apache.drill.common.types.Types;
 
 import static org.junit.Assert.assertTrue;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(VectorTest.class)
-public class TestMaterializedField {
+public class TestMaterializedField extends BaseTest {
 
   private static final String PARENT_NAME = "parent";
   private static final String PARENT_SECOND_NAME = "parent2";
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java b/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java
index c07610d..b22703f 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.record.metadata.schema;
 import org.apache.drill.common.types.TypeProtos;
 import org.apache.drill.exec.record.metadata.ColumnMetadata;
 import org.apache.drill.exec.record.metadata.TupleMetadata;
+import org.apache.drill.test.BaseTest;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -41,7 +42,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-public class TestSchemaProvider {
+public class TestSchemaProvider extends BaseTest {
 
   @Rule
   public TemporaryFolder folder = new TemporaryFolder();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/TestResourcePoolTree.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/TestResourcePoolTree.java
index 25ab990..be8203b 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/TestResourcePoolTree.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/TestResourcePoolTree.java
@@ -30,6 +30,7 @@ import org.apache.drill.exec.resourcemgr.config.ResourcePoolTree;
 import org.apache.drill.exec.resourcemgr.config.ResourcePoolTreeImpl;
 import org.apache.drill.exec.resourcemgr.config.exception.RMConfigException;
 import org.apache.drill.exec.server.options.OptionValue;
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -50,7 +51,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(ResourceManagerTest.class)
-public final class TestResourcePoolTree {
+public final class TestResourcePoolTree extends BaseTest {
 
   private static final Map<String, Object> poolTreeConfig = new HashMap<>();
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestBestFitSelectionPolicy.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestBestFitSelectionPolicy.java
index 3dcde00..0a281a0 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestBestFitSelectionPolicy.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestBestFitSelectionPolicy.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.resourcemgr.config.QueryQueueConfig;
 import org.apache.drill.exec.resourcemgr.config.RMCommonDefaults;
 import org.apache.drill.exec.resourcemgr.config.ResourcePool;
 import org.apache.drill.exec.resourcemgr.config.exception.QueueSelectionException;
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -38,7 +39,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(ResourceManagerTest.class)
-public final class TestBestFitSelectionPolicy {
+public final class TestBestFitSelectionPolicy extends BaseTest {
 
   private static QueueSelectionPolicy selectionPolicy;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestDefaultSelectionPolicy.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestDefaultSelectionPolicy.java
index a78d106..2685875 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestDefaultSelectionPolicy.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectionpolicy/TestDefaultSelectionPolicy.java
@@ -22,6 +22,7 @@ import org.apache.drill.exec.ops.QueryContext;
 import org.apache.drill.exec.proto.UserBitShared;
 import org.apache.drill.exec.resourcemgr.config.ResourcePool;
 import org.apache.drill.exec.resourcemgr.config.exception.QueueSelectionException;
+import org.apache.drill.test.BaseTest;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -34,7 +35,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(ResourceManagerTest.class)
-public final class TestDefaultSelectionPolicy {
+public final class TestDefaultSelectionPolicy extends BaseTest {
 
   private static QueueSelectionPolicy selectionPolicy;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestAclSelector.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestAclSelector.java
index fbdb108..497f3bb 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestAclSelector.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestAclSelector.java
@@ -22,6 +22,7 @@ import com.typesafe.config.ConfigFactory;
 import com.typesafe.config.ConfigValueFactory;
 import org.apache.drill.categories.ResourceManagerTest;
 import org.apache.drill.exec.resourcemgr.config.exception.RMConfigException;
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -38,7 +39,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 @Category(ResourceManagerTest.class)
-public final class TestAclSelector {
+public final class TestAclSelector extends BaseTest {
 
   private static final List<String> groupsValue = new ArrayList<>();
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestComplexSelectors.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestComplexSelectors.java
index d381d05..bbd5ad9 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestComplexSelectors.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestComplexSelectors.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.ops.QueryContext;
 import org.apache.drill.exec.resourcemgr.config.exception.RMConfigException;
 import org.apache.drill.exec.server.options.OptionValue;
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -41,7 +42,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(ResourceManagerTest.class)
-public final class TestComplexSelectors {
+public final class TestComplexSelectors extends BaseTest {
 
   private static final Map<String, String> tagSelectorConfig1 = new HashMap<>();
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestNotEqualSelector.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestNotEqualSelector.java
index b3053aa..23899b3 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestNotEqualSelector.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestNotEqualSelector.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.ops.QueryContext;
 import org.apache.drill.exec.resourcemgr.config.exception.RMConfigException;
 import org.apache.drill.exec.server.options.OptionValue;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -39,7 +40,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(ResourceManagerTest.class)
-public final class TestNotEqualSelector {
+public final class TestNotEqualSelector extends BaseTest {
 
   private ResourcePoolSelector testCommonHelper(Map<String, ? extends Object> selectorValue) throws RMConfigException {
     Config testConfig = ConfigFactory.empty()
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestResourcePoolSelectors.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestResourcePoolSelectors.java
index 0a2d121..e8695c4 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestResourcePoolSelectors.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestResourcePoolSelectors.java
@@ -21,13 +21,14 @@ import com.typesafe.config.Config;
 import com.typesafe.config.ConfigFactory;
 import org.apache.drill.categories.ResourceManagerTest;
 import org.apache.drill.exec.resourcemgr.config.exception.RMConfigException;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import static org.junit.Assert.assertTrue;
 
 @Category(ResourceManagerTest.class)
-public class TestResourcePoolSelectors {
+public class TestResourcePoolSelectors extends BaseTest {
 
   @Test
   public void testNullSelectorConfig() throws Exception {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestTagSelector.java b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestTagSelector.java
index d937315..aa0800e 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestTagSelector.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/resourcemgr/config/selectors/TestTagSelector.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.ops.QueryContext;
 import org.apache.drill.exec.resourcemgr.config.exception.RMConfigException;
 import org.apache.drill.exec.server.options.OptionValue;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -35,7 +36,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(ResourceManagerTest.class)
-public final class TestTagSelector {
+public final class TestTagSelector extends BaseTest {
 
   private ResourcePoolSelector testCommonHelper(Object tagValue) throws RMConfigException {
     Config testConfig = ConfigFactory.empty()
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/ConnectionManagerRegistryTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/ConnectionManagerRegistryTest.java
index 667e440..a76f1c4 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/ConnectionManagerRegistryTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/ConnectionManagerRegistryTest.java
@@ -18,6 +18,7 @@
 package org.apache.drill.exec.rpc.control;
 
 import org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint;
+import org.apache.drill.test.BaseTest;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -25,7 +26,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
-public class ConnectionManagerRegistryTest {
+public class ConnectionManagerRegistryTest extends BaseTest {
 
   private static final DrillbitEndpoint localEndpoint = DrillbitEndpoint.newBuilder()
     .setAddress("10.0.0.1")
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/TestLocalControlConnectionManager.java b/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/TestLocalControlConnectionManager.java
index c0cf09b..fd9a20f 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/TestLocalControlConnectionManager.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/rpc/control/TestLocalControlConnectionManager.java
@@ -27,6 +27,7 @@ import org.apache.drill.exec.rpc.Acks;
 import org.apache.drill.exec.rpc.RpcException;
 import org.apache.drill.exec.rpc.RpcOutcomeListener;
 import org.apache.drill.exec.work.batch.ControlMessageHandler;
+import org.apache.drill.test.BaseTest;
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
 import org.junit.Before;
@@ -42,7 +43,7 @@ import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-public class TestLocalControlConnectionManager {
+public class TestLocalControlConnectionManager extends BaseTest {
 
   private static final DrillbitEndpoint localEndpoint = DrillbitEndpoint.newBuilder()
     .setAddress("10.0.0.1")
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/TestFailureUtils.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/TestFailureUtils.java
index 6736b46..344673a 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/TestFailureUtils.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/TestFailureUtils.java
@@ -18,6 +18,7 @@
 package org.apache.drill.exec.server;
 
 import org.apache.drill.exec.exception.OutOfMemoryException;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -25,7 +26,7 @@ import java.io.IOException;
 
 import static org.apache.drill.exec.server.FailureUtils.DIRECT_MEMORY_OOM_MESSAGE;
 
-public class TestFailureUtils {
+public class TestFailureUtils extends BaseTest {
   @Test
   public void testIsDirectMemoryOOM() {
     Assert.assertTrue(FailureUtils.isDirectMemoryOOM(new OutOfMemoryException()));
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/OptionValueTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/OptionValueTest.java
index a5a7bbf..56f4ba6 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/OptionValueTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/OptionValueTest.java
@@ -17,10 +17,11 @@
  */
 package org.apache.drill.exec.server.options;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class OptionValueTest {
+public class OptionValueTest extends BaseTest {
   @Test
   public void createBooleanKindTest() {
     final OptionValue createdValue = OptionValue.create(
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/PersistedOptionValueTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/PersistedOptionValueTest.java
index 9d22121..bf8ae33 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/PersistedOptionValueTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/PersistedOptionValueTest.java
@@ -22,12 +22,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.drill.common.util.DrillFileUtils;
 import org.apache.drill.exec.serialization.JacksonSerializer;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
 
-public class PersistedOptionValueTest {
+public class PersistedOptionValueTest extends BaseTest {
   /**
    * DRILL-5809
    * Note: If this test breaks you are probably breaking backward and forward compatibility. Verify with the community
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/TestConfigLinkage.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/TestConfigLinkage.java
index 9ecf73e..43e01b3 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/TestConfigLinkage.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/options/TestConfigLinkage.java
@@ -22,6 +22,7 @@ import org.apache.drill.categories.SlowTest;
 import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.store.sys.SystemTable;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.test.ClientFixture;
 import org.apache.drill.test.ClusterFixture;
 import org.apache.drill.test.ClusterFixtureBuilder;
@@ -41,7 +42,7 @@ import static org.junit.Assert.assertEquals;
  * */
 
 @Category({OptionsTest.class, SlowTest.class})
-public class TestConfigLinkage {
+public class TestConfigLinkage extends BaseTest {
   public static final String MOCK_PROPERTY = "mock.prop";
 
   @Rule
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/StatusResourcesTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/StatusResourcesTest.java
index 0efc12b..f3abbc7 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/StatusResourcesTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/StatusResourcesTest.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.server.rest;
 import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.server.options.OptionDefinition;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.test.ClientFixture;
 import org.apache.drill.test.ClusterFixture;
 import org.apache.drill.test.ClusterFixtureBuilder;
@@ -31,7 +32,7 @@ import org.junit.Test;
 import static org.apache.drill.exec.server.options.TestConfigLinkage.MOCK_PROPERTY;
 import static org.apache.drill.exec.server.options.TestConfigLinkage.createMockPropOptionDefinition;
 
-public class StatusResourcesTest {
+public class StatusResourcesTest extends BaseTest {
   @Rule
   public final BaseDirTestWatcher dirTestWatcher = new BaseDirTestWatcher();
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/TestMainLoginPageModel.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/TestMainLoginPageModel.java
index 3a45275..29bf97f 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/TestMainLoginPageModel.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/TestMainLoginPageModel.java
@@ -24,6 +24,7 @@ import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.server.DrillbitContext;
 import org.apache.drill.exec.server.rest.LogInLogOutResources.MainLoginPageModel;
 import org.apache.drill.exec.work.WorkManager;
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InjectMocks;
@@ -36,7 +37,7 @@ import static org.mockito.Mockito.when;
 /**
  * Test for {@link LogInLogOutResources.MainLoginPageModel} with various configurations done in DrillConfig
  */
-public class TestMainLoginPageModel {
+public class TestMainLoginPageModel extends BaseTest {
 
   @Mock
   WorkManager workManager;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/WebSessionResourcesTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/WebSessionResourcesTest.java
index c18f7d8..78cbd1e 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/WebSessionResourcesTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/WebSessionResourcesTest.java
@@ -25,6 +25,7 @@ import io.netty.util.concurrent.GenericFutureListener;
 import org.apache.drill.exec.memory.BufferAllocator;
 import org.apache.drill.exec.rpc.TransportCheck;
 import org.apache.drill.exec.rpc.user.UserSession;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import java.net.SocketAddress;
@@ -40,7 +41,7 @@ import static org.mockito.Mockito.verify;
  * Validates {@link WebSessionResources} close works as expected w.r.t {@link io.netty.channel.AbstractChannel.CloseFuture}
  * associated with it.
  */
-public class WebSessionResourcesTest {
+public class WebSessionResourcesTest extends BaseTest {
   //private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(WebSessionResourcesTest.class);
 
   private WebSessionResources webSessionResources;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestDrillSpnegoAuthenticator.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestDrillSpnegoAuthenticator.java
index f63aee5..efa1974 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestDrillSpnegoAuthenticator.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestDrillSpnegoAuthenticator.java
@@ -30,6 +30,7 @@ import org.apache.drill.exec.server.rest.WebServerConstants;
 import org.apache.drill.exec.server.rest.auth.DrillSpnegoAuthenticator;
 import org.apache.drill.exec.server.rest.auth.DrillSpnegoLoginService;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.security.authentication.util.KerberosName;
 import org.apache.hadoop.security.authentication.util.KerberosUtil;
 import org.apache.kerby.kerberos.kerb.client.JaasKrbUtil;
@@ -68,7 +69,7 @@ import static org.mockito.Mockito.verify;
  */
 @Ignore("See DRILL-5387")
 @Category(SecurityTest.class)
-public class TestDrillSpnegoAuthenticator {
+public class TestDrillSpnegoAuthenticator extends BaseTest {
 
   private static KerberosHelper spnegoHelper;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoAuthentication.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoAuthentication.java
index e4f82a1..572f32c 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoAuthentication.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoAuthentication.java
@@ -35,6 +35,7 @@ import org.apache.drill.exec.server.options.SystemOptionManager;
 import org.apache.drill.exec.server.rest.auth.DrillHttpSecurityHandlerProvider;
 import org.apache.drill.exec.server.rest.auth.DrillSpnegoLoginService;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.security.authentication.util.KerberosName;
 import org.apache.hadoop.security.authentication.util.KerberosUtil;
 import org.apache.kerby.kerberos.kerb.client.JaasKrbUtil;
@@ -65,7 +66,7 @@ import static org.junit.Assert.assertTrue;
  */
 @Ignore("See DRILL-5387")
 @Category(SecurityTest.class)
-public class TestSpnegoAuthentication {
+public class TestSpnegoAuthentication extends BaseTest {
 
   private static KerberosHelper spnegoHelper;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoConfig.java b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoConfig.java
index ef6e46c..3831f50 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoConfig.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/server/rest/spnego/TestSpnegoConfig.java
@@ -27,6 +27,7 @@ import org.apache.drill.exec.rpc.security.KerberosHelper;
 import org.apache.drill.exec.rpc.user.security.testing.UserAuthenticatorTestImpl;
 import org.apache.drill.exec.server.rest.auth.SpnegoConfig;
 import org.apache.drill.test.BaseDirTestWatcher;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.authentication.util.KerberosName;
 import org.apache.hadoop.security.authentication.util.KerberosUtil;
@@ -47,7 +48,7 @@ import static org.junit.Assert.assertTrue;
  */
 @Ignore("See DRILL-5387")
 @Category(SecurityTest.class)
-public class TestSpnegoConfig {
+public class TestSpnegoConfig extends BaseTest {
   //private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestSpnegoConfig.class);
 
   private static KerberosHelper spnegoHelper;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
index cc21b43..806d4a5 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
@@ -28,6 +28,7 @@ import org.apache.drill.exec.planner.physical.PlannerSettings;
 import org.apache.drill.exec.planner.sql.DrillConvertletTable;
 import org.apache.drill.exec.planner.sql.parser.CompoundIdentifierConverter;
 import org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.test.DrillAssert;
 import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.sql.parser.SqlParser;
@@ -35,7 +36,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(SqlTest.class)
-public class TestSqlBracketlessSyntax {
+public class TestSqlBracketlessSyntax extends BaseTest {
   static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestSqlBracketlessSyntax.class);
 
   @Test
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/StorageStrategyTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/StorageStrategyTest.java
index 11102f9..14968ae 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/StorageStrategyTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/StorageStrategyTest.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.store;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 import org.apache.drill.shaded.guava.com.google.common.io.Files;
 import org.apache.drill.exec.ExecTest;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.permission.FsPermission;
@@ -33,7 +34,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-public class StorageStrategyTest {
+public class StorageStrategyTest extends BaseTest {
   private static final FsPermission FULL_PERMISSION = FsPermission.getDirDefault();
   private static final StorageStrategy PERSISTENT_STRATEGY = new StorageStrategy("002", false);
   private static final StorageStrategy TEMPORARY_STRATEGY = new StorageStrategy("077", true);
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/bson/TestBsonRecordReader.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/bson/TestBsonRecordReader.java
index c3ff89a..4a77fbe 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/bson/TestBsonRecordReader.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/bson/TestBsonRecordReader.java
@@ -32,6 +32,7 @@ import org.apache.drill.exec.store.TestOutputMutator;
 import org.apache.drill.exec.vector.complex.impl.SingleMapReaderImpl;
 import org.apache.drill.exec.vector.complex.impl.VectorContainerWriter;
 import org.apache.drill.exec.vector.complex.reader.FieldReader;
+import org.apache.drill.test.BaseTest;
 import org.bson.BsonBinary;
 import org.bson.BsonBinarySubType;
 import org.bson.BsonBoolean;
@@ -52,7 +53,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-public class TestBsonRecordReader {
+public class TestBsonRecordReader extends BaseTest {
   private BufferAllocator allocator;
   private VectorContainerWriter writer;
   private TestOutputMutator mutator;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestDrillFileSystem.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestDrillFileSystem.java
index 5504382..ec841a3 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestDrillFileSystem.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestDrillFileSystem.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.store.dfs;
 import org.apache.drill.exec.ops.OpProfileDef;
 import org.apache.drill.exec.ops.OperatorStats;
 import org.apache.drill.exec.proto.UserBitShared.OperatorProfile;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -33,7 +34,7 @@ import java.io.PrintWriter;
 
 import static org.junit.Assert.assertTrue;
 
-public class TestDrillFileSystem {
+public class TestDrillFileSystem extends BaseTest {
 
   private static String tempFilePath;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestFormatPluginOptionExtractor.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestFormatPluginOptionExtractor.java
index 7721dc7..871233b 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestFormatPluginOptionExtractor.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/dfs/TestFormatPluginOptionExtractor.java
@@ -23,6 +23,7 @@ import org.apache.drill.common.scanner.RunTimeScan;
 import org.apache.drill.common.scanner.persistence.ScanResult;
 import org.apache.drill.exec.store.easy.text.TextFormatPlugin.TextFormatConfig;
 import org.apache.drill.exec.store.image.ImageFormatConfig;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import java.util.Collection;
@@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 
-public class TestFormatPluginOptionExtractor {
+public class TestFormatPluginOptionExtractor extends BaseTest {
 
   @Test
   public void test() {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestComplexColumnInSchema.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestComplexColumnInSchema.java
index ef6fdd4..6d0e785 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestComplexColumnInSchema.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestComplexColumnInSchema.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.store.parquet;
 import org.apache.drill.categories.ParquetTest;
 import org.apache.drill.categories.UnlikelyTest;
 import org.apache.drill.common.expression.SchemaPath;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.parquet.hadoop.metadata.ParquetMetadata;
@@ -40,7 +41,7 @@ import java.io.IOException;
  * This test checks correctness of complex column detection in the Parquet file schema.
  */
 @Category({ParquetTest.class, UnlikelyTest.class})
-public class TestComplexColumnInSchema {
+public class TestComplexColumnInSchema extends BaseTest {
 
   /*
   Parquet schema:
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetMetadataVersion.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetMetadataVersion.java
index d2fce64..f880126 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetMetadataVersion.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetMetadataVersion.java
@@ -21,6 +21,7 @@ import org.apache.drill.categories.ParquetTest;
 import org.apache.drill.categories.UnlikelyTest;
 import org.apache.drill.common.exceptions.DrillRuntimeException;
 import org.apache.drill.exec.store.parquet.metadata.MetadataVersion;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -28,7 +29,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @Category({ParquetTest.class, UnlikelyTest.class})
-public class TestParquetMetadataVersion {
+public class TestParquetMetadataVersion extends BaseTest {
 
   @Test
   public void testFirstLetter() throws Exception {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderConfig.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderConfig.java
index 0c0dea5..69f9666 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderConfig.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderConfig.java
@@ -23,6 +23,7 @@ import org.apache.drill.categories.UnlikelyTest;
 import org.apache.drill.common.config.DrillConfig;
 import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.server.options.SystemOptionManager;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.parquet.ParquetReadOptions;
 import org.junit.Test;
@@ -34,7 +35,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 @Category({ParquetTest.class, UnlikelyTest.class})
-public class TestParquetReaderConfig {
+public class TestParquetReaderConfig extends BaseTest {
 
   @Test
   public void testDefaultsDeserialization() throws Exception {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderUtility.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderUtility.java
index f93869c..ee4fec5 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderUtility.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetReaderUtility.java
@@ -19,6 +19,7 @@ package org.apache.drill.exec.store.parquet;
 
 import org.apache.drill.categories.ParquetTest;
 import org.apache.drill.categories.UnlikelyTest;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 
@@ -38,7 +39,7 @@ import java.io.IOException;
 import java.util.Map;
 
 @Category({ParquetTest.class, UnlikelyTest.class})
-public class TestParquetReaderUtility {
+public class TestParquetReaderUtility extends BaseTest {
 
   private static final String path = "src/test/resources/store/parquet/complex/complex.parquet";
   private static ParquetMetadata footer;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/store/TestAssignment.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/store/TestAssignment.java
index 1297967..853f2ce 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/store/TestAssignment.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/store/TestAssignment.java
@@ -26,6 +26,7 @@ import org.apache.drill.exec.store.schedule.AssignmentCreator;
 import org.apache.drill.exec.store.schedule.CompleteFileWork;
 import org.apache.drill.exec.store.schedule.EndpointByteMap;
 import org.apache.drill.exec.store.schedule.EndpointByteMapImpl;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.fs.Path;
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -36,7 +37,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.concurrent.ThreadLocalRandom;
 
-public class TestAssignment {
+public class TestAssignment extends BaseTest {
 
   private static final long FILE_SIZE = 1000;
   private static List<DrillbitEndpoint> endpoints;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/test/Drill2130JavaExecHamcrestConfigurationTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/test/Drill2130JavaExecHamcrestConfigurationTest.java
index fa599bd..e3eba89 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/test/Drill2130JavaExecHamcrestConfigurationTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/test/Drill2130JavaExecHamcrestConfigurationTest.java
@@ -21,10 +21,11 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 
-public class Drill2130JavaExecHamcrestConfigurationTest {
+public class Drill2130JavaExecHamcrestConfigurationTest extends BaseTest {
 
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory
       .getLogger(Drill2130JavaExecHamcrestConfigurationTest.class);
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/util/DrillExceptionUtilTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/util/DrillExceptionUtilTest.java
index a2cb29a..70679a1 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/util/DrillExceptionUtilTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/util/DrillExceptionUtilTest.java
@@ -22,11 +22,12 @@ import org.apache.drill.common.exceptions.DrillRuntimeException;
 import org.apache.drill.common.exceptions.ErrorHelper;
 import org.apache.drill.common.util.DrillExceptionUtil;
 import org.apache.drill.exec.proto.UserBitShared;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 
-public class DrillExceptionUtilTest {
+public class DrillExceptionUtilTest extends BaseTest {
   private static final String ERROR_MESSAGE = "Exception Test";
   private static final String NESTED_ERROR_MESSAGE = "Nested Exception";
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/util/FileSystemUtilTestBase.java b/exec/java-exec/src/test/java/org/apache/drill/exec/util/FileSystemUtilTestBase.java
index 5081bfd..20dde2a 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/util/FileSystemUtilTestBase.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/util/FileSystemUtilTestBase.java
@@ -21,6 +21,7 @@ import org.apache.drill.shaded.guava.com.google.common.base.Strings;
 import org.apache.drill.shaded.guava.com.google.common.io.Files;
 import org.apache.commons.io.FileUtils;
 import org.apache.drill.exec.ExecTest;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.junit.BeforeClass;
@@ -33,7 +34,7 @@ import java.util.Arrays;
  * Base test class for file system util classes that will during test initialization
  * setup file system connection and create directories and files needed for unit tests.
  */
-public class FileSystemUtilTestBase {
+public class FileSystemUtilTestBase extends BaseTest {
 
   /*
     Directory and file structure created during test initialization:
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestApproximateStringMatcher.java b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestApproximateStringMatcher.java
index 215dba9..b3b0a91 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestApproximateStringMatcher.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestApproximateStringMatcher.java
@@ -17,6 +17,7 @@
  */
 package org.apache.drill.exec.util;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import java.util.ArrayList;
@@ -24,7 +25,7 @@ import java.util.List;
 
 import static org.junit.Assert.assertEquals;
 
-public class TestApproximateStringMatcher {
+public class TestApproximateStringMatcher extends BaseTest {
     @Test
     public void testStringMatcher() {
         List<String> names = new ArrayList<>();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestArrayWrappedIntIntMap.java b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestArrayWrappedIntIntMap.java
index da2af9c..b877705 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestArrayWrappedIntIntMap.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestArrayWrappedIntIntMap.java
@@ -17,11 +17,12 @@
  */
 package org.apache.drill.exec.util;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 
-public class TestArrayWrappedIntIntMap {
+public class TestArrayWrappedIntIntMap extends BaseTest {
   @Test
   public void testSimple() {
     ArrayWrappedIntIntMap map = new ArrayWrappedIntIntMap();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestValueVectorElementFormatter.java b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestValueVectorElementFormatter.java
index 8e7df54..448c281 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestValueVectorElementFormatter.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/util/TestValueVectorElementFormatter.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.util;
 import org.apache.drill.common.types.TypeProtos;
 import org.apache.drill.exec.ExecConstants;
 import org.apache.drill.exec.server.options.OptionManager;
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
@@ -34,7 +35,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.mockito.Mockito.when;
 
-public class TestValueVectorElementFormatter {
+public class TestValueVectorElementFormatter extends BaseTest {
 
   @Mock
   private OptionManager options;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/TestSplitAndTransfer.java b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/TestSplitAndTransfer.java
index d8a9e03..e1b8dbc 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/TestSplitAndTransfer.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/TestSplitAndTransfer.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.memory.RootAllocatorFactory;
 import org.apache.drill.exec.record.MaterializedField;
 import org.apache.drill.exec.record.TransferPair;
 import org.apache.drill.exec.vector.NullableVarCharVector.Accessor;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -33,7 +34,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertArrayEquals;
 
 
-public class TestSplitAndTransfer {
+public class TestSplitAndTransfer extends BaseTest {
   @Test
   public void test() throws Exception {
     final DrillConfig drillConfig = DrillConfig.create();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java
index c70765f..57a0191 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/GenericAccessorTest.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.vector.accessor;
 import org.apache.drill.categories.VectorTest;
 import org.apache.drill.exec.proto.UserBitShared;
 import org.apache.drill.exec.vector.ValueVector;
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -35,7 +36,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @Category(VectorTest.class)
-public class GenericAccessorTest {
+public class GenericAccessorTest extends BaseTest {
 
   public static final Object NON_NULL_VALUE = "Non-null value";
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/TestTimePrintMillis.java b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/TestTimePrintMillis.java
index ab6aba7..06dbfff 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/TestTimePrintMillis.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/accessor/TestTimePrintMillis.java
@@ -18,10 +18,11 @@
 package org.apache.drill.exec.vector.accessor;
 
 import org.apache.drill.exec.vector.accessor.sql.TimePrintMillis;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
-public class TestTimePrintMillis {
+public class TestTimePrintMillis extends BaseTest {
 
   @Test
   public void testPrintingMillis() {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestPromotableWriter.java b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestPromotableWriter.java
index cbe5a58..2500c60 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestPromotableWriter.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestPromotableWriter.java
@@ -25,9 +25,10 @@ import org.apache.drill.exec.util.BatchPrinter;
 import org.apache.drill.exec.vector.complex.impl.VectorContainerWriter;
 import org.apache.drill.exec.vector.complex.writer.BaseWriter.ComplexWriter;
 import org.apache.drill.exec.vector.complex.writer.BaseWriter.MapWriter;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
-public class TestPromotableWriter {
+public class TestPromotableWriter extends BaseTest {
 
   @Test
   public void list() throws Exception {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
index 6785cf6..5a29f2a 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestRepeated.java
@@ -31,6 +31,7 @@ import org.apache.drill.exec.vector.complex.impl.ComplexWriterImpl;
 import org.apache.drill.exec.vector.complex.reader.FieldReader;
 import org.apache.drill.exec.vector.complex.writer.BaseWriter.ListWriter;
 import org.apache.drill.exec.vector.complex.writer.BaseWriter.MapWriter;
+import org.apache.drill.test.BaseTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -38,7 +39,7 @@ import org.junit.Test;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectWriter;
 
-public class TestRepeated {
+public class TestRepeated extends BaseTest {
   // private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestRepeated.class);
 
   private static final DrillConfig drillConfig = DrillConfig.create();
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/work/filter/BloomFilterTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/work/filter/BloomFilterTest.java
index 44ea06a..761a2cc 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/work/filter/BloomFilterTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/work/filter/BloomFilterTest.java
@@ -42,11 +42,12 @@ import org.apache.drill.exec.server.Drillbit;
 import org.apache.drill.exec.server.DrillbitContext;
 import org.apache.drill.exec.server.RemoteServiceSet;
 import org.apache.drill.exec.vector.VarCharVector;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 import java.util.Iterator;
 
-public class BloomFilterTest {
+public class BloomFilterTest extends BaseTest {
   public static DrillConfig c = DrillConfig.create();
 
   class TestRecordBatch implements RecordBatch {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java b/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java
index a119a8c..b4bc9cc 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/work/fragment/FragmentStatusReporterTest.java
@@ -26,6 +26,7 @@ import org.apache.drill.exec.proto.ExecProtos.FragmentHandle;
 import org.apache.drill.exec.proto.UserBitShared.FragmentState;
 import org.apache.drill.exec.rpc.control.ControlTunnel;
 import org.apache.drill.exec.rpc.control.Controller;
+import org.apache.drill.test.BaseTest;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -40,7 +41,7 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
-public class FragmentStatusReporterTest {
+public class FragmentStatusReporterTest extends BaseTest {
 
   private FragmentStatusReporter statusReporter;
 
diff --git a/exec/java-exec/src/test/java/org/apache/drill/test/ExampleTest.java b/exec/java-exec/src/test/java/org/apache/drill/test/ExampleTest.java
index 2a24002..40cb1f5 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/test/ExampleTest.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/test/ExampleTest.java
@@ -66,7 +66,7 @@ import ch.qos.logback.classic.Level;
 // real test.
 
 @Ignore
-public class ExampleTest {
+public class ExampleTest extends BaseTest {
   static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ExampleTest.class);
 
   /**
diff --git a/exec/java-exec/src/test/java/org/apache/drill/test/rowSet/test/TestRowSetComparison.java b/exec/java-exec/src/test/java/org/apache/drill/test/rowSet/test/TestRowSetComparison.java
index e9f1590..0326612 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/test/rowSet/test/TestRowSetComparison.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/test/rowSet/test/TestRowSetComparison.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.record.metadata.SchemaBuilder;
 import org.apache.drill.exec.record.metadata.TupleMetadata;
 import org.apache.drill.exec.physical.rowSet.RowSet;
 import org.apache.drill.exec.physical.rowSet.RowSetBuilder;
+import org.apache.drill.test.BaseTest;
 import org.apache.drill.test.rowSet.RowSetComparison;
 import org.junit.After;
 import org.junit.Before;
@@ -32,7 +33,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(RowSetTests.class)
-public class TestRowSetComparison {
+public class TestRowSetComparison extends BaseTest {
   private BufferAllocator allocator;
 
   @Before
diff --git a/exec/jdbc-all/src/test/java/org/apache/drill/jdbc/ITTestShadedJar.java b/exec/jdbc-all/src/test/java/org/apache/drill/jdbc/ITTestShadedJar.java
index c343037..99f399d 100644
--- a/exec/jdbc-all/src/test/java/org/apache/drill/jdbc/ITTestShadedJar.java
+++ b/exec/jdbc-all/src/test/java/org/apache/drill/jdbc/ITTestShadedJar.java
@@ -17,6 +17,7 @@
  */
 package org.apache.drill.jdbc;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.rules.TestWatcher;
@@ -44,7 +45,7 @@ import java.util.stream.Collectors;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
-public class ITTestShadedJar {
+public class ITTestShadedJar extends BaseTest {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ITTestShadedJar.class);
 
   private static DrillbitClassLoader drillbitLoader;
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionTransactionMethodsTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionTransactionMethodsTest.java
index ffc5b68..26eda3a 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionTransactionMethodsTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionTransactionMethodsTest.java
@@ -26,6 +26,7 @@ import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertThat;
 import org.apache.drill.categories.JdbcTest;
+import org.apache.drill.test.BaseTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -41,7 +42,7 @@ import java.sql.SQLException;
  * methods.
  */
 @Category(JdbcTest.class)
-public class ConnectionTransactionMethodsTest {
+public class ConnectionTransactionMethodsTest extends BaseTest {
 
   private static Connection connection;
 
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataTest.java
index cd9803b..9ee39b3 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataTest.java
@@ -34,6 +34,7 @@ import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 
 import org.apache.drill.categories.JdbcTest;
+import org.apache.drill.test.BaseTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -45,7 +46,7 @@ import org.junit.experimental.categories.Category;
  * {@link DatabaseMetaDataGetColumnsTest})).
  */
 @Category(JdbcTest.class)
-public class DatabaseMetaDataTest {
+public class DatabaseMetaDataTest extends BaseTest {
 
   protected static Connection connection;
   protected static DatabaseMetaData dbmd;
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillColumnMetaDataListTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillColumnMetaDataListTest.java
index f4e0363..a67d067 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillColumnMetaDataListTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DrillColumnMetaDataListTest.java
@@ -37,6 +37,7 @@ import org.apache.drill.exec.record.BatchSchema;
 import org.apache.drill.exec.record.MaterializedField;
 import org.apache.drill.jdbc.impl.DrillColumnMetaDataList;
 import org.apache.drill.categories.JdbcTest;
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -46,7 +47,7 @@ import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
 @Category(JdbcTest.class)
-public class DrillColumnMetaDataListTest {
+public class DrillColumnMetaDataListTest extends BaseTest {
 
   private DrillColumnMetaDataList emptyList;
 
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/impl/TypeConvertingSqlAccessorTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/impl/TypeConvertingSqlAccessorTest.java
index 1d81267..d10e28f 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/impl/TypeConvertingSqlAccessorTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/impl/TypeConvertingSqlAccessorTest.java
@@ -25,6 +25,7 @@ import org.apache.drill.exec.vector.accessor.InvalidAccessException;
 import org.apache.drill.exec.vector.accessor.SqlAccessor;
 import org.apache.drill.jdbc.SQLConversionOverflowException;
 import org.apache.drill.categories.JdbcTest;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -39,7 +40,7 @@ import static org.junit.Assert.assertThat;
  * (Also see {@link org.apache.drill.jdbc.ResultSetGetMethodConversionsTest}.
  */
 @Category(JdbcTest.class)
-public class TypeConvertingSqlAccessorTest {
+public class TypeConvertingSqlAccessorTest extends BaseTest {
 
   /**
    * Base test stub(?) for accessors underlying TypeConvertingSqlAccessor.
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2130JavaJdbcHamcrestConfigurationTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2130JavaJdbcHamcrestConfigurationTest.java
index 3adfbf6..b1c32c6 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2130JavaJdbcHamcrestConfigurationTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2130JavaJdbcHamcrestConfigurationTest.java
@@ -18,6 +18,7 @@
 package org.apache.drill.jdbc.test;
 
 import org.apache.drill.categories.JdbcTest;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -26,7 +27,7 @@ import static org.junit.Assert.fail;
 import static org.hamcrest.CoreMatchers.equalTo;
 
 @Category(JdbcTest.class)
-public class Drill2130JavaJdbcHamcrestConfigurationTest {
+public class Drill2130JavaJdbcHamcrestConfigurationTest extends BaseTest {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Drill2130JavaJdbcHamcrestConfigurationTest.class);
 
   @SuppressWarnings("unused")
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2288GetColumnsMetadataWhenNoRowsTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2288GetColumnsMetadataWhenNoRowsTest.java
index c98059e..94ef471 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2288GetColumnsMetadataWhenNoRowsTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/Drill2288GetColumnsMetadataWhenNoRowsTest.java
@@ -31,6 +31,7 @@ import java.sql.Statement;
 import org.apache.drill.jdbc.Driver;
 import org.apache.drill.categories.JdbcTest;
 import org.apache.drill.jdbc.JdbcTestBase;
+import org.apache.drill.test.BaseTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -41,7 +42,7 @@ import org.junit.experimental.categories.Category;
  * scan yielded an empty (zero-row) result set.
  */
 @Category(JdbcTest.class)
-public class Drill2288GetColumnsMetadataWhenNoRowsTest {
+public class Drill2288GetColumnsMetadataWhenNoRowsTest extends BaseTest {
   private static Connection connection;
 
   @BeforeClass
diff --git a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/BoundsCheckingTest.java b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/BoundsCheckingTest.java
index 8021228..3b5c7ee 100644
--- a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/BoundsCheckingTest.java
+++ b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/BoundsCheckingTest.java
@@ -20,6 +20,7 @@ package org.apache.drill.exec.memory;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -31,8 +32,7 @@ import io.netty.util.IllegalReferenceCountException;
 
 import static org.junit.Assert.fail;
 
-public class BoundsCheckingTest
-{
+public class BoundsCheckingTest extends BaseTest {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(BoundsCheckingTest.class);
 
   private static boolean old;
diff --git a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestAccountant.java b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestAccountant.java
index d977f96..c359404 100644
--- a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestAccountant.java
+++ b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestAccountant.java
@@ -21,12 +21,13 @@ import static org.junit.Assert.assertEquals;
 
 import org.apache.drill.categories.MemoryTest;
 import org.apache.drill.exec.memory.Accountant.AllocationOutcome;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(MemoryTest.class)
-public class TestAccountant {
+public class TestAccountant extends BaseTest {
 
   @Test
   public void basic() {
diff --git a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestBaseAllocator.java b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestBaseAllocator.java
index 3faa7ea..827eb9c 100644
--- a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestBaseAllocator.java
+++ b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestBaseAllocator.java
@@ -27,12 +27,13 @@ import io.netty.buffer.DrillBuf.TransferResult;
 
 import org.apache.drill.categories.MemoryTest;
 import org.apache.drill.exec.exception.OutOfMemoryException;
+import org.apache.drill.test.BaseTest;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(MemoryTest.class)
-public class TestBaseAllocator {
+public class TestBaseAllocator extends BaseTest {
   // private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestBaseAllocator.class);
 
   private final static int MAX_ALLOCATION = 8 * 1024;
diff --git a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestEndianess.java b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestEndianess.java
index 82a91a7..9d2fd76 100644
--- a/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestEndianess.java
+++ b/exec/memory/base/src/test/java/org/apache/drill/exec/memory/TestEndianess.java
@@ -23,11 +23,12 @@ import io.netty.buffer.ByteBuf;
 import org.apache.drill.categories.MemoryTest;
 import org.apache.drill.common.DrillAutoCloseables;
 import org.apache.drill.common.config.DrillConfig;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(MemoryTest.class)
-public class TestEndianess {
+public class TestEndianess extends BaseTest {
 
   @Test
   public void testLittleEndian() {
diff --git a/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/TestMetadataProperties.java b/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/TestMetadataProperties.java
index 4834ae7..6ffd170 100644
--- a/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/TestMetadataProperties.java
+++ b/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/TestMetadataProperties.java
@@ -30,11 +30,12 @@ import org.apache.drill.categories.RowSetTests;
 import org.apache.drill.common.types.TypeProtos.DataMode;
 import org.apache.drill.common.types.TypeProtos.MinorType;
 import org.apache.drill.exec.expr.BasicTypeHelper;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 @Category(RowSetTests.class)
-public class TestMetadataProperties {
+public class TestMetadataProperties extends BaseTest {
 
   @Test
   public void testBasics() {
diff --git a/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestParserErrorHandling.java b/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestParserErrorHandling.java
index 6bd730b..1d5a84b 100644
--- a/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestParserErrorHandling.java
+++ b/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestParserErrorHandling.java
@@ -17,13 +17,14 @@
  */
 package org.apache.drill.exec.record.metadata.schema.parser;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
 import java.io.IOException;
 
-public class TestParserErrorHandling {
+public class TestParserErrorHandling extends BaseTest {
 
   @Rule
   public ExpectedException thrown = ExpectedException.none();
diff --git a/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestSchemaParser.java b/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestSchemaParser.java
index 5bb6cfb..0a6bb78 100644
--- a/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestSchemaParser.java
+++ b/exec/vector/src/test/java/org/apache/drill/exec/record/metadata/schema/parser/TestSchemaParser.java
@@ -21,6 +21,7 @@ import org.apache.drill.common.types.TypeProtos;
 import org.apache.drill.exec.record.metadata.ColumnMetadata;
 import org.apache.drill.exec.record.metadata.SchemaBuilder;
 import org.apache.drill.exec.record.metadata.TupleMetadata;
+import org.apache.drill.test.BaseTest;
 import org.joda.time.LocalDate;
 import org.junit.Test;
 
@@ -35,7 +36,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-public class TestSchemaParser {
+public class TestSchemaParser extends BaseTest {
 
   @Test
   public void checkQuotedIdWithEscapes() throws Exception {
diff --git a/exec/vector/src/test/java/org/apache/drill/exec/vector/VariableLengthVectorTest.java b/exec/vector/src/test/java/org/apache/drill/exec/vector/VariableLengthVectorTest.java
index 05fb66a..96cf102 100644
--- a/exec/vector/src/test/java/org/apache/drill/exec/vector/VariableLengthVectorTest.java
+++ b/exec/vector/src/test/java/org/apache/drill/exec/vector/VariableLengthVectorTest.java
@@ -21,14 +21,14 @@ import org.apache.drill.common.types.TypeProtos;
 import org.apache.drill.common.types.Types;
 import org.apache.drill.exec.memory.RootAllocator;
 import org.apache.drill.exec.record.MaterializedField;
+import org.apache.drill.test.BaseTest;
 import org.junit.Assert;
 import org.junit.Test;
 
 /**
  * This test uses {@link VarCharVector} to test the template code in VariableLengthVector.
  */
-public class VariableLengthVectorTest
-{
+public class VariableLengthVectorTest extends BaseTest {
   /**
    * If the vector contains 1000 records, setting a value count of 1000 should work.
    */
diff --git a/exec/vector/src/test/java/org/apache/drill/exec/vector/VectorTest.java b/exec/vector/src/test/java/org/apache/drill/exec/vector/VectorTest.java
index d633a79..a3993c9 100644
--- a/exec/vector/src/test/java/org/apache/drill/exec/vector/VectorTest.java
+++ b/exec/vector/src/test/java/org/apache/drill/exec/vector/VectorTest.java
@@ -34,13 +34,14 @@ import org.apache.drill.exec.vector.complex.writer.BaseWriter.ListWriter;
 import org.apache.drill.exec.vector.complex.writer.BaseWriter.MapWriter;
 import org.apache.drill.exec.vector.complex.writer.FieldWriter;
 import org.apache.drill.exec.vector.complex.writer.IntWriter;
+import org.apache.drill.test.BaseTest;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
 import io.netty.buffer.DrillBuf;
 
-public class VectorTest {
+public class VectorTest extends BaseTest {
 
   private static RootAllocator allocator;
 
diff --git a/logical/src/test/java/org/apache/drill/common/expression/SchemaPathTest.java b/logical/src/test/java/org/apache/drill/common/expression/SchemaPathTest.java
index 6a820ef..3bc5ec5 100644
--- a/logical/src/test/java/org/apache/drill/common/expression/SchemaPathTest.java
+++ b/logical/src/test/java/org/apache/drill/common/expression/SchemaPathTest.java
@@ -17,11 +17,12 @@
  */
 package org.apache.drill.common.expression;
 
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 
-public class SchemaPathTest {
+public class SchemaPathTest extends BaseTest {
 
   @Test
   public void testUnIndexedWithOutArray() {
diff --git a/logical/src/test/java/org/apache/drill/common/expression/fn/JodaDateValidatorTest.java b/logical/src/test/java/org/apache/drill/common/expression/fn/JodaDateValidatorTest.java
index cb23da2..16df588 100644
--- a/logical/src/test/java/org/apache/drill/common/expression/fn/JodaDateValidatorTest.java
+++ b/logical/src/test/java/org/apache/drill/common/expression/fn/JodaDateValidatorTest.java
@@ -18,6 +18,7 @@
 package org.apache.drill.common.expression.fn;
 
 import org.apache.drill.shaded.guava.com.google.common.collect.Maps;
+import org.apache.drill.test.BaseTest;
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 import org.joda.time.format.DateTimeFormatter;
@@ -30,7 +31,7 @@ import static org.apache.drill.common.expression.fn.JodaDateValidator.toJodaForm
 import static org.joda.time.DateTime.parse;
 import static org.joda.time.format.DateTimeFormat.forPattern;
 
-public class JodaDateValidatorTest {
+public class JodaDateValidatorTest extends BaseTest {
 
   private static final Map<String, String> TEST_CASES = Maps.newHashMap();
 
diff --git a/logical/src/test/java/org/apache/drill/common/logical/data/OrderTest.java b/logical/src/test/java/org/apache/drill/common/logical/data/OrderTest.java
index 8242076..9bfda8b 100644
--- a/logical/src/test/java/org/apache/drill/common/logical/data/OrderTest.java
+++ b/logical/src/test/java/org/apache/drill/common/logical/data/OrderTest.java
@@ -25,11 +25,12 @@ import org.apache.drill.common.logical.data.Order.Ordering;
 import org.apache.calcite.rel.RelFieldCollation;
 import org.apache.calcite.rel.RelFieldCollation.Direction;
 import org.apache.calcite.rel.RelFieldCollation.NullDirection;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 
-public class OrderTest {
+public class OrderTest extends BaseTest {
 
   //////////
   // Order.Ordering tests:
diff --git a/metastore/iceberg-metastore/src/test/java/org/apache/drill/metastore/iceberg/IcebergBaseTest.java b/metastore/iceberg-metastore/src/test/java/org/apache/drill/metastore/iceberg/IcebergBaseTest.java
index 5ef7b80..51db136 100644
--- a/metastore/iceberg-metastore/src/test/java/org/apache/drill/metastore/iceberg/IcebergBaseTest.java
+++ b/metastore/iceberg-metastore/src/test/java/org/apache/drill/metastore/iceberg/IcebergBaseTest.java
@@ -21,12 +21,11 @@ import com.typesafe.config.Config;
 import com.typesafe.config.ConfigValueFactory;
 import org.apache.drill.categories.MetastoreTest;
 import org.apache.drill.common.config.DrillConfig;
-import org.apache.drill.common.util.GuavaPatcher;
 import org.apache.drill.metastore.iceberg.config.IcebergConfigConstants;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.experimental.categories.Category;
@@ -36,7 +35,7 @@ import org.junit.rules.TemporaryFolder;
 import java.io.File;
 
 @Category(MetastoreTest.class)
-public abstract class IcebergBaseTest {
+public abstract class IcebergBaseTest extends BaseTest {
 
   @ClassRule
   public static TemporaryFolder defaultFolder = new TemporaryFolder();
@@ -44,12 +43,6 @@ public abstract class IcebergBaseTest {
   @Rule
   public ExpectedException thrown = ExpectedException.none();
 
-  @BeforeClass
-  public static void setup() {
-    // patches Guava Preconditions class with missing methods
-    GuavaPatcher.patch();
-  }
-
   /**
    * Creates Hadoop configuration and sets local file system as default.
    *
diff --git a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesRequests.java b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesRequests.java
index 2d95255..8278816 100644
--- a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesRequests.java
+++ b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesRequests.java
@@ -20,6 +20,7 @@ package org.apache.drill.metastore.components.tables;
 import org.apache.drill.categories.MetastoreTest;
 import org.apache.drill.metastore.expressions.FilterExpression;
 import org.apache.drill.metastore.metadata.MetadataInfo;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -32,7 +33,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 @Category(MetastoreTest.class)
-public class TestBasicTablesRequests {
+public class TestBasicTablesRequests extends BaseTest {
 
   @Test
   public void testRequestMetadataWithoutRequestColumns() {
diff --git a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesTransformer.java b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesTransformer.java
index 1bd9f6a..7c13e18 100644
--- a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesTransformer.java
+++ b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestBasicTablesTransformer.java
@@ -25,6 +25,7 @@ import org.apache.drill.metastore.metadata.MetadataType;
 import org.apache.drill.metastore.metadata.PartitionMetadata;
 import org.apache.drill.metastore.metadata.RowGroupMetadata;
 import org.apache.drill.metastore.metadata.SegmentMetadata;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -36,7 +37,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @Category(MetastoreTest.class)
-public class TestBasicTablesTransformer {
+public class TestBasicTablesTransformer extends BaseTest {
 
   @Test
   public void testTables() {
diff --git a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestMetastoreTableInfo.java b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestMetastoreTableInfo.java
index 90ce610..699a18c 100644
--- a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestMetastoreTableInfo.java
+++ b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestMetastoreTableInfo.java
@@ -19,6 +19,7 @@ package org.apache.drill.metastore.components.tables;
 
 import org.apache.drill.categories.MetastoreTest;
 import org.apache.drill.metastore.metadata.TableInfo;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -26,7 +27,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 @Category(MetastoreTest.class)
-public class TestMetastoreTableInfo {
+public class TestMetastoreTableInfo extends BaseTest {
 
   @Test
   public void testAbsentTable() {
diff --git a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestTableMetadataUnitConversion.java b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestTableMetadataUnitConversion.java
index 7f49947..c31c254 100644
--- a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestTableMetadataUnitConversion.java
+++ b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/components/tables/TestTableMetadataUnitConversion.java
@@ -34,6 +34,7 @@ import org.apache.drill.metastore.metadata.TableInfo;
 import org.apache.drill.metastore.statistics.ColumnStatistics;
 import org.apache.drill.metastore.statistics.ColumnStatisticsKind;
 import org.apache.drill.metastore.statistics.StatisticsHolder;
+import org.apache.drill.test.BaseTest;
 import org.apache.hadoop.fs.Path;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -53,7 +54,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 @Category(MetastoreTest.class)
-public class TestTableMetadataUnitConversion {
+public class TestTableMetadataUnitConversion extends BaseTest {
 
   private static Data data;
 
diff --git a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/metadata/MetadataSerDeTest.java b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/metadata/MetadataSerDeTest.java
index 6a2d36d..520e59e 100644
--- a/metastore/metastore-api/src/test/java/org/apache/drill/metastore/metadata/MetadataSerDeTest.java
+++ b/metastore/metastore-api/src/test/java/org/apache/drill/metastore/metadata/MetadataSerDeTest.java
@@ -24,6 +24,7 @@ import org.apache.drill.metastore.statistics.ColumnStatistics;
 import org.apache.drill.metastore.statistics.ColumnStatisticsKind;
 import org.apache.drill.metastore.statistics.StatisticsHolder;
 import org.apache.drill.metastore.statistics.TableStatisticsKind;
+import org.apache.drill.test.BaseTest;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -36,7 +37,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 @Category(MetastoreTest.class)
-public class MetadataSerDeTest {
+public class MetadataSerDeTest extends BaseTest {
 
   @Test
   public void testStatisticsHolderSerialization() {
diff --git a/pom.xml b/pom.xml
index 7f04737..c551747 100644
--- a/pom.xml
+++ b/pom.xml
@@ -753,26 +753,7 @@
               <goals>
                 <goal>test</goal>
               </goals>
-            <!-- TODO: Remove excludedGroups after DRILL-7393 is fixed. -->
-            <configuration>
-              <excludedGroups>org.apache.drill.categories.MetastoreTest,${excludedGroups}</excludedGroups>
-            </configuration>
           </execution>
-          <!--
-              All Metastore tests must run in separate a JVM to ensure
-              that Guava Preconditions class is patched before execution.
-              TODO: Remove execution block for metastore-test after DRILL-7393 is fixed.
-          -->
-            <execution>
-              <id>metastore-test</id>
-              <phase>test</phase>
-              <goals>
-                <goal>test</goal>
-              </goals>
-              <configuration>
-                <groups>org.apache.drill.categories.MetastoreTest</groups>
-              </configuration>
-            </execution>
           </executions>
           <dependencies>
             <dependency>