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.
|
HDFS-3537. Move libhdfs and fuse-dfs source to native subdirectories.
|
||||||
(Colin Patrick McCabe via eli)
|
(Colin Patrick McCabe via eli)
|
||||||
|
|
||||||
|
HDFS-3665. Add a test for renaming across file systems via a symlink. (eli)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
HDFS-2982. Startup performance suffers when there are many edit log
|
HDFS-2982. Startup performance suffers when there are many edit log
|
||||||
|
@ -97,7 +97,7 @@ public static void testTearDown() throws Exception {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
/** Link from Hdfs to LocalFs */
|
/** Access a file using a link that spans Hdfs to LocalFs */
|
||||||
public void testLinkAcrossFileSystems() throws IOException {
|
public void testLinkAcrossFileSystems() throws IOException {
|
||||||
Path localDir = new Path("file://"+getAbsoluteTestRootDir(fc)+"/test");
|
Path localDir = new Path("file://"+getAbsoluteTestRootDir(fc)+"/test");
|
||||||
Path localFile = new Path("file://"+getAbsoluteTestRootDir(fc)+"/test/file");
|
Path localFile = new Path("file://"+getAbsoluteTestRootDir(fc)+"/test/file");
|
||||||
@ -113,6 +113,41 @@ public void testLinkAcrossFileSystems() throws IOException {
|
|||||||
assertEquals(fileSize, fc.getFileStatus(link).getLen());
|
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
|
||||||
/** Test access a symlink using AbstractFileSystem */
|
/** Test access a symlink using AbstractFileSystem */
|
||||||
public void testAccessLinkFromAbstractFileSystem() throws IOException {
|
public void testAccessLinkFromAbstractFileSystem() throws IOException {
|
||||||
|
Loading…
Reference in New Issue
Block a user