use of alluxio.master.file.contexts.SetAclContext in project alluxio by Alluxio.
the class FileSystemMasterTest method setRecursiveAcl.
@Test
public void setRecursiveAcl() throws Exception {
final int files = 10;
SetAclContext context = SetAclContext.mergeFrom(SetAclPOptions.newBuilder().setRecursive(true));
// Test files in root directory.
for (int i = 0; i < files; i++) {
createFileWithSingleBlock(ROOT_URI.join("file" + String.format("%05d", i)));
}
// Test files in nested directory.
for (int i = 0; i < files; i++) {
createFileWithSingleBlock(NESTED_URI.join("file" + String.format("%05d", i)));
}
// Test files in nested directory.
for (int i = 0; i < files; i++) {
createFileWithSingleBlock(NESTED_DIR_URI.join("file" + String.format("%05d", i)));
}
// replace
Set<String> newEntries = Sets.newHashSet("user::rw-", "group::r-x", "other::-wx");
mFileSystemMaster.setAcl(ROOT_URI, SetAclAction.REPLACE, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
List<FileInfo> infos = mFileSystemMaster.listStatus(ROOT_URI, ListStatusContext.mergeFrom(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.ONCE).setRecursive(true)));
assertEquals(files * 3 + 3, infos.size());
for (FileInfo info : infos) {
assertEquals(newEntries, Sets.newHashSet(info.convertAclToStringEntries()));
}
}
use of alluxio.master.file.contexts.SetAclContext in project alluxio by Alluxio.
the class FileSystemMasterTest method setAcl.
@Test
public void setAcl() throws Exception {
SetAclContext context = SetAclContext.defaults();
createFileWithSingleBlock(NESTED_FILE_URI);
Set<String> entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertEquals(3, entries.size());
// replace
Set<String> newEntries = Sets.newHashSet("user::rwx", "group::rwx", "other::rwx");
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.REPLACE, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertEquals(newEntries, entries);
// replace
newEntries = Sets.newHashSet("user::rw-", "group::r--", "other::r--");
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.REPLACE, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertEquals(newEntries, entries);
// modify existing
newEntries = Sets.newHashSet("user::rwx", "group::r--", "other::r-x");
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertEquals(newEntries, entries);
// modify add
Set<String> oldEntries = new HashSet<>(entries);
newEntries = Sets.newHashSet("user:usera:---", "group:groupa:--x");
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertTrue(entries.containsAll(oldEntries));
assertTrue(entries.containsAll(newEntries));
// check if the mask got updated correctly
assertTrue(entries.contains("mask::r-x"));
// modify existing and add
newEntries = Sets.newHashSet("user:usera:---", "group:groupa:--x", "other::r-x");
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertTrue(entries.containsAll(newEntries));
// remove all
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.REMOVE_ALL, Collections.emptyList(), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertEquals(3, entries.size());
// remove
newEntries = Sets.newHashSet("user:usera:---", "user:userb:rwx", "group:groupa:--x", "group:groupb:-wx");
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
oldEntries = new HashSet<>(entries);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
assertTrue(entries.containsAll(oldEntries));
Set<String> deleteEntries = Sets.newHashSet("user:userb:rwx", "group:groupa:--x");
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.REMOVE, deleteEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_FILE_URI, GET_STATUS_CONTEXT).convertAclToStringEntries());
Set<String> remainingEntries = new HashSet<>(newEntries);
assertTrue(remainingEntries.removeAll(deleteEntries));
assertTrue(entries.containsAll(remainingEntries));
final Set<String> finalEntries = entries;
assertTrue(deleteEntries.stream().noneMatch(finalEntries::contains));
}
use of alluxio.master.file.contexts.SetAclContext in project alluxio by Alluxio.
the class FileSystemMasterTest method setDefaultAclforFile.
@Test
public void setDefaultAclforFile() throws Exception {
SetAclContext context = SetAclContext.defaults();
createFileWithSingleBlock(NESTED_FILE_URI);
Set<String> newEntries = Sets.newHashSet("default:user::rwx", "default:group::rwx", "default:other::r-x");
mThrown.expect(UnsupportedOperationException.class);
mFileSystemMaster.setAcl(NESTED_FILE_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
}
use of alluxio.master.file.contexts.SetAclContext in project alluxio by Alluxio.
the class FileSystemMasterTest method setDefaultAcl.
@Test
public void setDefaultAcl() throws Exception {
SetAclContext context = SetAclContext.defaults();
createFileWithSingleBlock(NESTED_FILE_URI);
Set<String> entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertEquals(0, entries.size());
// replace
Set<String> newEntries = Sets.newHashSet("default:user::rwx", "default:group::rwx", "default:other::r-x");
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.REPLACE, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertEquals(newEntries, entries);
// replace
newEntries = Sets.newHashSet("default:user::rw-", "default:group::r--", "default:other::r--");
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.REPLACE, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertEquals(newEntries, entries);
// modify existing
newEntries = Sets.newHashSet("default:user::rwx", "default:group::rw-", "default:other::r-x");
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertEquals(newEntries, entries);
// modify add
Set<String> oldEntries = new HashSet<>(entries);
newEntries = Sets.newHashSet("default:user:usera:---", "default:group:groupa:--x");
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertTrue(entries.containsAll(oldEntries));
assertTrue(entries.containsAll(newEntries));
assertTrue(entries.contains("default:mask::rwx"));
// modify existing and add
newEntries = Sets.newHashSet("default:user:usera:---", "default:group:groupa:--x", "default:other::r-x");
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertTrue(entries.containsAll(newEntries));
// remove default
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.REMOVE_DEFAULT, Collections.emptyList(), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertEquals(0, entries.size());
// remove
newEntries = Sets.newHashSet("default:user:usera:---", "default:user:userb:rwx", "default:group:groupa:--x", "default:group:groupb:-wx");
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.MODIFY, newEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
oldEntries = new HashSet<>(entries);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
assertTrue(entries.containsAll(oldEntries));
Set<String> deleteEntries = Sets.newHashSet("default:user:userb:rwx", "default:group:groupa:--x");
mFileSystemMaster.setAcl(NESTED_URI, SetAclAction.REMOVE, deleteEntries.stream().map(AclEntry::fromCliString).collect(Collectors.toList()), context);
entries = Sets.newHashSet(mFileSystemMaster.getFileInfo(NESTED_URI, GET_STATUS_CONTEXT).convertDefaultAclToStringEntries());
Set<String> remainingEntries = new HashSet<>(newEntries);
assertTrue(remainingEntries.removeAll(deleteEntries));
assertTrue(entries.containsAll(remainingEntries));
final Set<String> finalEntries = entries;
assertTrue(deleteEntries.stream().noneMatch(finalEntries::contains));
}
Aggregations