From c8f22fe7374415791617eb786ab345d99e4e32fd Mon Sep 17 00:00:00 2001 From: Xing Lin Date: Wed, 13 Oct 2021 13:43:47 -0700 Subject: [PATCH] HADOOP-16532. Fix TestViewFsTrash to use the correct homeDir. Contributed by Xing Lin. (#3514) (cherry picked from commit 97c0f968792e1a45a1569a3184af7b114fc8c022) --- .../java/org/apache/hadoop/fs/TestTrash.java | 7 ++-- .../hadoop/fs/viewfs/TestViewFsTrash.java | 41 ++++++++----------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestTrash.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestTrash.java index cf22f3b10b5..efb2a066e8f 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestTrash.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestTrash.java @@ -120,9 +120,10 @@ public class TestTrash { /** * Test trash for the shell's delete command for the default file system - * specified in the paramter conf - * @param conf + * specified in the parameter conf + * @param conf - configuration object for the filesystem * @param base - the base path where files are created + * @param trashRootFs - the filesystem object to test trash * @param trashRoot - the expected place where the trashbin resides * @throws IOException */ @@ -778,7 +779,7 @@ public class TestTrash { } } - static class TestLFS extends LocalFileSystem { + public static class TestLFS extends LocalFileSystem { Path home; TestLFS() { this(TEST_DIR); diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsTrash.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsTrash.java index 62ef9d14638..8e5fa72f7ed 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsTrash.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsTrash.java @@ -17,14 +17,10 @@ */ package org.apache.hadoop.fs.viewfs; - -import java.io.IOException; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FileSystemTestHelper; import org.apache.hadoop.fs.FsConstants; -import org.apache.hadoop.fs.LocalFileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.TestTrash; import org.junit.After; @@ -35,31 +31,26 @@ public class TestViewFsTrash { FileSystem fsTarget; // the target file system - the mount will point here FileSystem fsView; Configuration conf; - FileSystemTestHelper fileSystemTestHelper = new FileSystemTestHelper(); - - class TestLFS extends LocalFileSystem { - Path home; - TestLFS() throws IOException { - this(new Path(fileSystemTestHelper.getTestRootDir())); - } - TestLFS(Path home) throws IOException { - super(); - this.home = home; - } - @Override - public Path getHomeDirectory() { - return home; - } - } + private FileSystemTestHelper fileSystemTestHelper; @Before public void setUp() throws Exception { - fsTarget = FileSystem.getLocal(new Configuration()); - fsTarget.mkdirs(new Path(fileSystemTestHelper. - getTestRootPath(fsTarget), "dir1")); + Configuration targetFSConf = new Configuration(); + targetFSConf.setClass("fs.file.impl", TestTrash.TestLFS.class, FileSystem.class); + + fsTarget = FileSystem.getLocal(targetFSConf); + fileSystemTestHelper = new FileSystemTestHelper(fsTarget.getHomeDirectory().toUri().getPath()); + conf = ViewFileSystemTestSetup.createConfig(); fsView = ViewFileSystemTestSetup.setupForViewFileSystem(conf, fileSystemTestHelper, fsTarget); conf.set("fs.defaultFS", FsConstants.VIEWFS_URI.toString()); + + /* + * Need to set the fs.file.impl to TestViewFsTrash.TestLFS. Otherwise, it will load + * LocalFileSystem implementation which uses System.getProperty("user.home") for homeDirectory. + */ + conf.setClass("fs.file.impl", TestTrash.TestLFS.class, FileSystem.class); + } @After @@ -70,9 +61,9 @@ public class TestViewFsTrash { } @Test - public void testTrash() throws IOException { + public void testTrash() throws Exception { TestTrash.trashShell(conf, fileSystemTestHelper.getTestRootPath(fsView), - fsTarget, new Path(fsTarget.getHomeDirectory(), ".Trash/Current")); + fsView, new Path(fileSystemTestHelper.getTestRootPath(fsView), ".Trash/Current")); } }