Revert "HDFS-10430. Reuse FileSystem#access in TestAsyncDFS. Contributed by Xiaobing Zhou."
This reverts commit 21890c4239
.
This commit is contained in:
parent
5360da8bd9
commit
8cf47d8589
@ -34,6 +34,7 @@
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.PrivilegedExceptionAction;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -45,16 +46,19 @@
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.fs.CommonConfigurationKeys;
|
||||
import org.apache.hadoop.fs.FileStatus;
|
||||
import org.apache.hadoop.fs.FileSystem;
|
||||
import org.apache.hadoop.fs.Path;
|
||||
import org.apache.hadoop.fs.Options.Rename;
|
||||
import org.apache.hadoop.fs.permission.AclEntry;
|
||||
import org.apache.hadoop.fs.permission.AclStatus;
|
||||
import org.apache.hadoop.fs.permission.FsAction;
|
||||
import org.apache.hadoop.fs.permission.FsPermission;
|
||||
import org.apache.hadoop.hdfs.TestDFSPermission.PermissionGenerator;
|
||||
import org.apache.hadoop.hdfs.server.namenode.AclTestHelpers;
|
||||
import org.apache.hadoop.hdfs.server.namenode.FSAclBaseTest;
|
||||
import org.apache.hadoop.ipc.AsyncCallLimitExceededException;
|
||||
import org.apache.hadoop.security.AccessControlException;
|
||||
import org.apache.hadoop.security.UserGroupInformation;
|
||||
import org.apache.hadoop.util.Time;
|
||||
import org.junit.After;
|
||||
@ -441,7 +445,7 @@ public void testConcurrentAsyncAPI() throws Exception {
|
||||
for (int i = 0; i < NUM_TESTS; i++) {
|
||||
assertTrue(fs.exists(dsts[i]));
|
||||
FsPermission fsPerm = new FsPermission(permissions[i]);
|
||||
fs.access(dsts[i], fsPerm.getUserAction());
|
||||
checkAccessPermissions(fs.getFileStatus(dsts[i]), fsPerm.getUserAction());
|
||||
}
|
||||
|
||||
// test setOwner
|
||||
@ -470,4 +474,34 @@ public void testConcurrentAsyncAPI() throws Exception {
|
||||
assertTrue("group2".equals(fs.getFileStatus(dsts[i]).getGroup()));
|
||||
}
|
||||
}
|
||||
|
||||
static void checkAccessPermissions(FileStatus stat, FsAction mode)
|
||||
throws IOException {
|
||||
checkAccessPermissions(UserGroupInformation.getCurrentUser(), stat, mode);
|
||||
}
|
||||
|
||||
static void checkAccessPermissions(final UserGroupInformation ugi,
|
||||
FileStatus stat, FsAction mode) throws IOException {
|
||||
FsPermission perm = stat.getPermission();
|
||||
String user = ugi.getShortUserName();
|
||||
List<String> groups = Arrays.asList(ugi.getGroupNames());
|
||||
|
||||
if (user.equals(stat.getOwner())) {
|
||||
if (perm.getUserAction().implies(mode)) {
|
||||
return;
|
||||
}
|
||||
} else if (groups.contains(stat.getGroup())) {
|
||||
if (perm.getGroupAction().implies(mode)) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (perm.getOtherAction().implies(mode)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new AccessControlException(String.format(
|
||||
"Permission denied: user=%s, path=\"%s\":%s:%s:%s%s", user, stat
|
||||
.getPath(), stat.getOwner(), stat.getGroup(),
|
||||
stat.isDirectory() ? "d" : "-", perm));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user