HBASE-24175 [Flakey Tests] TestSecureExportSnapshot FileNotFoundException

Addendum: add test to check for '/tmp' references.
This commit is contained in:
stack 2020-04-15 10:37:55 -07:00
parent 4c83067e1e
commit 62c5bdcc08
2 changed files with 53 additions and 21 deletions

View File

@ -17,6 +17,9 @@
*/
package org.apache.hadoop.hbase.snapshot;
import static org.junit.Assert.assertFalse;
import java.util.Iterator;
import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@ -68,6 +71,20 @@ public class TestExportSnapshotAdjunct {
TestExportSnapshot.setUpBaseConf(TEST_UTIL.getConfiguration());
TEST_UTIL.startMiniCluster(3);
TEST_UTIL.startMiniMapReduceCluster();
Configuration conf = TEST_UTIL.getConfiguration();
for (Iterator<Map.Entry<String, String>> i = conf.iterator(); i.hasNext();) {
Map.Entry<String, String> e = i.next();
if (e.getValue().contains("java.io.tmpdir")) {
continue;
}
if (e.getValue().contains("hadoop.tmp.dir")) {
continue;
}
if (e.getValue().contains("hbase.tmp.dir")) {
continue;
}
assertFalse(e.getKey() + " " + e.getValue(), e.getValue().contains("tmp"));
}
}
@AfterClass

View File

@ -456,21 +456,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
createSubDir(
"mapreduce.cluster.local.dir",
testPath, "mapred-local-dir");
// Frustrate yarn's attempts at writing /tmp.
String property = "yarn.node-labels.fs-store.root-dir";
createSubDir(property, testPath, property);
property = "yarn.nodemanager.log-dirs";
createSubDir(property, testPath, property);
property = "yarn.nodemanager.remote-app-log-dir";
createSubDir(property, testPath, property);
property = "yarn.timeline-service.entity-group-fs-store.active-dir";
createSubDir(property, testPath, property);
property = "yarn.timeline-service.entity-group-fs-store.done-dir";
createSubDir(property, testPath, property);
property = "yarn.nodemanager.remote-app-log-dir";
createSubDir(property, testPath, property);
return testPath;
}
@ -713,16 +698,24 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
return dfsCluster;
}
/** This is used before starting HDFS and map-reduce mini-clusters */
/** This is used before starting HDFS and map-reduce mini-clusters
* Run something like the below to check for the likes of '/tmp' references -- i.e.
* references outside of the test data dir -- in the conf.
* Configuration conf = TEST_UTIL.getConfiguration();
* for (Iterator<Map.Entry<String, String>> i = conf.iterator(); i.hasNext();) {
* Map.Entry<String, String> e = i.next();
* assertFalse(e.getKey() + " " + e.getValue(), e.getValue().contains("/tmp"));
* }
*/
private void createDirsAndSetProperties() throws IOException {
setupClusterTestDir();
conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());
System.setProperty(TEST_DIRECTORY_KEY, clusterTestDir.getPath());
createDirAndSetProperty("cache_data", "test.cache.data");
createDirAndSetProperty("hadoop_tmp", "hadoop.tmp.dir");
hadoopLogDir = createDirAndSetProperty("hadoop_logs", "hadoop.log.dir");
createDirAndSetProperty("mapred_local", "mapreduce.cluster.local.dir");
createDirAndSetProperty("mapred_temp", "mapreduce.cluster.temp.dir");
createDirAndSetProperty("test.cache.data", "test.cache.data");
createDirAndSetProperty("hadoop.tmp.dir", "hadoop.tmp.dir");
hadoopLogDir = createDirAndSetProperty("hadoop.log.dir", "hadoop.log.dir");
createDirAndSetProperty("mapreduce.cluster.local.dir", "mapreduce.cluster.local.dir");
createDirAndSetProperty("mapreduce.cluster.temp.dir", "mapreduce.cluster.temp.dir");
enableShortCircuit();
Path root = getDataTestDirOnTestFS("hadoop");
@ -734,6 +727,28 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
conf.set("mapreduce.job.working.dir", new Path(root, "mapred-working-dir").toString());
conf.set("yarn.app.mapreduce.am.staging-dir",
new Path(root, "mapreduce-am-staging-root-dir").toString());
// Frustrate yarn's and hdfs's attempts at writing /tmp.
String property = "yarn.node-labels.fs-store.root-dir";
createDirAndSetProperty(property, property);
property = "yarn.nodemanager.log-dirs";
createDirAndSetProperty(property, property);
property = "yarn.nodemanager.remote-app-log-dir";
createDirAndSetProperty(property, property);
property = "yarn.timeline-service.entity-group-fs-store.active-dir";
createDirAndSetProperty(property, property);
property = "yarn.timeline-service.entity-group-fs-store.done-dir";
createDirAndSetProperty(property, property);
property = "yarn.nodemanager.remote-app-log-dir";
createDirAndSetProperty(property, property);
property = "dfs.journalnode.edits.dir";
createDirAndSetProperty(property, property);
property = "dfs.datanode.shared.file.descriptor.paths";
createDirAndSetProperty(property, property);
property = "nfs.dump.dir";
createDirAndSetProperty(property, property);
property = "java.io.tmpdir";
createDirAndSetProperty(property, property);
}
/**