use of alluxio.worker.block.meta.DefaultTempBlockMeta in project alluxio by Alluxio.
the class BlockMetadataManagerTest method moveBlockMetaDiffDir.
/**
* Tests that an exception is thrown in the
* {@link BlockMetadataManager#moveBlockMeta(BlockMeta, TempBlockMeta)} method when trying to move
* a block to a not committed block meta.
*/
@Test
public void moveBlockMetaDiffDir() throws Exception {
// create and add two temp block metas with different dirs in the same HDD tier
StorageDir dir1 = mMetaManager.getTier(Constants.MEDIUM_HDD).getDir(0);
StorageDir dir2 = mMetaManager.getTier(Constants.MEDIUM_HDD).getDir(1);
TempBlockMeta tempBlockMeta1 = new DefaultTempBlockMeta(TEST_SESSION_ID, TEST_TEMP_BLOCK_ID, TEST_BLOCK_SIZE, dir1);
TempBlockMeta tempBlockMeta2 = new DefaultTempBlockMeta(TEST_SESSION_ID, TEST_TEMP_BLOCK_ID2, TEST_BLOCK_SIZE, dir2);
mMetaManager.addTempBlockMeta(tempBlockMeta1);
mMetaManager.addTempBlockMeta(tempBlockMeta2);
// commit the first temp block meta
mMetaManager.commitTempBlockMeta(tempBlockMeta1);
BlockMeta blockMeta = mMetaManager.getBlockMeta(TEST_TEMP_BLOCK_ID);
mMetaManager.moveBlockMeta(blockMeta, tempBlockMeta2);
// make sure that the dst tempBlockMeta has been removed from the dir2
mThrown.expect(BlockDoesNotExistException.class);
mThrown.expectMessage(ExceptionMessage.TEMP_BLOCK_META_NOT_FOUND.getMessage(TEST_TEMP_BLOCK_ID2));
mMetaManager.getTempBlockMeta(TEST_TEMP_BLOCK_ID2);
}
use of alluxio.worker.block.meta.DefaultTempBlockMeta in project alluxio by Alluxio.
the class BlockMetadataManagerTest method resizeTempBlockMeta.
/**
* Tests the {@link BlockMetadataManager#resizeTempBlockMeta(TempBlockMeta, long)} method.
*/
@Test
public void resizeTempBlockMeta() throws Exception {
StorageDir dir = mMetaManager.getTier(Constants.MEDIUM_MEM).getDir(0);
TempBlockMeta tempBlockMeta = new DefaultTempBlockMeta(TEST_SESSION_ID, TEST_TEMP_BLOCK_ID, TEST_BLOCK_SIZE, dir);
mMetaManager.resizeTempBlockMeta(tempBlockMeta, TEST_BLOCK_SIZE + 1);
assertEquals(TEST_BLOCK_SIZE + 1, tempBlockMeta.getBlockSize());
}
use of alluxio.worker.block.meta.DefaultTempBlockMeta in project alluxio by Alluxio.
the class TieredBlockStoreTestUtils method createTempBlock.
/**
* Makes a temp block of a given size in {@link StorageDir}.
*
* @param sessionId session who caches the data
* @param blockId id of the cached block
* @param bytes size of the block in bytes
* @param dir the {@link StorageDir} the block resides in
* @return the temp block meta
*/
public static TempBlockMeta createTempBlock(long sessionId, long blockId, long bytes, StorageDir dir) throws Exception {
// prepare temp block
TempBlockMeta tempBlockMeta = new DefaultTempBlockMeta(sessionId, blockId, bytes, dir);
dir.addTempBlockMeta(tempBlockMeta);
// write data
FileUtils.createFile(tempBlockMeta.getPath());
BlockWriter writer = new LocalFileBlockWriter(tempBlockMeta.getPath());
writer.append(BufferUtils.getIncreasingByteBuffer(Ints.checkedCast(bytes)));
writer.close();
return tempBlockMeta;
}
use of alluxio.worker.block.meta.DefaultTempBlockMeta in project alluxio by Alluxio.
the class BlockMetadataManagerTest method cleanupSession.
/**
* Tests the {@link BlockMetadataManager#cleanupSessionTempBlocks(long, List)} method.
*/
@Test
public void cleanupSession() throws Exception {
StorageDir dir = mMetaManager.getTier(Constants.MEDIUM_MEM).getDir(0);
final long tempBlockId1 = 1;
final long tempBlockId2 = 2;
final long tempBlockId3 = 3;
final long sessionId1 = 100;
final long sessionId2 = 200;
TempBlockMeta tempBlockMeta1 = new DefaultTempBlockMeta(sessionId1, tempBlockId1, TEST_BLOCK_SIZE, dir);
TempBlockMeta tempBlockMeta2 = new DefaultTempBlockMeta(sessionId1, tempBlockId2, TEST_BLOCK_SIZE, dir);
TempBlockMeta tempBlockMeta3 = new DefaultTempBlockMeta(sessionId2, tempBlockId3, TEST_BLOCK_SIZE, dir);
BlockMeta blockMeta = new DefaultBlockMeta(TEST_BLOCK_ID, TEST_BLOCK_SIZE, dir);
dir.addTempBlockMeta(tempBlockMeta1);
dir.addTempBlockMeta(tempBlockMeta2);
dir.addTempBlockMeta(tempBlockMeta3);
dir.addBlockMeta(blockMeta);
// Get temp blocks for sessionId1, expect to get tempBlock1 and tempBlock2
List<TempBlockMeta> toRemove = mMetaManager.getSessionTempBlocks(sessionId1);
List<Long> toRemoveBlockIds = new ArrayList<>(toRemove.size());
for (TempBlockMeta tempBlockMeta : toRemove) {
toRemoveBlockIds.add(tempBlockMeta.getBlockId());
}
assertEquals(Sets.newHashSet(tempBlockMeta1, tempBlockMeta2), new HashSet<>(toRemove));
assertTrue(dir.hasTempBlockMeta(tempBlockId1));
assertTrue(dir.hasTempBlockMeta(tempBlockId2));
// Clean up sessionId1, expect tempBlock1 and tempBlock2 to be removed.
mMetaManager.cleanupSessionTempBlocks(sessionId1, toRemoveBlockIds);
assertFalse(dir.hasTempBlockMeta(tempBlockId1));
assertFalse(dir.hasTempBlockMeta(tempBlockId2));
assertTrue(dir.hasTempBlockMeta(tempBlockId3));
assertTrue(dir.hasBlockMeta(TEST_BLOCK_ID));
// Get temp blocks for sessionId1 again, expect to get nothing
toRemove = mMetaManager.getSessionTempBlocks(sessionId1);
toRemoveBlockIds = new ArrayList<>(toRemove.size());
for (TempBlockMeta tempBlockMeta : toRemove) {
toRemoveBlockIds.add(tempBlockMeta.getBlockId());
}
assertTrue(toRemove.isEmpty());
// Clean up sessionId1 again, expect nothing to happen
mMetaManager.cleanupSessionTempBlocks(sessionId1, toRemoveBlockIds);
assertFalse(dir.hasTempBlockMeta(tempBlockId1));
assertFalse(dir.hasTempBlockMeta(tempBlockId2));
assertTrue(dir.hasTempBlockMeta(tempBlockId3));
assertTrue(dir.hasBlockMeta(TEST_BLOCK_ID));
// Get temp blocks for sessionId2, expect to get tempBlock3
toRemove = mMetaManager.getSessionTempBlocks(sessionId2);
toRemoveBlockIds = new ArrayList<>(toRemove.size());
for (TempBlockMeta tempBlockMeta : toRemove) {
toRemoveBlockIds.add(tempBlockMeta.getBlockId());
}
assertEquals(Sets.newHashSet(tempBlockMeta3), new HashSet<>(toRemove));
assertTrue(dir.hasTempBlockMeta(tempBlockId3));
// Clean up sessionId2, expect tempBlock3 to be removed
mMetaManager.cleanupSessionTempBlocks(sessionId2, toRemoveBlockIds);
assertFalse(dir.hasTempBlockMeta(tempBlockId1));
assertFalse(dir.hasTempBlockMeta(tempBlockId2));
assertFalse(dir.hasTempBlockMeta(tempBlockId3));
assertTrue(dir.hasBlockMeta(TEST_BLOCK_ID));
}
use of alluxio.worker.block.meta.DefaultTempBlockMeta in project alluxio by Alluxio.
the class BlockMetadataManagerTest method blockMeta.
/**
* Tests the different operations for metadata of a block, such as adding a temporary block or
* committing a block.
*/
@Test
public void blockMeta() throws Exception {
StorageDir dir = mMetaManager.getTier(Constants.MEDIUM_HDD).getDir(0);
TempBlockMeta tempBlockMeta = new DefaultTempBlockMeta(TEST_SESSION_ID, TEST_TEMP_BLOCK_ID, TEST_BLOCK_SIZE, dir);
// Empty storage
assertFalse(mMetaManager.hasTempBlockMeta(TEST_TEMP_BLOCK_ID));
assertFalse(mMetaManager.hasBlockMeta(TEST_TEMP_BLOCK_ID));
// Add temp block
mMetaManager.addTempBlockMeta(tempBlockMeta);
assertTrue(mMetaManager.hasTempBlockMeta(TEST_TEMP_BLOCK_ID));
assertFalse(mMetaManager.hasBlockMeta(TEST_TEMP_BLOCK_ID));
// Get temp block
assertEquals(tempBlockMeta, mMetaManager.getTempBlockMeta(TEST_TEMP_BLOCK_ID));
// Abort temp block
mMetaManager.abortTempBlockMeta(tempBlockMeta);
assertFalse(mMetaManager.hasTempBlockMeta(TEST_TEMP_BLOCK_ID));
assertFalse(mMetaManager.hasBlockMeta(TEST_TEMP_BLOCK_ID));
// Add temp block with previous block id
mMetaManager.addTempBlockMeta(tempBlockMeta);
assertTrue(mMetaManager.hasTempBlockMeta(TEST_TEMP_BLOCK_ID));
assertFalse(mMetaManager.hasBlockMeta(TEST_TEMP_BLOCK_ID));
// Commit temp block
mMetaManager.commitTempBlockMeta(tempBlockMeta);
assertFalse(mMetaManager.hasTempBlockMeta(TEST_TEMP_BLOCK_ID));
assertTrue(mMetaManager.hasBlockMeta(TEST_TEMP_BLOCK_ID));
// Get block
BlockMeta blockMeta = mMetaManager.getBlockMeta(TEST_TEMP_BLOCK_ID);
assertEquals(TEST_TEMP_BLOCK_ID, blockMeta.getBlockId());
// Remove block
mMetaManager.removeBlockMeta(blockMeta);
assertFalse(mMetaManager.hasTempBlockMeta(TEST_TEMP_BLOCK_ID));
assertFalse(mMetaManager.hasBlockMeta(TEST_TEMP_BLOCK_ID));
}
Aggregations