diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestingUtility.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestingUtility.java index fcda1b00a56..6309fcea118 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestingUtility.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestingUtility.java @@ -132,7 +132,20 @@ public class IntegrationTestingUtility extends HBaseTestingUtility { } public void createDistributedHBaseCluster() throws IOException { + //if it is a distributed HBase cluster, use the conf provided by classpath + //to set hbase dir and fs.defaultFS. + //Since when the super class HBaseTestingUtility initializing, it will + //change hbase.rootdir to a local test dir. + //we use "original.defaultFS" and "original.hbase.dir" to restore them. Configuration conf = getConfiguration(); + if (conf.get("original.defaultFS") != null) { + conf.set("fs.defaultFS", conf.get("original.defaultFS")); + } + if (conf.get("original.hbase.dir") != null) { + conf.set(HConstants.HBASE_DIR, conf.get("original.hbase.dir")); + } + LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + conf.get(HConstants.HBASE_DIR) + + " since it is a distributed cluster"); Class clusterManagerClass = conf.getClass(HBASE_CLUSTER_MANAGER_CLASS, DEFAULT_HBASE_CLUSTER_MANAGER_CLASS, ClusterManager.class); ClusterManager clusterManager = ReflectionUtils.newInstance( diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index 5838fffbfc6..384b3cb57a4 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -304,6 +304,20 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { // a hbase checksum verification failure will cause unit tests to fail ChecksumUtil.generateExceptionForChecksumFailureForTest(true); + + // Save this for when setting default file:// breaks things + if (this.conf.get("fs.defaultFS") != null) { + this.conf.set("original.defaultFS", this.conf.get("fs.defaultFS")); + } + if (this.conf.get(HConstants.HBASE_DIR) != null) { + this.conf.set("original.hbase.dir", this.conf.get(HConstants.HBASE_DIR)); + } + // Every cluster is a local cluster until we start DFS + // Note that conf could be null, but this.conf will not be + String dataTestDir = getDataTestDir().toString(); + this.conf.set("fs.defaultFS","file:///"); + this.conf.set(HConstants.HBASE_DIR, "file://" + dataTestDir); + LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir); } /**