Modified: hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java?rev=1563325&r1=1563324&r2=1563325&view=diff ============================================================================== --- hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java (original) +++ hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFS.java Fri Jan 31 23:02:45 2014 @@ -18,25 +18,9 @@ package org.apache.hadoop.hdfs.web; -import static org.apache.hadoop.fs.permission.AclEntryScope.ACCESS; -import static org.apache.hadoop.fs.permission.AclEntryScope.DEFAULT; -import static org.apache.hadoop.fs.permission.AclEntryType.GROUP; -import static org.apache.hadoop.fs.permission.AclEntryType.MASK; -import static org.apache.hadoop.fs.permission.AclEntryType.OTHER; -import static org.apache.hadoop.fs.permission.AclEntryType.USER; -import static org.apache.hadoop.fs.permission.FsAction.ALL; -import static org.apache.hadoop.fs.permission.FsAction.NONE; -import static org.apache.hadoop.fs.permission.FsAction.READ; -import static org.apache.hadoop.fs.permission.FsAction.READ_EXECUTE; -import static org.apache.hadoop.fs.permission.FsAction.READ_WRITE; -import static org.apache.hadoop.hdfs.server.namenode.AclTestHelpers.aclEntry; -import static org.junit.Assert.assertArrayEquals; - -import java.io.FileNotFoundException; import java.io.IOException; import java.net.URISyntaxException; import java.security.PrivilegedExceptionAction; -import java.util.List; import java.util.Random; import org.apache.commons.logging.Log; @@ -47,27 +31,18 @@ import org.apache.hadoop.fs.FSDataInputS import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; -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.DFSConfigKeys; import org.apache.hadoop.hdfs.HdfsConfiguration; import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.hdfs.TestDFSClientRetries; -import org.apache.hadoop.hdfs.protocol.AclException; import org.apache.hadoop.hdfs.server.namenode.web.resources.NamenodeWebHdfsMethods; -import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.security.UserGroupInformation; import org.apache.log4j.Level; -import org.junit.AfterClass; import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; -import com.google.common.collect.Lists; - /** Test WebHDFS */ public class TestWebHDFS { static final Log LOG = LogFactory.getLog(TestWebHDFS.class); @@ -76,35 +51,6 @@ public class TestWebHDFS { static final long systemStartTime = System.nanoTime(); - private static MiniDFSCluster testCluster; - private static Configuration testConf; - private static FileSystem testFs; - private static int pathCount = 0; - private static Path tmpPath; - - @BeforeClass - public static void init() throws Exception { - testConf = WebHdfsTestUtil.createConf(); - - testCluster = new MiniDFSCluster.Builder(testConf).numDataNodes(1).build(); - testCluster.waitActive(); - testFs = WebHdfsTestUtil.getWebHdfsFileSystem(testConf, WebHdfsFileSystem.SCHEME); - } - - @AfterClass - public static void shutdown() throws Exception { - IOUtils.cleanup(null, testFs); - if (testCluster != null) { - testCluster.shutdown(); - } - } - - @Before - public void setUp() { - pathCount += 1; - tmpPath = new Path("/p" + pathCount); - } - /** A timer for measuring performance. */ static class Ticker { final String name; @@ -354,648 +300,4 @@ public class TestWebHDFS { Assert.assertTrue(conf.getBoolean(DFSConfigKeys.DFS_WEBHDFS_ENABLED_KEY, false)); } - - @Test - public void testModifyAclEntries() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo", READ_EXECUTE), - aclEntry(DEFAULT, USER, "foo", READ_EXECUTE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", READ_EXECUTE), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", READ_EXECUTE), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - - - } - - @Test - public void testModifyAclEntriesOnlyAccess() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo", READ_EXECUTE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", READ_EXECUTE), - aclEntry(ACCESS, GROUP, READ_EXECUTE) }, returned); - } - - @Test - public void testModifyAclEntriesOnlyDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, "foo", READ_EXECUTE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", READ_EXECUTE), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testModifyAclEntriesMinimal() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo", READ_WRITE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", READ_WRITE), - aclEntry(ACCESS, GROUP, READ) }, returned); - } - - @Test - public void testModifyAclEntriesMinimalDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testModifyAclEntriesCustomMask() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, MASK, NONE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ) }, returned); - } - - @Test - public void testModifyAclEntriesStickyBit() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)01750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo", READ_EXECUTE), - aclEntry(DEFAULT, USER, "foo", READ_EXECUTE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", READ_EXECUTE), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", READ_EXECUTE), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test(expected=FileNotFoundException.class) - public void testModifyAclEntriesPathNotFound() throws IOException { - // Path has not been created. - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE)); - testFs.modifyAclEntries(tmpPath, aclSpec); - } - - @Test(expected=AclException.class) - public void testModifyAclEntriesDefaultOnFile() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.modifyAclEntries(tmpPath, aclSpec); - } - - @Test - public void testRemoveAclEntries() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo"), - aclEntry(DEFAULT, USER, "foo")); - testFs.removeAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testRemoveAclEntriesOnlyAccess() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, USER, "bar", READ_WRITE), - aclEntry(ACCESS, GROUP, READ_WRITE), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo")); - testFs.removeAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "bar", READ_WRITE), - aclEntry(ACCESS, GROUP, READ_WRITE) }, returned); - } - - @Test - public void testRemoveAclEntriesOnlyDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL), - aclEntry(DEFAULT, USER, "bar", READ_EXECUTE)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, "foo")); - testFs.removeAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "bar", READ_EXECUTE), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testRemoveAclEntriesMinimal() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_WRITE), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo"), - aclEntry(ACCESS, MASK)); - System.out.println("AclSpec :"+aclSpec); - testFs.removeAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { }, returned); - } - - - @Test - public void testRemoveAclEntriesMinimalDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo"), - aclEntry(ACCESS, MASK), - aclEntry(DEFAULT, USER, "foo"), - aclEntry(DEFAULT, MASK)); - testFs.removeAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testRemoveAclEntriesStickyBit() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)01750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo"), - aclEntry(DEFAULT, USER, "foo")); - testFs.removeAclEntries(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test(expected=FileNotFoundException.class) - public void testRemoveAclEntriesPathNotFound() throws IOException { - // Path has not been created. - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, "foo")); - testFs.removeAclEntries(tmpPath, aclSpec); - } - - @Test - public void testRemoveDefaultAcl() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - testFs.removeDefaultAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE) }, returned); - } - - @Test - public void testRemoveDefaultAclOnlyAccess() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - testFs.removeDefaultAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE) }, returned); - } - - @Test - public void testRemoveDefaultAclOnlyDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - testFs.removeDefaultAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { }, returned); - } - - @Test - public void testRemoveDefaultAclMinimal() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - testFs.removeDefaultAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { }, returned); - } - - @Test - public void testRemoveDefaultAclStickyBit() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)01750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - testFs.removeDefaultAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE) }, returned); - } - - @Test(expected=FileNotFoundException.class) - public void testRemoveDefaultAclPathNotFound() throws IOException { - // Path has not been created. - testFs.removeDefaultAcl(tmpPath); - } - - @Test - public void testRemoveAcl() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - testFs.removeAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { }, returned); - } - - @Test - public void testRemoveAclMinimalAcl() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - testFs.removeAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { }, returned); - } - - @Test - public void testRemoveAclStickyBit() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)01750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - testFs.removeAcl(tmpPath); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { }, returned); - } - - @Test(expected=FileNotFoundException.class) - public void testRemoveAclPathNotFound() throws IOException { - // Path has not been created. - testFs.removeAcl(tmpPath); - } - - @Test - public void testSetAcl() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, ALL), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testSetAclOnlyAccess() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, READ_WRITE), - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ) }, returned); - } - - @Test - public void testSetAclOnlyDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, ALL), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testSetAclMinimal() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, READ_WRITE), - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, READ_WRITE), - aclEntry(ACCESS, GROUP, READ), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { }, returned); - } - - @Test - public void testSetAclMinimalDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testSetAclCustomMask() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, READ_WRITE), - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ), - aclEntry(ACCESS, MASK, ALL), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ) }, returned); - } - - @Test - public void testSetAclStickyBit() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)01750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, ALL), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test(expected=FileNotFoundException.class) - public void testSetAclPathNotFound() throws IOException { - // Path has not been created. - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, READ_WRITE), - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - } - - @Test(expected=AclException.class) - public void testSetAclDefaultOnFile() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - } - - @Test - public void testSetPermission() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short)0700)); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, ALL), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } - - @Test - public void testSetPermissionOnlyAccess() throws IOException { - testFs.create(tmpPath).close(); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short) 0640)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, READ_WRITE), - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ), - aclEntry(ACCESS, OTHER, NONE)); - testFs.setAcl(tmpPath, aclSpec); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short)0600)); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(ACCESS, USER, "foo", READ), - aclEntry(ACCESS, GROUP, READ) }, returned); - } - - @Test - public void testSetPermissionOnlyDefault() throws IOException { - FileSystem.mkdirs(testFs, tmpPath, FsPermission.createImmutable((short)0750)); - List<AclEntry> aclSpec = Lists.newArrayList( - aclEntry(ACCESS, USER, ALL), - aclEntry(ACCESS, GROUP, READ_EXECUTE), - aclEntry(ACCESS, OTHER, NONE), - aclEntry(DEFAULT, USER, "foo", ALL)); - testFs.setAcl(tmpPath, aclSpec); - testFs.setPermission(tmpPath, FsPermission.createImmutable((short)0700)); - AclStatus s = testFs.getAclStatus(tmpPath); - AclEntry[] returned = s.getEntries().toArray(new AclEntry[0]); - assertArrayEquals(new AclEntry[] { - aclEntry(DEFAULT, USER, ALL), - aclEntry(DEFAULT, USER, "foo", ALL), - aclEntry(DEFAULT, GROUP, READ_EXECUTE), - aclEntry(DEFAULT, MASK, ALL), - aclEntry(DEFAULT, OTHER, NONE) }, returned); - } }
Added: hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFSAcl.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFSAcl.java?rev=1563325&view=auto ============================================================================== --- hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFSAcl.java (added) +++ hadoop/common/branches/HDFS-4685/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHDFSAcl.java Fri Jan 31 23:02:45 2014 @@ -0,0 +1,40 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hdfs.web; + +import static org.junit.Assert.*; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hdfs.MiniDFSCluster; +import org.apache.hadoop.hdfs.server.namenode.FSAclBaseTest; +import org.junit.BeforeClass; + +/** + * Tests ACL APIs via WebHDFS. + */ +public class TestWebHDFSAcl extends FSAclBaseTest { + + @BeforeClass + public static void init() throws Exception { + Configuration conf = WebHdfsTestUtil.createConf(); + cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).build(); + cluster.waitActive(); + fs = WebHdfsTestUtil.getWebHdfsFileSystem(conf, WebHdfsFileSystem.SCHEME); + assertTrue(fs instanceof WebHdfsFileSystem); + } +}