public void Test_StoreThrowsErrorAfterDisposed() { var xBuff = new byte[2]; var xSeg = new ArraySegment<byte>(xBuff); var xBlock = new SimpleStreamBlockStore(new MemoryStream(new byte[2]), 2); using (xBlock) { xBlock.Retrieve(0, xSeg); } xBlock.Retrieve(0, xSeg); }
public void TestSingleBlock() { using (var xMemStream = new MemoryStream()) { xMemStream.SetLength(2048); // 4 blocks of 512 bytes using (var xRawBlockStore = new SimpleStreamBlockStore(xMemStream, 512)) { ODBFSImpl.Format(xRawBlockStore, 512); using (var xOdbfs = new ODBFSImpl(xRawBlockStore)) { Assert.AreEqual(0, xOdbfs.GetVirtualBlocks().Count()); var xBlockId = Guid.NewGuid(); xOdbfs.CreateNewBlock(xBlockId, 2); var xBuff1 = new byte[512]; var xBuff1Seg = new ArraySegment<byte>(xBuff1); var xBuff2 = new byte[512]; var xBuff2Seg = new ArraySegment<byte>(xBuff2); using (var xBlock = xOdbfs.OpenBlock(xBlockId)) { for (int i = 0; i < xBuff1.Length; i++) { xBuff1[i] = 0xFF; } xBlock.Store(0, xBuff1Seg); xBlock.Store(1, xBuff1Seg); xRawBlockStore.Retrieve(1, xBuff2Seg); Assert.IsTrue(DeduplicatingBlockStore.CompareBlocks(xBuff1, xBuff2,0, 0, 512)); xRawBlockStore.Retrieve(2, xBuff2Seg); Assert.IsTrue(DeduplicatingBlockStore.CompareBlocks(xBuff1, xBuff2, 0, 0, 512)); xBuff1 = new byte[512]; xRawBlockStore.Retrieve(3, xBuff2Seg); Assert.IsTrue(DeduplicatingBlockStore.CompareBlocks(xBuff1, xBuff2, 0, 0, 512)); } } } } }
public void DoTest() { using (var xBackend = new MemoryStream()) { xBackend.SetLength(2); var xStore = new SimpleStreamBlockStore(xBackend, 1); Assert.AreEqual(1u, xStore.BlockSize); Assert.AreEqual(2u, xStore.BlockCount); var xBuff = new byte[1]; xBuff[0] = 1; var xArraySegment = new ArraySegment<byte>(xBuff); xStore.Retrieve(0, xArraySegment); Assert.AreEqual(0, xBuff[0]); // now store a byte in block 0, and read back both 0 and 1 xBuff[0] = 2; xStore.Store(1, xArraySegment); xStore.Retrieve(0, xArraySegment); Assert.AreEqual(0, xBuff[0]); xStore.Retrieve(1, xArraySegment); Assert.AreEqual(2, xBuff[0]); } }
public void Test_StoreThrowsErrorWithWrongBufferSizeInRetrieve() { using (var xMS = new MemoryStream(new byte[2])) { IBlockStore xStore = new SimpleStreamBlockStore(xMS, 2); var xBuff = new byte[1]; var xSeg = new ArraySegment<byte>(xBuff); xStore.Retrieve(0, xSeg); } }