// Tests that lock block returns the correct path @Test public void lockBlockTest() throws Exception { final int blockSize = (int) WORKER_CAPACITY_BYTES / 2; CreateFileOptions options = CreateFileOptions.defaults() .setBlockSizeBytes(blockSize) .setWriteType(WriteType.MUST_CACHE); FileOutStream out = mFileSystem.createFile(new AlluxioURI("/testFile"), options); URIStatus file = mFileSystem.getStatus(new AlluxioURI("/testFile")); final long blockId = BlockId.createBlockId(BlockId.getContainerId(file.getFileId()), 0); out.write(BufferUtils.getIncreasingByteArray(blockSize)); out.close(); String localPath = mBlockWorkerServiceHandler.lockBlock(blockId, SESSION_ID).getBlockPath(); // The local path should exist Assert.assertNotNull(localPath); UnderFileSystem ufs = UnderFileSystem.get(localPath, mMasterConfiguration); byte[] data = new byte[blockSize]; int bytesRead = ufs.open(localPath).read(data); // The data in the local file should equal the data we wrote earlier Assert.assertEquals(blockSize, bytesRead); Assert.assertTrue(BufferUtils.equalIncreasingByteArray(bytesRead, data)); mBlockWorkerServiceHandler.unlockBlock(blockId, SESSION_ID); }
// Tests that lock block returns error on failure @Test public void lockBlockFailureTest() throws Exception { mFileSystem.createFile(new AlluxioURI("/testFile")); URIStatus file = mFileSystem.getStatus(new AlluxioURI("/testFile")); final long blockId = BlockId.createBlockId(BlockId.getContainerId(file.getFileId()), 0); Exception exception = null; try { mBlockWorkerServiceHandler.lockBlock(blockId, SESSION_ID); } catch (AlluxioTException e) { exception = e; } // A file does not exist exception should have been thrown Assert.assertNotNull(exception); }