/// <exception cref="System.IO.IOException"/> internal virtual int AddSomeBlocks(SimulatedFSDataset fsdataset, int startingBlockId ) { int bytesAdded = 0; for (int i = startingBlockId; i < startingBlockId + Numblocks; ++i) { ExtendedBlock b = new ExtendedBlock(bpid, i, 0, 0); // we pass expected len as zero, - fsdataset should use the sizeof actual // data written ReplicaInPipelineInterface bInfo = fsdataset.CreateRbw(StorageType.Default, b, false ).GetReplica(); ReplicaOutputStreams @out = bInfo.CreateStreams(true, DataChecksum.NewDataChecksum (DataChecksum.Type.Crc32, 512)); try { OutputStream dataOut = @out.GetDataOut(); NUnit.Framework.Assert.AreEqual(0, fsdataset.GetLength(b)); for (int j = 1; j <= BlockIdToLen(i); ++j) { dataOut.Write(j); NUnit.Framework.Assert.AreEqual(j, bInfo.GetBytesOnDisk()); // correct length even as we write bytesAdded++; } } finally { @out.Close(); } b.SetNumBytes(BlockIdToLen(i)); fsdataset.FinalizeBlock(b); NUnit.Framework.Assert.AreEqual(BlockIdToLen(i), fsdataset.GetLength(b)); } return(bytesAdded); }