HDFS-3665. Add a test for renaming across file systems via a symlink. Contributed by Eli Collins
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1362177 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
cc1ee7203b
commit
572823c82c
|
@ -336,6 +336,8 @@ Branch-2 ( Unreleased changes )
|
|||
HDFS-3537. Move libhdfs and fuse-dfs source to native subdirectories.
|
||||
(Colin Patrick McCabe via eli)
|
||||
|
||||
HDFS-3665. Add a test for renaming across file systems via a symlink. (eli)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
HDFS-2982. Startup performance suffers when there are many edit log
|
||||
|
|
|
@ -97,7 +97,7 @@ public class TestFcHdfsSymlink extends FileContextSymlinkBaseTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
/** Link from Hdfs to LocalFs */
|
||||
/** Access a file using a link that spans Hdfs to LocalFs */
|
||||
public void testLinkAcrossFileSystems() throws IOException {
|
||||
Path localDir = new Path("file://"+getAbsoluteTestRootDir(fc)+"/test");
|
||||
Path localFile = new Path("file://"+getAbsoluteTestRootDir(fc)+"/test/file");
|
||||
|
@ -112,7 +112,42 @@ public class TestFcHdfsSymlink extends FileContextSymlinkBaseTest {
|
|||
readFile(link);
|
||||
assertEquals(fileSize, fc.getFileStatus(link).getLen());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
/** Test renaming a file across two file systems using a link */
|
||||
public void testRenameAcrossFileSystemsViaLink() throws IOException {
|
||||
Path localDir = new Path("file://"+getAbsoluteTestRootDir(fc)+"/test");
|
||||
Path hdfsFile = new Path(testBaseDir1(), "file");
|
||||
Path link = new Path(testBaseDir1(), "link");
|
||||
Path hdfsFileNew = new Path(testBaseDir1(), "fileNew");
|
||||
Path hdfsFileNewViaLink = new Path(link, "fileNew");
|
||||
FileContext localFc = FileContext.getLocalFSFileContext();
|
||||
localFc.delete(localDir, true);
|
||||
localFc.mkdir(localDir, FileContext.DEFAULT_PERM, true);
|
||||
localFc.setWorkingDirectory(localDir);
|
||||
createAndWriteFile(fc, hdfsFile);
|
||||
fc.createSymlink(localDir, link, false);
|
||||
// Rename hdfs://test1/file to hdfs://test1/link/fileNew
|
||||
// which renames to file://TEST_ROOT/test/fileNew which
|
||||
// spans AbstractFileSystems and therefore fails.
|
||||
try {
|
||||
fc.rename(hdfsFile, hdfsFileNewViaLink);
|
||||
fail("Renamed across file systems");
|
||||
} catch (InvalidPathException ipe) {
|
||||
// Expected
|
||||
}
|
||||
// Now rename hdfs://test1/link/fileNew to hdfs://test1/fileNew
|
||||
// which renames file://TEST_ROOT/test/fileNew to hdfs://test1/fileNew
|
||||
// which spans AbstractFileSystems and therefore fails.
|
||||
createAndWriteFile(fc, hdfsFileNewViaLink);
|
||||
try {
|
||||
fc.rename(hdfsFileNewViaLink, hdfsFileNew);
|
||||
fail("Renamed across file systems");
|
||||
} catch (InvalidPathException ipe) {
|
||||
// Expected
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
/** Test access a symlink using AbstractFileSystem */
|
||||
public void testAccessLinkFromAbstractFileSystem() throws IOException {
|
||||
|
|
Loading…
Reference in New Issue