HDFS-16628. RBF: Correct target directory when move to trash for kerberos login user. (#4974)
Signed-off-by: Akira Ajisaka <aajisaka@apache.org>
This commit is contained in:
parent
6847ec0647
commit
760144f135
|
@ -359,7 +359,7 @@ public class MountTableResolver
|
|||
public static String getTrashRoot() throws IOException {
|
||||
// Gets the Trash directory for the current user.
|
||||
return FileSystem.USER_HOME_PREFIX + "/" +
|
||||
RouterRpcServer.getRemoteUser().getUserName() + "/" +
|
||||
RouterRpcServer.getRemoteUser().getShortUserName() + "/" +
|
||||
FileSystem.TRASH_PREFIX;
|
||||
}
|
||||
|
||||
|
|
|
@ -189,6 +189,44 @@ public class TestRouterTrash {
|
|||
assertEquals(2, fileStatuses.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMoveToTrashWithKerberosUser() throws IOException,
|
||||
URISyntaxException, InterruptedException {
|
||||
//Constructs the structure of the KerBoers user name
|
||||
String kerberosUser = "randomUser/dev@HADOOP.COM";
|
||||
UserGroupInformation ugi = UserGroupInformation.createRemoteUser(kerberosUser);
|
||||
MountTable addEntry = MountTable.newInstance(MOUNT_POINT,
|
||||
Collections.singletonMap(ns1, MOUNT_POINT));
|
||||
assertTrue(addMountTable(addEntry));
|
||||
// current user client
|
||||
MiniRouterDFSCluster.NamenodeContext nn1Context = cluster.getNamenode(ns1, null);
|
||||
DFSClient currentUserClientNs0 = nnContext.getClient();
|
||||
DFSClient currentUserClientNs1 = nn1Context.getClient();
|
||||
|
||||
currentUserClientNs0.setOwner("/", ugi.getShortUserName(), ugi.getShortUserName());
|
||||
currentUserClientNs1.setOwner("/", ugi.getShortUserName(), ugi.getShortUserName());
|
||||
|
||||
// test user client
|
||||
DFSClient testUserClientNs1 = nn1Context.getClient(ugi);
|
||||
testUserClientNs1.mkdirs(MOUNT_POINT, new FsPermission("777"), true);
|
||||
assertTrue(testUserClientNs1.exists(MOUNT_POINT));
|
||||
// create test file
|
||||
testUserClientNs1.create(FILE, true);
|
||||
Path filePath = new Path(FILE);
|
||||
|
||||
FileStatus[] fileStatuses = routerFs.listStatus(filePath);
|
||||
assertEquals(1, fileStatuses.length);
|
||||
assertEquals(ugi.getShortUserName(), fileStatuses[0].getOwner());
|
||||
// move to Trash
|
||||
Configuration routerConf = routerContext.getConf();
|
||||
FileSystem fs = DFSTestUtil.getFileSystemAs(ugi, routerConf);
|
||||
Trash trash = new Trash(fs, routerConf);
|
||||
assertTrue(trash.moveToTrash(filePath));
|
||||
fileStatuses = fs.listStatus(
|
||||
new Path("/user/" + ugi.getShortUserName() + "/.Trash/Current" + MOUNT_POINT));
|
||||
assertEquals(1, fileStatuses.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteToTrashExistMountPoint() throws IOException,
|
||||
URISyntaxException, InterruptedException {
|
||||
|
|
Loading…
Reference in New Issue