@Test public void listFilesTest() throws Exception { CreateFileOptions options = CreateFileOptions.defaults().setBlockSizeBytes(64); HashSet<Long> ids = new HashSet<Long>(); HashSet<Long> dirIds = new HashSet<Long>(); for (int i = 0; i < 10; i++) { AlluxioURI dir = new AlluxioURI("/i" + i); mFsMaster.createDirectory(dir, CreateDirectoryOptions.defaults()); dirIds.add(mFsMaster.getFileId(dir)); for (int j = 0; j < 10; j++) { ids.add(mFsMaster.createFile(dir.join("j" + j), options)); } } HashSet<Long> listedIds = new HashSet<>(); HashSet<Long> listedDirIds = new HashSet<>(); List<FileInfo> infoList = mFsMaster.getFileInfoList(new AlluxioURI("/"), true); for (FileInfo info : infoList) { long id = info.getFileId(); listedDirIds.add(id); for (FileInfo fileInfo : mFsMaster.getFileInfoList(new AlluxioURI(info.getPath()), true)) { listedIds.add(fileInfo.getFileId()); } } Assert.assertEquals(ids, listedIds); Assert.assertEquals(dirIds, listedDirIds); }
@Test public void createFileTest() throws Exception { mFsMaster.createFile(new AlluxioURI("/testFile"), CreateFileOptions.defaults()); FileInfo fileInfo = mFsMaster.getFileInfo(mFsMaster.getFileId(new AlluxioURI("/testFile"))); Assert.assertFalse(fileInfo.isFolder()); Assert.assertEquals("", fileInfo.getUserName()); Assert.assertEquals(0644, (short) fileInfo.getPermission()); }
@Test public void createDirectoryTest() throws Exception { mFsMaster.createDirectory(new AlluxioURI("/testFolder"), CreateDirectoryOptions.defaults()); FileInfo fileInfo = mFsMaster.getFileInfo(mFsMaster.getFileId(new AlluxioURI("/testFolder"))); Assert.assertTrue(fileInfo.isFolder()); Assert.assertEquals("", fileInfo.getUserName()); Assert.assertEquals(0755, (short) fileInfo.getPermission()); }
@Test public void lastModificationTimeCompleteFileTest() throws Exception { long fileId = mFsMaster.createFile(new AlluxioURI("/testFile"), CreateFileOptions.defaults()); long opTimeMs = TEST_CURRENT_TIME; try (LockedInodePath inodePath = mInodeTree.lockFullInodePath(new AlluxioURI("/testFile"), InodeTree.LockMode.WRITE)) { mFsMaster.completeFileInternal(new ArrayList<Long>(), inodePath, 0, opTimeMs); } FileInfo fileInfo = mFsMaster.getFileInfo(fileId); Assert.assertEquals(opTimeMs, fileInfo.getLastModificationTimeMs()); }
@Test public void lastModificationTimeCreateFileTest() throws Exception { mFsMaster.createDirectory(new AlluxioURI("/testFolder"), CreateDirectoryOptions.defaults()); long opTimeMs = TEST_CURRENT_TIME; CreateFileOptions options = CreateFileOptions.defaults().setOperationTimeMs(opTimeMs); try (LockedInodePath inodePath = mInodeTree.lockInodePath( new AlluxioURI("/testFolder/testFile"), InodeTree.LockMode.WRITE)) { mFsMaster.createFileInternal(inodePath, options); } FileInfo folderInfo = mFsMaster.getFileInfo(mFsMaster.getFileId(new AlluxioURI("/testFolder"))); Assert.assertEquals(opTimeMs, folderInfo.getLastModificationTimeMs()); }
@Test public void ttlCreateFileTest() throws Exception { mFsMaster.createDirectory(new AlluxioURI("/testFolder"), CreateDirectoryOptions.defaults()); long ttl = 100; CreateFileOptions options = CreateFileOptions.defaults().setTtl(ttl); try (LockedInodePath inodePath = mInodeTree.lockInodePath( new AlluxioURI("/testFolder/testFile"), InodeTree.LockMode.WRITE)) { mFsMaster.createFileInternal(inodePath, options); } FileInfo folderInfo = mFsMaster.getFileInfo(mFsMaster.getFileId(new AlluxioURI("/testFolder/testFile"))); Assert.assertEquals(ttl, folderInfo.getTtl()); }
// TODO(calvin): This test currently relies on the fact the HDFS client is a cached instance to // avoid invalid lease exception. This should be fixed. @Ignore @Test public void concurrentCreateJournalTest() throws Exception { // Makes sure the file id's are the same between a master info and the journal it creates for (int i = 0; i < 5; i++) { ConcurrentCreator concurrentCreator = new ConcurrentCreator(DEPTH, CONCURRENCY_DEPTH, ROOT_PATH); concurrentCreator.call(); FileSystemMaster fsMaster = createFileSystemMasterFromJournal(); for (FileInfo info : mFsMaster.getFileInfoList(new AlluxioURI("/"), true)) { AlluxioURI path = new AlluxioURI(info.getPath()); Assert.assertEquals(mFsMaster.getFileId(path), fsMaster.getFileId(path)); } before(); } }
@Test public void ttlExpiredCreateFileTest() throws Exception { mFsMaster.createDirectory(new AlluxioURI("/testFolder"), CreateDirectoryOptions.defaults()); long ttl = 1; CreateFileOptions options = CreateFileOptions.defaults().setTtl(ttl); long fileId = mFsMaster.createFile(new AlluxioURI("/testFolder/testFile1"), options); FileInfo folderInfo = mFsMaster.getFileInfo(mFsMaster.getFileId(new AlluxioURI("/testFolder/testFile1"))); Assert.assertEquals(fileId, folderInfo.getFileId()); Assert.assertEquals(ttl, folderInfo.getTtl()); // Sleep for the ttl expiration. CommonUtils.sleepMs(2 * TTL_CHECKER_INTERVAL_MS); Assert.assertTrue( HeartbeatScheduler.await(HeartbeatContext.MASTER_TTL_CHECK, 10, TimeUnit.SECONDS)); HeartbeatScheduler.schedule(HeartbeatContext.MASTER_TTL_CHECK); Assert.assertTrue( HeartbeatScheduler.await(HeartbeatContext.MASTER_TTL_CHECK, 10, TimeUnit.SECONDS)); mThrown.expect(FileDoesNotExistException.class); mFsMaster.getFileInfo(fileId); }
@Test public void lastModificationTimeRenameTest() throws Exception { mFsMaster.createDirectory(new AlluxioURI("/testFolder"), CreateDirectoryOptions.defaults()); long fileId = mFsMaster.createFile(new AlluxioURI("/testFolder/testFile1"), CreateFileOptions.defaults()); long opTimeMs = TEST_CURRENT_TIME; try (InodePathPair inodePathPair = mInodeTree.lockInodePathPair( new AlluxioURI("/testFolder/testFile1"), InodeTree.LockMode.WRITE_PARENT, new AlluxioURI("/testFolder/testFile2"), InodeTree.LockMode.WRITE)) { LockedInodePath srcPath = inodePathPair.getFirst(); LockedInodePath dstPath = inodePathPair.getSecond(); mFsMaster.renameInternal(srcPath, dstPath, true, opTimeMs); } FileInfo folderInfo = mFsMaster.getFileInfo(mFsMaster.getFileId(new AlluxioURI("/testFolder"))); Assert.assertEquals(opTimeMs, folderInfo.getLastModificationTimeMs()); }
@Test public void ttlRenameTest() throws Exception { mFsMaster.createDirectory(new AlluxioURI("/testFolder"), CreateDirectoryOptions.defaults()); long ttl = 1; CreateFileOptions options = CreateFileOptions.defaults().setTtl(ttl); long fileId = mFsMaster.createFile(new AlluxioURI("/testFolder/testFile1"), options); try (InodePathPair inodePathPair = mInodeTree.lockInodePathPair( new AlluxioURI("/testFolder/testFile1"), InodeTree.LockMode.WRITE_PARENT, new AlluxioURI("/testFolder/testFile2"), InodeTree.LockMode.WRITE)) { LockedInodePath srcPath = inodePathPair.getFirst(); LockedInodePath dstPath = inodePathPair.getSecond(); mFsMaster.renameInternal(srcPath, dstPath, true, TEST_CURRENT_TIME); } FileInfo folderInfo = mFsMaster.getFileInfo(mFsMaster.getFileId(new AlluxioURI("/testFolder/testFile2"))); Assert.assertEquals(ttl, folderInfo.getTtl()); }
public void exec(int depth, int concurrencyDepth, AlluxioURI path) throws Exception { if (depth < 1) { return; } else if (depth == 1) { long fileId = mFsMaster.createFile(path, CreateFileOptions.defaults()); Assert.assertEquals(fileId, mFsMaster.getFileId(path)); // verify the user permission for file FileInfo fileInfo = mFsMaster.getFileInfo(fileId); Assert.assertEquals("", fileInfo.getUserName()); Assert.assertEquals(0644, (short) fileInfo.getPermission()); } else { mFsMaster.createDirectory(path, CreateDirectoryOptions.defaults()); Assert.assertNotNull(mFsMaster.getFileId(path)); long dirId = mFsMaster.getFileId(path); Assert.assertNotEquals(-1, dirId); FileInfo dirInfo = mFsMaster.getFileInfo(dirId); Assert.assertEquals("", dirInfo.getUserName()); Assert.assertEquals(0755, (short) dirInfo.getPermission()); } if (concurrencyDepth > 0) { ExecutorService executor = Executors.newCachedThreadPool(); try { ArrayList<Future<Void>> futures = new ArrayList<Future<Void>>(FILES_PER_NODE); for (int i = 0; i < FILES_PER_NODE; i++) { Callable<Void> call = (new ConcurrentCreator( depth - 1, concurrencyDepth - 1, path.join(Integer.toString(i)))); futures.add(executor.submit(call)); } for (Future<Void> f : futures) { f.get(); } } finally { executor.shutdown(); } } else { for (int i = 0; i < FILES_PER_NODE; i++) { exec(depth - 1, concurrencyDepth, path.join(Integer.toString(i))); } } }
@Test public void clientFileInfoEmptyFileTest() throws Exception { long fileId = mFsMaster.createFile(new AlluxioURI("/testFile"), CreateFileOptions.defaults()); FileInfo fileInfo = mFsMaster.getFileInfo(fileId); Assert.assertEquals("testFile", fileInfo.getName()); Assert.assertEquals(fileId, fileInfo.getFileId()); Assert.assertEquals(0, fileInfo.getLength()); Assert.assertTrue(fileInfo.isCacheable()); Assert.assertFalse(fileInfo.isCompleted()); Assert.assertFalse(fileInfo.isFolder()); Assert.assertFalse(fileInfo.isPersisted()); Assert.assertFalse(fileInfo.isPinned()); Assert.assertEquals(Constants.NO_TTL, fileInfo.getTtl()); Assert.assertEquals("", fileInfo.getUserName()); Assert.assertEquals(0644, (short) fileInfo.getPermission()); }
@Test public void clientFileInfoDirectoryTest() throws Exception { AlluxioURI path = new AlluxioURI("/testFolder"); mFsMaster.createDirectory(path, CreateDirectoryOptions.defaults()); long fileId = mFsMaster.getFileId(path); FileInfo fileInfo = mFsMaster.getFileInfo(fileId); Assert.assertEquals("testFolder", fileInfo.getName()); Assert.assertEquals(1, fileInfo.getFileId()); Assert.assertEquals(0, fileInfo.getLength()); Assert.assertFalse(fileInfo.isCacheable()); Assert.assertTrue(fileInfo.isCompleted()); Assert.assertTrue(fileInfo.isFolder()); Assert.assertFalse(fileInfo.isPersisted()); Assert.assertFalse(fileInfo.isPinned()); Assert.assertEquals("", fileInfo.getUserName()); Assert.assertEquals(0755, (short) fileInfo.getPermission()); }