HADOOP-8036. TestViewFsTrash assumes the user's home directory is 2 levels deep. Contributed by Colin Patrick McCabe

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1245751 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Eli Collins 2012-02-17 20:46:32 +00:00
parent 1425c65b5e
commit daf22e5f32
6 changed files with 27 additions and 68 deletions

View File

@ -201,6 +201,9 @@ Release 0.23.2 - UNRELEASED
HADOOP-8083 javadoc generation for some modules is not done under target/ (tucu) HADOOP-8083 javadoc generation for some modules is not done under target/ (tucu)
HADOOP-8036. TestViewFsTrash assumes the user's home directory is
2 levels deep. (Colin Patrick McCabe via eli)
Release 0.23.1 - 2012-02-08 Release 0.23.1 - 2012-02-08
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -37,15 +37,15 @@ public class TestFSMainOperationsLocalFileSystem extends FSMainOperationsBaseTes
public void setUp() throws Exception { public void setUp() throws Exception {
Configuration conf = new Configuration(); Configuration conf = new Configuration();
fcTarget = FileSystem.getLocal(conf); fcTarget = FileSystem.getLocal(conf);
fSys = ViewFileSystemTestSetup.setupForViewFs( fSys = ViewFileSystemTestSetup.setupForViewFileSystem(
ViewFileSystemTestSetup.configWithViewfsScheme(), fcTarget); ViewFileSystemTestSetup.createConfig(), fcTarget);
super.setUp(); super.setUp();
} }
@After @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
super.tearDown(); super.tearDown();
ViewFileSystemTestSetup.tearDownForViewFs(fcTarget); ViewFileSystemTestSetup.tearDown(fcTarget);
} }
@Test @Test

View File

