Forráskód Böngészése

HADOOP-16532. Fix TestViewFsTrash to use the correct homeDir. Contributed by Xing Lin. (#3514)

(cherry picked from commit 97c0f968792e1a45a1569a3184af7b114fc8c022)
Xing Lin 3 éve
szülő
commit
2565ec5804

+ 4 - 3
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestTrash.java

@@ -117,9 +117,10 @@ public class TestTrash extends TestCase {
 
 
   /**
   /**
    * Test trash for the shell's delete command for the default file system
    * 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 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
    * @param trashRoot - the expected place where the trashbin resides
    * @throws IOException
    * @throws IOException
    */
    */
@@ -679,7 +680,7 @@ public class TestTrash extends TestCase {
     }
     }
   }
   }
 
 
-  static class TestLFS extends LocalFileSystem {
+  public static class TestLFS extends LocalFileSystem {
     Path home;
     Path home;
     TestLFS() {
     TestLFS() {
       this(TEST_DIR);
       this(TEST_DIR);

+ 16 - 25
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;
 package org.apache.hadoop.fs.viewfs;
 
 
-
-import java.io.IOException;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FileSystemTestHelper;
 import org.apache.hadoop.fs.FileSystemTestHelper;
 import org.apache.hadoop.fs.FsConstants;
 import org.apache.hadoop.fs.FsConstants;
-import org.apache.hadoop.fs.LocalFileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.TestTrash;
 import org.apache.hadoop.fs.TestTrash;
 import org.junit.After;
 import org.junit.After;
@@ -35,31 +31,26 @@ public class TestViewFsTrash {
   FileSystem fsTarget;  // the target file system - the mount will point here
   FileSystem fsTarget;  // the target file system - the mount will point here
   FileSystem fsView;
   FileSystem fsView;
   Configuration conf;
   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
   @Before
   public void setUp() throws Exception {
   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();
     conf = ViewFileSystemTestSetup.createConfig();
     fsView = ViewFileSystemTestSetup.setupForViewFileSystem(conf, fileSystemTestHelper, fsTarget);
     fsView = ViewFileSystemTestSetup.setupForViewFileSystem(conf, fileSystemTestHelper, fsTarget);
     conf.set("fs.defaultFS", FsConstants.VIEWFS_URI.toString());
     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
   @After
@@ -70,9 +61,9 @@ public class TestViewFsTrash {
   }
   }
   
   
   @Test
   @Test
-  public void testTrash() throws IOException {
+  public void testTrash() throws Exception {
     TestTrash.trashShell(conf, fileSystemTestHelper.getTestRootPath(fsView),
     TestTrash.trashShell(conf, fileSystemTestHelper.getTestRootPath(fsView),
-        fsTarget, new Path(fsTarget.getHomeDirectory(), ".Trash/Current"));
+        fsView, new Path(fileSystemTestHelper.getTestRootPath(fsView), ".Trash/Current"));
   }
   }
   
   
 }
 }