### Question:
DLCheckpointStore implements CheckpointStore { @Override public void deleteRecursively(String srcPath) throws IOException { Iterator<String> logs = namespace.getLogs(srcPath); while (logs.hasNext()) { String child = logs.next(); deleteRecursively(srcPath + "/" + child); } namespace.deleteLog(srcPath); } DLCheckpointStore(Namespace namespace); @Override List<String> listFiles(String filePath); @Override boolean fileExists(String filePath); @Override long getFileLength(String filePath); @Override InputStream openInputStream(String filePath); @Override OutputStream openOutputStream(String filePath); @Override void rename(String srcLog, String dstLog); @Override void deleteRecursively(String srcPath); @Override void delete(String srcPath); @Override void createDirectories(String srcPath); @Override void close();  }### Answer:
@Test public void testDeleteRecursively() throws Exception { int numFiles = 3; List<String> expectedFiles = Lists.newArrayListWithExpectedSize(3); namespace.createLog(runtime.getMethodName()); for (int i = 0; i < numFiles; ++i) { String filename = runtime.getMethodName() + "-" + i; expectedFiles.add(filename); namespace.createLog(runtime.getMethodName() + "/" + filename); } List<String> files = store.listFiles(runtime.getMethodName()); Collections.sort(files); assertEquals(expectedFiles, files); store.delete(runtime.getMethodName()); assertFalse(store.fileExists(runtime.getMethodName())); }