assertEquals(bytesAdded, sfsdataset.getDfsUsed());
assertEquals(sfsdataset.getCapacity()-bytesAdded, sfsdataset.getRemaining());
}
public void testInjectionNonEmpty() throws IOException {
FSDatasetInterface fsdataset = new SimulatedFSDataset(conf);
Block[] blockReport = fsdataset.getBlockReport(0);
assertEquals(0, blockReport.length);
int bytesAdded = addSomeBlocks(fsdataset);
blockReport = fsdataset.getBlockReport(0);
assertEquals(NUMBLOCKS, blockReport.length);
for (Block b: blockReport) {
assertNotNull(b);
assertEquals(blockIdToLen(b.getBlockId()), b.getNumBytes());
}
fsdataset = null;
// Inject blocks into an non-empty fsdataset
// - injecting the blocks we got above.
SimulatedFSDataset sfsdataset = new SimulatedFSDataset(conf);
// Add come blocks whose block ids do not conflict with
// the ones we are going to inject.
bytesAdded += addSomeBlocks(sfsdataset, NUMBLOCKS+1);
Block[] blockReport2 = sfsdataset.getBlockReport(0);
assertEquals(NUMBLOCKS, blockReport.length);
blockReport2 = sfsdataset.getBlockReport(0);
assertEquals(NUMBLOCKS, blockReport.length);
sfsdataset.injectBlocks(DUMMY_NAMESPACE_ID, blockReport);
blockReport = sfsdataset.getBlockReport(0);
assertEquals(NUMBLOCKS*2, blockReport.length);
for (Block b: blockReport) {
assertNotNull(b);
assertEquals(blockIdToLen(b.getBlockId()), b.getNumBytes());
assertEquals(blockIdToLen(b.getBlockId()), sfsdataset.getFinalizedBlockLength(0,b));
}
assertEquals(bytesAdded, sfsdataset.getDfsUsed());
assertEquals(sfsdataset.getCapacity()-bytesAdded, sfsdataset.getRemaining());
// Now test that the dataset cannot be created if it does not have sufficient cap
conf.setLong(SimulatedFSDataset.CONFIG_PROPERTY_CAPACITY, 10);
try {
sfsdataset = new SimulatedFSDataset(conf);
sfsdataset.injectBlocks(DUMMY_NAMESPACE_ID, blockReport);
assertTrue("Expected an IO exception", false);
} catch (IOException e) {
// ok - as expected
}