public void TestCache2() { // Writer DurableFileStream dfs = new DurableFileStream("TestCache2.dat", true, 5000); byte[] writeBuffer = new byte[4096]; Helper.SetArrayRandomly(writeBuffer); dfs.Write(writeBuffer, 0, writeBuffer.Length); byte[] writeBuffer2 = new byte[4096]; Helper.SetArrayRandomly(writeBuffer2); dfs.Write(writeBuffer2, 0, writeBuffer2.Length); byte[] writeBuffer3 = new byte[4096]; Helper.SetArrayRandomly(writeBuffer3); dfs.Write(writeBuffer3, 0, writeBuffer2.Length); dfs.Commit(); byte[] writeBuffer4 = new byte[4096]; Helper.SetArrayRandomly(writeBuffer4); dfs.Write(writeBuffer4, 0, writeBuffer2.Length); dfs.Seek(-2 * 4096, System.IO.SeekOrigin.Current); byte[] readBuffer = new byte[4096]; dfs.Read(readBuffer, 0, readBuffer.Length); dfs.Seek(-2 * 4096, System.IO.SeekOrigin.Current); byte[] readBuffer2 = new byte[4096]; dfs.Read(readBuffer2, 0, readBuffer2.Length); dfs.Close(); }
public void TestWriteReadRandom_Seek2() { DurableFileStream dfs = new DurableFileStream("TestWriteReadRandom_Seek2.dat", true); // seek long seekedPos = dfs.Seek(2000, SeekOrigin.Begin); Assert.AreEqual<long>(seekedPos, 2000); Assert.AreEqual<long>(dfs.Position, 2000); Assert.AreEqual<long>(dfs.Length, 0); seekedPos = dfs.Seek(-1000, SeekOrigin.Current); Assert.AreEqual<long>(seekedPos, 1000); Assert.AreEqual<long>(dfs.Position, 1000); Assert.AreEqual<long>(dfs.Length, 0); // write int bufferSize = DurableFileStream.BLOCK_SIZE; byte[] writeBuffer = new byte[bufferSize]; Helper.SetArrayRandomly(writeBuffer); dfs.Write(writeBuffer, 0, bufferSize); long lastPosition = seekedPos + bufferSize; Assert.AreEqual<long>(dfs.Position, lastPosition); Assert.AreEqual<long>(dfs.Length, lastPosition); seekedPos = dfs.Seek(-1000, SeekOrigin.End); Assert.AreEqual<long>(seekedPos, lastPosition - 1000); Assert.AreEqual<long>(dfs.Position, lastPosition - 1000); Assert.AreEqual<long>(dfs.Length, lastPosition); dfs.Commit(); dfs.Close(); }
public void TestWriteReadRandom_Seek1() { DurableFileStream dfs = new DurableFileStream("TestWriteReadRandom_Seek1.dat", true); long seekedPos = dfs.Seek(2000, SeekOrigin.Begin); Assert.AreEqual<long>(seekedPos, 2000); Assert.AreEqual<long>(dfs.Position, 2000); Assert.AreEqual<long>(dfs.Length, 0); seekedPos = dfs.Seek(-1000, SeekOrigin.Current); Assert.AreEqual<long>(seekedPos, 1000); Assert.AreEqual<long>(dfs.Position, 1000); Assert.AreEqual<long>(dfs.Length, 0); dfs.Close(); }
public void TestLogWriteOptimization2() { Random rand = new Random(); byte[] writeBuffer1 = new byte[2500]; Helper.SetArrayRandomly(writeBuffer1); byte[] writeBuffer2 = new byte[1000]; Helper.SetArrayRandomly(writeBuffer2); // // Writer // DurableFileStream dfs = new DurableFileStream("TestLogWriteOptimization2.dat", true); dfs.Write(writeBuffer1, 0, writeBuffer1.Length); Assert.AreEqual<long>(dfs.Position, writeBuffer1.Length); Assert.AreEqual<long>(dfs.Length, writeBuffer1.Length); dfs.Seek(500, System.IO.SeekOrigin.Begin); Assert.AreEqual<long>(dfs.Position, 500); dfs.Write(writeBuffer2, 0, writeBuffer2.Length); Assert.AreEqual<long>(dfs.Position, 500 + writeBuffer2.Length); Assert.AreEqual<long>(dfs.Length, writeBuffer1.Length); dfs.Commit(); dfs.Close(); // // Reader // dfs = new DurableFileStream("TestLogWriteOptimization2.dat", false); byte[] readBuffer = new byte[writeBuffer1.Length]; dfs.Read(readBuffer, 0, writeBuffer1.Length); Assert.AreEqual<long>(dfs.Position, writeBuffer1.Length); Assert.AreEqual<long>(dfs.Length, writeBuffer1.Length); byte[] mergedWriteBuffer = new byte[writeBuffer1.Length]; Array.Copy(writeBuffer1, 0, mergedWriteBuffer, 0, writeBuffer1.Length); Array.Copy(writeBuffer2, 0, mergedWriteBuffer, 500, writeBuffer2.Length); dfs.Close(); // Validate Assert.IsTrue(Helper.EqualArray(readBuffer, mergedWriteBuffer)); }
public void TestOffset1() { int bufferSize = 4096; byte[] writeBuffer = new byte[bufferSize]; Helper.SetArrayRandomly(writeBuffer); // // Writer // DurableFileStream dfs = new DurableFileStream("TestOffset1.dat", true); int offset = 100; int count = 500; dfs.Write(writeBuffer, offset, count); dfs.Seek(0, System.IO.SeekOrigin.Begin); byte[] readBuffer = new byte[count * 2]; int readOffest = 300; dfs.Read(readBuffer, readOffest, count); bool equal = true; for (int i = offset; i < count; i++) { if (writeBuffer[i] != readBuffer[i - offset + readOffest]) { equal = false; break; } } Assert.IsTrue(equal); dfs.Commit(); Assert.AreEqual<long>(dfs.Position, count); Assert.AreEqual<long>(dfs.Length, count); dfs.Seek(0, System.IO.SeekOrigin.Begin); readBuffer = new byte[count * 2]; dfs.Read(readBuffer, readOffest, count); equal = true; for (int i = offset; i < count; i++) { if (writeBuffer[i] != readBuffer[i - offset + readOffest]) { equal = false; break; } } Assert.IsTrue(equal); dfs.Close(); // // Reader // dfs = new DurableFileStream("TestOffset1.dat", false); Assert.AreEqual<long>(dfs.Position, 0); Assert.AreEqual<long>(dfs.Length, count); int count2 = count - 10; readBuffer = new byte[count2 * 3]; readOffest = 750; dfs.Read(readBuffer, readOffest, count2); equal = true; for (int i = offset; i < count2; i++) { if (writeBuffer[i] != readBuffer[i - offset + readOffest]) { equal = false; break; } } Assert.IsTrue(equal); Assert.AreEqual<long>(dfs.Position, count2); Assert.AreEqual<long>(dfs.Length, count); dfs.Close(); }