|
@@ -157,13 +157,22 @@ public class TestListOpenFiles {
|
|
remainingFiles.size() == 0);
|
|
remainingFiles.size() == 0);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Verify all open files.
|
|
|
|
+ */
|
|
private void verifyOpenFiles(Map<Path, FSDataOutputStream> openFiles)
|
|
private void verifyOpenFiles(Map<Path, FSDataOutputStream> openFiles)
|
|
throws IOException {
|
|
throws IOException {
|
|
- verifyOpenFiles(openFiles, EnumSet.of(OpenFilesType.ALL_OPEN_FILES),
|
|
|
|
- OpenFilesIterator.FILTER_PATH_DEFAULT);
|
|
|
|
|
|
+ verifyOpenFiles(openFiles, OpenFilesIterator.FILTER_PATH_DEFAULT);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Verify open files with specified filter path.
|
|
|
|
+ */
|
|
|
|
+ private void verifyOpenFiles(Map<Path, FSDataOutputStream> openFiles,
|
|
|
|
+ String path) throws IOException {
|
|
|
|
+ verifyOpenFiles(openFiles, EnumSet.of(OpenFilesType.ALL_OPEN_FILES), path);
|
|
verifyOpenFiles(new HashMap<>(),
|
|
verifyOpenFiles(new HashMap<>(),
|
|
- EnumSet.of(OpenFilesType.BLOCKING_DECOMMISSION),
|
|
|
|
- OpenFilesIterator.FILTER_PATH_DEFAULT);
|
|
|
|
|
|
+ EnumSet.of(OpenFilesType.BLOCKING_DECOMMISSION), path);
|
|
}
|
|
}
|
|
|
|
|
|
private Set<Path> createFiles(FileSystem fileSystem, String fileNamePrefix,
|
|
private Set<Path> createFiles(FileSystem fileSystem, String fileNamePrefix,
|
|
@@ -255,4 +264,35 @@ public class TestListOpenFiles {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Test(timeout = 120000)
|
|
|
|
+ public void testListOpenFilesWithFilterPath() throws IOException {
|
|
|
|
+ HashMap<Path, FSDataOutputStream> openFiles = new HashMap<>();
|
|
|
|
+ createFiles(fs, "closed", 10);
|
|
|
|
+ verifyOpenFiles(openFiles, OpenFilesIterator.FILTER_PATH_DEFAULT);
|
|
|
|
+
|
|
|
|
+ BatchedEntries<OpenFileEntry> openFileEntryBatchedEntries = nnRpc
|
|
|
|
+ .listOpenFiles(0, EnumSet.of(OpenFilesType.ALL_OPEN_FILES),
|
|
|
|
+ OpenFilesIterator.FILTER_PATH_DEFAULT);
|
|
|
|
+ assertTrue("Open files list should be empty!",
|
|
|
|
+ openFileEntryBatchedEntries.size() == 0);
|
|
|
|
+ BatchedEntries<OpenFileEntry> openFilesBlockingDecomEntries = nnRpc
|
|
|
|
+ .listOpenFiles(0, EnumSet.of(OpenFilesType.BLOCKING_DECOMMISSION),
|
|
|
|
+ OpenFilesIterator.FILTER_PATH_DEFAULT);
|
|
|
|
+ assertTrue("Open files list blocking decommission should be empty!",
|
|
|
|
+ openFilesBlockingDecomEntries.size() == 0);
|
|
|
|
+
|
|
|
|
+ openFiles.putAll(
|
|
|
|
+ DFSTestUtil.createOpenFiles(fs, new Path("/base"), "open-1", 1));
|
|
|
|
+ Map<Path, FSDataOutputStream> baseOpen =
|
|
|
|
+ DFSTestUtil.createOpenFiles(fs, new Path("/base-open"), "open-1", 1);
|
|
|
|
+ verifyOpenFiles(openFiles, "/base");
|
|
|
|
+ verifyOpenFiles(openFiles, "/base/");
|
|
|
|
+
|
|
|
|
+ openFiles.putAll(baseOpen);
|
|
|
|
+ while (openFiles.size() > 0) {
|
|
|
|
+ DFSTestUtil.closeOpenFiles(openFiles, 1);
|
|
|
|
+ verifyOpenFiles(openFiles, OpenFilesIterator.FILTER_PATH_DEFAULT);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|