/// <inheritdoc /> public async Task <RecordedStream> ReadStreamForward(string stream, int fromVersion, CancellationToken token = default(CancellationToken)) { Guard.StreamName(stream, nameof(stream)); _settings.Logger.Trace("Reading stream '{0}' forward from version {1}...", stream, fromVersion); using (var connection = new SqlConnection(_settings.ConnectionString)) using (var cmd = connection.CreateCommandForReadStreamForward(stream, fromVersion)) { await connection.OpenAsync(token).NotOnCapturedContext(); using (var reader = await cmd.ExecuteReaderAsync(CommandBehavior.SingleResult, token).NotOnCapturedContext()) { if (!reader.HasRows) { _settings.Logger.Trace("Read 0 messages for '{0}' stream from version {1}.", stream, fromVersion); return(RecordedStream.Empty()); } var messages = new List <RecordedMessage>(20); // 20? How many will be enough? while (await reader.ReadAsync(token).NotOnCapturedContext()) { messages.Add(reader.GetRecordedMessage()); } _settings.Logger.Trace("Read {0} messages for '{1}' stream from version {2}.", messages.Count, stream, fromVersion); return(new RecordedStream(messages.ToArray())); } } }
public void DeflatedStreamIsStoredUncompressed() { // ARRANGE var content = "Hello World"; var compressed = new MemoryStream(); using (var deflate = new DeflateStream(compressed, CompressionMode.Compress, leaveOpen: true)) { new MemoryStream(Encoding.UTF8.GetBytes(content)).CopyTo(deflate); } var recordedStream = new RecordedStream( compressed.ToArray(), HttpWebResponseCreator.Create( new Uri("http://fakeSite.fake"), "POST", HttpStatusCode.OK, compressed, new WebHeaderCollection { { HttpRequestHeader.ContentEncoding, "deflate" } })); // ACT var toString = recordedStream.ToString(); // ASSERT recordedStream.IsEncoded.ShouldBeFalse(); recordedStream.IsDeflateCompressed.ShouldBeTrue(); toString.ShouldEqual(content); }
public void ToStringReturnsStringContentWhenStreamIsNotEncoded() { // ARRANGE var content = "Hello World"; var recordedStream = new RecordedStream( Encoding.UTF8.GetBytes(content), new HttpWebRequestWrapper(new Uri("http://fakeSite.fake"))); // ACT var toString = recordedStream.ToString(); // ASSERT recordedStream.IsEncoded.ShouldBeFalse(); toString.ShouldEqual(content); }
public void ToStringReturnsStringContentWhenStreamIsEncoded() { // ARRANGE var content = "Hello World"; var recordedStream = new RecordedStream( Encoding.UTF8.GetBytes(content), new HttpWebRequestWrapper(new Uri("http://fakeSite.fake")) { // set content type to force string content to be // encoded ContentType = "image/png" }); // ACT var toString = recordedStream.ToString(); // ASSERT recordedStream.IsEncoded.ShouldBeTrue(); toString.ShouldEqual(content); }