public void EnsureMultiBufferMemoryStreamIsNotClosed() { byte[] buffer = GetRandomBuffer(1 * 1024 * 1024); CloudBlobClient blobClient = GenerateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference(Guid.NewGuid().ToString("N")); try { container.Create(); CloudBlockBlob blob = container.GetBlockBlobReference("blob1"); using (MultiBufferMemoryStream originalBlob = new MultiBufferMemoryStream(null)) { originalBlob.Write(buffer, 0, buffer.Length); originalBlob.Seek(0, SeekOrigin.Begin); blob.PutBlock(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), originalBlob, null); Assert.IsTrue(originalBlob.CanSeek); } } finally { container.DeleteIfExists(); } }
public void MultiBufferMemoryStreamReadSeekSetLengthTest() { byte[] outBuffer = new byte[2 * 1024 * 1024]; byte[] buffer = GetRandomBuffer(outBuffer.Length); using (MemoryStream memStream = new MemoryStream()) { memStream.Write(buffer, 0, buffer.Length); using (MultiBufferMemoryStream multiBufferStream = new MultiBufferMemoryStream(null /* bufferManager */)) { multiBufferStream.Write(buffer, 0, buffer.Length); multiBufferStream.Seek(0, SeekOrigin.Begin); TestHelper.AssertStreamsAreEqual(memStream, multiBufferStream); multiBufferStream.Read(outBuffer, 0, buffer.Length); TestHelper.AssertBuffersAreEqual(buffer, outBuffer); multiBufferStream.Seek(-1, SeekOrigin.End); Assert.AreEqual(buffer.Length - 1, multiBufferStream.Position); multiBufferStream.Seek(-1024, SeekOrigin.End); memStream.Seek(-1024, SeekOrigin.End); TestHelper.AssertStreamsAreEqual(multiBufferStream, memStream); multiBufferStream.SetLength(3 * 1024 * 1024); memStream.SetLength(3 * 1024 * 1024); multiBufferStream.Seek(0, SeekOrigin.Begin); memStream.Seek(0, SeekOrigin.Begin); TestHelper.AssertStreamsAreEqual(memStream, multiBufferStream); } } }
public void EnsureMultiBufferMemoryStreamIsNotClosedAPM() { byte[] buffer = GetRandomBuffer(1 * 1024 * 1024); CloudBlobClient blobClient = GenerateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference(Guid.NewGuid().ToString("N")); try { container.Create(); CloudBlockBlob blob = container.GetBlockBlobReference("blob1"); using (MultiBufferMemoryStream originalBlob = new MultiBufferMemoryStream(null)) { originalBlob.Write(buffer, 0, buffer.Length); originalBlob.Seek(0, SeekOrigin.Begin); using (AutoResetEvent waitHandle = new AutoResetEvent(false)) { ICancellableAsyncResult result = blob.BeginPutBlock( Convert.ToBase64String(Guid.NewGuid().ToByteArray()), originalBlob, null, ar => waitHandle.Set(), null); waitHandle.WaitOne(); blob.EndPutBlock(result); } Assert.IsTrue(originalBlob.CanSeek); } } finally { container.DeleteIfExists(); } }