public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() {
@Override protected void runPlainPath(AlluxioURI path, CommandLine cl) throws AlluxioException, IOException { ListStatusPOptions listOptions = ListStatusPOptions.newBuilder().setRecursive(true).build(); List<URIStatus> statuses = mFileSystem.listStatus(path, listOptions); if (statuses == null || statuses.size() == 0) { return; } getSizeInfo(path, statuses, cl.hasOption(READABLE_OPTION_NAME), cl.hasOption(SUMMARIZE_OPTION_NAME), cl.hasOption(MEMORY_OPTION_NAME)); }
/** * <code>optional .alluxio.grpc.file.ListStatusPOptions options = 2;</code> */ public Builder mergeOptions(alluxio.grpc.ListStatusPOptions value) { if (optionsBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && options_ != null && options_ != alluxio.grpc.ListStatusPOptions.getDefaultInstance()) { options_ = alluxio.grpc.ListStatusPOptions.newBuilder(options_).mergeFrom(value).buildPartial(); } else { options_ = value; } onChanged(); } else { optionsBuilder_.mergeFrom(value); } bitField0_ |= 0x00000002; return this; } /**
/** * @return Master side defaults for {@link ListStatusPOptions} */ public static ListStatusPOptions listStatusDefaults() { return ListStatusPOptions.newBuilder() .setCommonOptions(commonDefaults()) .setLoadMetadataType(GrpcUtils.toProto(ServerConfiguration .getEnum(PropertyKey.USER_FILE_METADATA_LOAD_TYPE, LoadMetadataType.class))) .build(); }
@Test public void ignoreInvalidFiles() throws Exception { FileUtils.createDir(Paths.get(mUnderFS, "test").toString()); FileUtils.createFile(Paths.get(mUnderFS, "test", "a?b=C").toString()); FileUtils.createFile(Paths.get(mUnderFS, "test", "valid").toString()); List<FileInfo> listing = mFileSystemMaster.listStatus(new AlluxioURI("/test"), ListStatusContext.defaults(ListStatusPOptions.newBuilder() .setLoadMetadataType(LoadMetadataPType.ALWAYS).setRecursive(true))); assertEquals(1, listing.size()); assertEquals("valid", listing.get(0).getName()); }
private int countPaths() throws Exception { return 1 + mFileSystemMaster .listStatus(new AlluxioURI("/"), ListStatusContext.defaults(ListStatusPOptions.newBuilder().setRecursive(true))) .size(); }
ListStatusPOptions.Builder optionsBuilder = ListStatusPOptions.newBuilder(); if (forceLoadMetadata) { optionsBuilder.setLoadMetadataType(LoadMetadataPType.ALWAYS);
.newBuilder().setLoadMetadataType(LoadMetadataPType.ONCE).setRecursive(false))); .newBuilder().setLoadMetadataType(LoadMetadataPType.ONCE).setRecursive(false))); assertEquals(files + 1 , infos.size()); .newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS).setRecursive(false))); assertEquals(files + 2, infos.size()); .newBuilder().setLoadMetadataType(LoadMetadataPType.ONCE).setRecursive(true))); .newBuilder().setLoadMetadataType(LoadMetadataPType.ONCE).setRecursive(true))); assertEquals(files + files + 2 + 2 + 1, infos.size()); .newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS).setRecursive(true))); assertEquals(files + files + 2 + 2 + 2, infos.size());
private void loadPersistedDirectoryLevel(int levels, AlluxioURI alluxioTop) throws Exception { if (levels <= 0) { return; } mFileSystemMaster.listStatus(alluxioTop, ListStatusContext .defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS))); for (int i = 0; i < DIR_WIDTH; ++i) { loadPersistedDirectoryLevel(levels - 1, alluxioTop.join(DIR_PREFIX + i)); } }
.newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS).setRecursive(true)));
@Test public void setRecursiveAcl() throws Exception { final int files = 10; SetAclContext context = SetAclContext.defaults(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.defaults(ListStatusPOptions .newBuilder().setLoadMetadataType(LoadMetadataPType.ONCE).setRecursive(true))); assertEquals(files * 3 + 3, infos.size()); for (FileInfo info : infos) { assertEquals(newEntries, Sets.newHashSet(info.convertAclToStringEntries())); } }
.defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.NEVER))); assertEquals(files, infos.size()); .defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.NEVER))); assertEquals(1, infos.size()); assertEquals(ROOT_FILE_URI.getPath(), infos.get(0).getPath()); .defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.NEVER))); assertEquals(files, infos.size()); .defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.NEVER))); fail("listStatus() for a non-existent URI should fail."); } catch (FileDoesNotExistException e) {
private void loadPersistedDirectories(int levels) throws Exception { // load persisted ufs entries to alluxio mFileSystemMaster.listStatus(new AlluxioURI(MOUNT_URI), ListStatusContext .defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS))); loadPersistedDirectoryLevel(levels, new AlluxioURI(MOUNT_URI).join(DIR_TOP_LEVEL)); }
ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS))); } catch (FileDoesNotExistException e) { response.setInvalidPathError("Error: Invalid Path " + e.getMessage());
@Test public void listStatusWithLoadMetadataNever() throws Exception { AlluxioURI ufsMount = new AlluxioURI(mTestFolder.newFolder().getAbsolutePath()); mFileSystemMaster.createDirectory(new AlluxioURI("/mnt/"), CreateDirectoryContext.defaults()); // Create ufs file. Files.createDirectory(Paths.get(ufsMount.join("dir1").getPath())); Files.createFile(Paths.get(ufsMount.join("dir1").join("file1").getPath())); Files.createFile(Paths.get(ufsMount.join("dir1").join("file2").getPath())); mFileSystemMaster.mount(new AlluxioURI("/mnt/local"), ufsMount, MountContext.defaults()); // 3 directories exist. assertEquals(3, countPaths()); // getFileId should load metadata automatically. AlluxioURI uri = new AlluxioURI("/mnt/local/dir1"); try { mFileSystemMaster.listStatus(uri, ListStatusContext .defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.NEVER))); fail("Exception expected"); } catch (FileDoesNotExistException e) { // Expected case. } assertEquals(3, countPaths()); }
.defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS))); Set<String> paths = new HashSet<>(); for (FileInfo fileInfo : fileInfoList) {
@Test public void listStatusRecursivePermissions() throws Exception { final int files = 10; List<FileInfo> infos; List<String> filenames; // 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 with permissions mFileSystemMaster.setAttribute(NESTED_URI, SetAttributeContext.defaults(SetAttributePOptions .newBuilder().setMode(new Mode((short) 0400).toProto()).setRecursive(true))); try (Closeable r = new AuthenticatedUserRule("test_user1", ServerConfiguration.global()) .toResource()) { // Test recursive listStatus infos = mFileSystemMaster.listStatus(ROOT_URI, ListStatusContext.defaults(ListStatusPOptions .newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS).setRecursive(true))); // 10 files in each directory, 1 level of directories assertEquals(files + 1, infos.size()); } }
/** * Tests the {@link FileSystemMaster#delete(AlluxioURI, DeleteContext)} method for * a directory. */ @Test public void deleteDir() throws Exception { createFileWithSingleBlock(NESTED_FILE_URI); // delete the dir mFileSystemMaster.delete(NESTED_URI, DeleteContext.defaults(DeletePOptions.newBuilder().setRecursive(true))); // verify the dir is deleted assertEquals(-1, mFileSystemMaster.getFileId(NESTED_URI)); AlluxioURI ufsMount = new AlluxioURI(mTestFolder.newFolder().getAbsolutePath()); mFileSystemMaster.createDirectory(new AlluxioURI("/mnt/"), CreateDirectoryContext.defaults()); // Create ufs file. Files.createDirectory(Paths.get(ufsMount.join("dir1").getPath())); mFileSystemMaster.mount(new AlluxioURI("/mnt/local"), ufsMount, MountContext.defaults()); // load the dir1 to alluxio mFileSystemMaster.listStatus(new AlluxioURI("/mnt/local"), ListStatusContext .defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS))); mFileSystemMaster.delete(new AlluxioURI("/mnt/local/dir1"), DeleteContext .defaults(DeletePOptions.newBuilder().setRecursive(true).setAlluxioOnly(true))); // ufs directory still exists assertTrue(Files.exists(Paths.get(ufsMount.join("dir1").getPath()))); // verify the directory is deleted Files.delete(Paths.get(ufsMount.join("dir1").getPath())); assertEquals(IdUtils.INVALID_FILE_ID, mFileSystemMaster.getFileId(new AlluxioURI("/mnt/local/dir1"))); }
.defaults(ListStatusPOptions.newBuilder().setLoadMetadataType(LoadMetadataPType.ALWAYS))); mFileSystemMaster.delete(new AlluxioURI("/mnt/local/dir1/file1"), DeleteContext.defaults(DeletePOptions.newBuilder().setAlluxioOnly(true)));