public async Task WriteRandom() { var isAborted = false; Action abortRequest = () => isAborted = true; using (var ms1 = new MemoryStream()) { using (var ms2 = new MemoryStream()) { using (var writeOnlyStream = new WriteOnlyResponseStream(abortRequest)) { var random = new Random(); for (var i = 0; i < 10; i++) { var buffer = ArrayPool <byte> .Shared.Rent(random.Next(50000)); random.NextBytes(buffer); await writeOnlyStream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false); await ms1.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false); ArrayPool <byte> .Shared.Return(buffer); } await writeOnlyStream.CopyToAsync(ms2).ConfigureAwait(false); ms1.Position = 0; ms2.Position = 0; CompareStreams(ms1, ms2); } } } Assert.True(isAborted); }
private async Task <byte[]> GetBuffer(WriteOnlyResponseStream writeOnlyStream) { using (var ms = new MemoryStream()) { await writeOnlyStream.CopyToAsync(ms).ConfigureAwait(false); return(ms.ToArray()); } }