public virtual void TestRootACLAfterLoadingFsImage() { DistributedFileSystem fs = cluster.GetFileSystem(); Path rootdir = new Path("/"); AclEntry e1 = new AclEntry.Builder().SetName("foo").SetPermission(FsAction.All).SetScope (AclEntryScope.Access).SetType(AclEntryType.Group).Build(); AclEntry e2 = new AclEntry.Builder().SetName("bar").SetPermission(FsAction.Read). SetScope(AclEntryScope.Access).SetType(AclEntryType.Group).Build(); fs.ModifyAclEntries(rootdir, Lists.NewArrayList(e1, e2)); AclStatus s = cluster.GetNamesystem().GetAclStatus(rootdir.ToString()); AclEntry[] returned = Sharpen.Collections.ToArray(Lists.NewArrayList(s.GetEntries ()), new AclEntry[0]); Assert.AssertArrayEquals(new AclEntry[] { AclTestHelpers.AclEntry(AclEntryScope.Access , AclEntryType.Group, FsAction.ReadExecute), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, "bar", FsAction.Read), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, "foo", FsAction.All) }, returned); // restart - hence save and load from fsimage Restart(fs, true); s = cluster.GetNamesystem().GetAclStatus(rootdir.ToString()); returned = Sharpen.Collections.ToArray(Lists.NewArrayList(s.GetEntries()), new AclEntry [0]); Assert.AssertArrayEquals(new AclEntry[] { AclTestHelpers.AclEntry(AclEntryScope.Access , AclEntryType.Group, FsAction.ReadExecute), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, "bar", FsAction.Read), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, "foo", FsAction.All) }, returned); }
public virtual void TestModifyAclEntries() { InitCluster(true, false); fs.Mkdirs(Path); ExpectException(); fs.ModifyAclEntries(Path, Lists.NewArrayList(AclTestHelpers.AclEntry(AclEntryScope .Default, AclEntryType.User, "foo", FsAction.ReadWrite))); }
/// <exception cref="System.IO.IOException"/> private void TestAcl(bool persistNamespace) { Path p = new Path("/p"); DistributedFileSystem fs = cluster.GetFileSystem(); fs.Create(p).Close(); fs.Mkdirs(new Path("/23")); AclEntry e = new AclEntry.Builder().SetName("foo").SetPermission(FsAction.ReadExecute ).SetScope(AclEntryScope.Access).SetType(AclEntryType.User).Build(); fs.ModifyAclEntries(p, Lists.NewArrayList(e)); Restart(fs, persistNamespace); AclStatus s = cluster.GetNamesystem().GetAclStatus(p.ToString()); AclEntry[] returned = Sharpen.Collections.ToArray(Lists.NewArrayList(s.GetEntries ()), new AclEntry[0]); Assert.AssertArrayEquals(new AclEntry[] { AclTestHelpers.AclEntry(AclEntryScope.Access , AclEntryType.User, "foo", FsAction.ReadExecute), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, FsAction.Read) }, returned); fs.RemoveAcl(p); if (persistNamespace) { fs.SetSafeMode(HdfsConstants.SafeModeAction.SafemodeEnter); fs.SaveNamespace(); fs.SetSafeMode(HdfsConstants.SafeModeAction.SafemodeLeave); } cluster.RestartNameNode(); cluster.WaitActive(); s = cluster.GetNamesystem().GetAclStatus(p.ToString()); returned = Sharpen.Collections.ToArray(Lists.NewArrayList(s.GetEntries()), new AclEntry [0]); Assert.AssertArrayEquals(new AclEntry[] { }, returned); fs.ModifyAclEntries(p, Lists.NewArrayList(e)); s = cluster.GetNamesystem().GetAclStatus(p.ToString()); returned = Sharpen.Collections.ToArray(Lists.NewArrayList(s.GetEntries()), new AclEntry [0]); Assert.AssertArrayEquals(new AclEntry[] { AclTestHelpers.AclEntry(AclEntryScope.Access , AclEntryType.User, "foo", FsAction.ReadExecute), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, FsAction.Read) }, returned); }
/// <exception cref="System.IO.IOException"/> private void DoTestDefaultAclNewChildren(bool persistNamespace) { Path dirPath = new Path("/dir"); Path filePath = new Path(dirPath, "file1"); Path subdirPath = new Path(dirPath, "subdir1"); DistributedFileSystem fs = cluster.GetFileSystem(); fs.Mkdirs(dirPath); IList <AclEntry> aclSpec = Lists.NewArrayList(AclTestHelpers.AclEntry(AclEntryScope .Default, AclEntryType.User, "foo", FsAction.All)); fs.SetAcl(dirPath, aclSpec); fs.Create(filePath).Close(); fs.Mkdirs(subdirPath); AclEntry[] fileExpected = new AclEntry[] { AclTestHelpers.AclEntry(AclEntryScope. Access, AclEntryType.User, "foo", FsAction.All), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, FsAction.ReadExecute) }; AclEntry[] subdirExpected = new AclEntry[] { AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.User, "foo", FsAction.All), AclTestHelpers.AclEntry(AclEntryScope .Access, AclEntryType.Group, FsAction.ReadExecute), AclTestHelpers.AclEntry(AclEntryScope .Default, AclEntryType.User, FsAction.All), AclTestHelpers.AclEntry(AclEntryScope .Default, AclEntryType.User, "foo", FsAction.All), AclTestHelpers.AclEntry(AclEntryScope .Default, AclEntryType.Group, FsAction.ReadExecute), AclTestHelpers.AclEntry(AclEntryScope .Default, AclEntryType.Mask, FsAction.All), AclTestHelpers.AclEntry(AclEntryScope .Default, AclEntryType.Other, FsAction.ReadExecute) }; AclEntry[] fileReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(filePath).GetEntries (), new AclEntry[0]); Assert.AssertArrayEquals(fileExpected, fileReturned); AclEntry[] subdirReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(subdirPath ).GetEntries(), new AclEntry[0]); Assert.AssertArrayEquals(subdirExpected, subdirReturned); AclTestHelpers.AssertPermission(fs, subdirPath, (short)0x11ed); Restart(fs, persistNamespace); fileReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(filePath).GetEntries() , new AclEntry[0]); Assert.AssertArrayEquals(fileExpected, fileReturned); subdirReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(subdirPath).GetEntries (), new AclEntry[0]); Assert.AssertArrayEquals(subdirExpected, subdirReturned); AclTestHelpers.AssertPermission(fs, subdirPath, (short)0x11ed); aclSpec = Lists.NewArrayList(AclTestHelpers.AclEntry(AclEntryScope.Default, AclEntryType .User, "foo", FsAction.ReadWrite)); fs.ModifyAclEntries(dirPath, aclSpec); fileReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(filePath).GetEntries() , new AclEntry[0]); Assert.AssertArrayEquals(fileExpected, fileReturned); subdirReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(subdirPath).GetEntries (), new AclEntry[0]); Assert.AssertArrayEquals(subdirExpected, subdirReturned); AclTestHelpers.AssertPermission(fs, subdirPath, (short)0x11ed); Restart(fs, persistNamespace); fileReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(filePath).GetEntries() , new AclEntry[0]); Assert.AssertArrayEquals(fileExpected, fileReturned); subdirReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(subdirPath).GetEntries (), new AclEntry[0]); Assert.AssertArrayEquals(subdirExpected, subdirReturned); AclTestHelpers.AssertPermission(fs, subdirPath, (short)0x11ed); fs.RemoveAcl(dirPath); fileReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(filePath).GetEntries() , new AclEntry[0]); Assert.AssertArrayEquals(fileExpected, fileReturned); subdirReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(subdirPath).GetEntries (), new AclEntry[0]); Assert.AssertArrayEquals(subdirExpected, subdirReturned); AclTestHelpers.AssertPermission(fs, subdirPath, (short)0x11ed); Restart(fs, persistNamespace); fileReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(filePath).GetEntries() , new AclEntry[0]); Assert.AssertArrayEquals(fileExpected, fileReturned); subdirReturned = Sharpen.Collections.ToArray(fs.GetAclStatus(subdirPath).GetEntries (), new AclEntry[0]); Assert.AssertArrayEquals(subdirExpected, subdirReturned); AclTestHelpers.AssertPermission(fs, subdirPath, (short)0x11ed); }