@ -40,7 +40,7 @@ public class TestViewFileSystemDelegation { //extends ViewFileSystemTestSetup {
@BeforeClass @BeforeClass
public static void setup() throws Exception { public static void setup() throws Exception {
conf = ViewFileSystemTestSetup.configWithViewfsScheme(); conf = ViewFileSystemTestSetup.createConfig();
fs1 = setupFileSystem(new URI("fs1:/"), FakeFileSystem.class); fs1 = setupFileSystem(new URI("fs1:/"), FakeFileSystem.class);
fs2 = setupFileSystem(new URI("fs2:/"), FakeFileSystem.class); fs2 = setupFileSystem(new URI("fs2:/"), FakeFileSystem.class);
viewFs = FileSystem.get(FsConstants.VIEWFS_URI, conf); viewFs = FileSystem.get(FsConstants.VIEWFS_URI, conf);

View File

@ -35,7 +35,6 @@ import org.mortbay.log.Log;
public class TestViewFsTrash { 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;
Path targetTestRoot;
Configuration conf; Configuration conf;
static class TestLFS extends LocalFileSystem { static class TestLFS extends LocalFileSystem {
@ -55,53 +54,20 @@ public class TestViewFsTrash {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
fsTarget = FileSystem.getLocal(new Configuration()); fsTarget = FileSystem.getLocal(new Configuration());
targetTestRoot = FileSystemTestHelper.getAbsoluteTestRootPath(fsTarget); fsTarget.mkdirs(new Path(FileSystemTestHelper.
// In case previous test was killed before cleanup getTestRootPath(fsTarget), "dir1"));
fsTarget.delete(targetTestRoot, true); conf = ViewFileSystemTestSetup.createConfig();
// cleanup trash from previous run if it stuck around fsView = ViewFileSystemTestSetup.setupForViewFileSystem(conf, fsTarget);
fsTarget.delete(new Path(fsTarget.getHomeDirectory(), ".Trash/Current"),
true);
fsTarget.mkdirs(targetTestRoot);
fsTarget.mkdirs(new Path(targetTestRoot,"dir1"));
// Now we use the mount fs to set links to user and dir
// in the test root
// Set up the defaultMT in the config with our mount point links
conf = ViewFileSystemTestSetup.configWithViewfsScheme();
// create a link for home directory so that trash path works
// set up viewfs's home dir root to point to home dir root on target
// But home dir is different on linux, mac etc.
// Figure it out by calling home dir on target
String homeDirRoot = fsTarget.getHomeDirectory()
.getParent().toUri().getPath();
ConfigUtil.addLink(conf, homeDirRoot,
fsTarget.makeQualified(new Path(homeDirRoot)).toUri());
ConfigUtil.setHomeDirConf(conf, homeDirRoot);
Log.info("Home dir base " + homeDirRoot);
fsView = ViewFileSystemTestSetup.setupForViewFs(conf, fsTarget);
// set working dir so that relative paths
//fsView.setWorkingDirectory(new Path(fsTarget.getWorkingDirectory().toUri().getPath()));
conf.set("fs.defaultFS", FsConstants.VIEWFS_URI.toString()); conf.set("fs.defaultFS", FsConstants.VIEWFS_URI.toString());
} }
@After @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
fsTarget.delete(targetTestRoot, true); ViewFileSystemTestSetup.tearDown(fsTarget);
fsTarget.delete(new Path(fsTarget.getHomeDirectory(), ".Trash/Current"), fsTarget.delete(new Path(fsTarget.getHomeDirectory(), ".Trash/Current"),
true); true);
} }
@Test @Test
public void testTrash() throws IOException { public void testTrash() throws IOException {
TestTrash.trashShell(conf, FileSystemTestHelper.getTestRootPath(fsView), TestTrash.trashShell(conf, FileSystemTestHelper.getTestRootPath(fsView),

View File

@ -89,7 +89,7 @@ public class ViewFileSystemBaseTest {
// Set up the defaultMT in the config with our mount point links // Set up the defaultMT in the config with our mount point links
//Configuration conf = new Configuration(); //Configuration conf = new Configuration();
conf = ViewFileSystemTestSetup.configWithViewfsScheme(); conf = ViewFileSystemTestSetup.createConfig();
setupMountPoints(); setupMountPoints();
fsView = FileSystem.get(FsConstants.VIEWFS_URI, conf); fsView = FileSystem.get(FsConstants.VIEWFS_URI, conf);
} }

View File

@ -23,6 +23,7 @@ import org.apache.hadoop.fs.FileSystemTestHelper;
import org.apache.hadoop.fs.FsConstants; import org.apache.hadoop.fs.FsConstants;
import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.viewfs.ConfigUtil; import org.apache.hadoop.fs.viewfs.ConfigUtil;
import org.mortbay.log.Log;
/** /**
@ -46,32 +47,21 @@ public class ViewFileSystemTestSetup {
* @return return the ViewFS File context to be used for tests * @return return the ViewFS File context to be used for tests
* @throws Exception * @throws Exception
*/ */
static public FileSystem setupForViewFs(Configuration conf, FileSystem fsTarget) throws Exception { static public FileSystem setupForViewFileSystem(Configuration conf, FileSystem fsTarget) throws Exception {
/** /**
* create the test root on local_fs - the mount table will point here * create the test root on local_fs - the mount table will point here
*/ */
Path targetOfTests = FileSystemTestHelper.getTestRootPath(fsTarget); fsTarget.mkdirs(FileSystemTestHelper.getTestRootPath(fsTarget));
// In case previous test was killed before cleanup
fsTarget.delete(targetOfTests, true);
fsTarget.mkdirs(targetOfTests); // viewFs://home => fsTarget://home
String homeDirRoot = fsTarget.getHomeDirectory()
.getParent().toUri().getPath();
// Now set up a link from viewfs to targetfs for the first component of ConfigUtil.addLink(conf, homeDirRoot,
// path of testdir. For example, if testdir is /user/<userid>/xx then fsTarget.makeQualified(new Path(homeDirRoot)).toUri());
// a link from /user to targetfs://user. ConfigUtil.setHomeDirConf(conf, homeDirRoot);
Log.info("Home dir base " + homeDirRoot);
String testDir = FileSystemTestHelper.getTestRootPath(fsTarget).toUri().getPath();
int indexOf2ndSlash = testDir.indexOf('/', 1);
String testDirFirstComponent = testDir.substring(0, indexOf2ndSlash);
ConfigUtil.addLink(conf, testDirFirstComponent,
fsTarget.makeQualified(new Path(testDirFirstComponent)).toUri());
FileSystem fsView = FileSystem.get(FsConstants.VIEWFS_URI, conf); FileSystem fsView = FileSystem.get(FsConstants.VIEWFS_URI, conf);
//System.out.println("SRCOfTests = "+ getTestRootPath(fs, "test"));
//System.out.println("TargetOfTests = "+ targetOfTests.toUri());
return fsView; return fsView;
} }
@ -79,12 +69,12 @@ public class ViewFileSystemTestSetup {
* *
* delete the test directory in the target fs * delete the test directory in the target fs
*/ */
static public void tearDownForViewFs(FileSystem fsTarget) throws Exception { static public void tearDown(FileSystem fsTarget) throws Exception {
Path targetOfTests = FileSystemTestHelper.getTestRootPath(fsTarget); Path targetOfTests = FileSystemTestHelper.getTestRootPath(fsTarget);
fsTarget.delete(targetOfTests, true); fsTarget.delete(targetOfTests, true);
} }
public static Configuration configWithViewfsScheme() { public static Configuration createConfig() {
Configuration conf = new Configuration(); Configuration conf = new Configuration();
conf.set("fs.viewfs.impl", ViewFileSystem.class.getName()); conf.set("fs.viewfs.impl", ViewFileSystem.class.getName());
return conf; return conf;