Rename Pipe properties (#8227)
* Rename Pipe properties - Rename BodyPipe to BodyReader and BodyWriter on the request and response directly
This commit is contained in:
parent
303a354993
commit
4c79e7fdc0
|
|
@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
{
|
{
|
||||||
protected HttpRequest() { }
|
protected HttpRequest() { }
|
||||||
public abstract System.IO.Stream Body { get; set; }
|
public abstract System.IO.Stream Body { get; set; }
|
||||||
public abstract System.IO.Pipelines.PipeReader BodyPipe { get; set; }
|
public abstract System.IO.Pipelines.PipeReader BodyReader { get; set; }
|
||||||
public abstract long? ContentLength { get; set; }
|
public abstract long? ContentLength { get; set; }
|
||||||
public abstract string ContentType { get; set; }
|
public abstract string ContentType { get; set; }
|
||||||
public abstract Microsoft.AspNetCore.Http.IRequestCookieCollection Cookies { get; set; }
|
public abstract Microsoft.AspNetCore.Http.IRequestCookieCollection Cookies { get; set; }
|
||||||
|
|
@ -263,7 +263,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
{
|
{
|
||||||
protected HttpResponse() { }
|
protected HttpResponse() { }
|
||||||
public abstract System.IO.Stream Body { get; set; }
|
public abstract System.IO.Stream Body { get; set; }
|
||||||
public abstract System.IO.Pipelines.PipeWriter BodyPipe { get; set; }
|
public abstract System.IO.Pipelines.PipeWriter BodyWriter { get; set; }
|
||||||
public abstract long? ContentLength { get; set; }
|
public abstract long? ContentLength { get; set; }
|
||||||
public abstract string ContentType { get; set; }
|
public abstract string ContentType { get; set; }
|
||||||
public abstract Microsoft.AspNetCore.Http.IResponseCookies Cookies { get; }
|
public abstract Microsoft.AspNetCore.Http.IResponseCookies Cookies { get; }
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
|
|
||||||
Write(response, text, encoding);
|
Write(response, text, encoding);
|
||||||
|
|
||||||
var flushAsyncTask = response.BodyPipe.FlushAsync(cancellationToken);
|
var flushAsyncTask = response.BodyWriter.FlushAsync(cancellationToken);
|
||||||
if (flushAsyncTask.IsCompletedSuccessfully)
|
if (flushAsyncTask.IsCompletedSuccessfully)
|
||||||
{
|
{
|
||||||
// Most implementations of ValueTask reset state in GetResult, so call it before returning a completed task.
|
// Most implementations of ValueTask reset state in GetResult, so call it before returning a completed task.
|
||||||
|
|
@ -88,12 +88,12 @@ namespace Microsoft.AspNetCore.Http
|
||||||
{
|
{
|
||||||
await startAsyncTask;
|
await startAsyncTask;
|
||||||
Write(response, text, encoding);
|
Write(response, text, encoding);
|
||||||
await response.BodyPipe.FlushAsync(cancellationToken);
|
await response.BodyWriter.FlushAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Write(this HttpResponse response, string text, Encoding encoding)
|
private static void Write(this HttpResponse response, string text, Encoding encoding)
|
||||||
{
|
{
|
||||||
var pipeWriter = response.BodyPipe;
|
var pipeWriter = response.BodyWriter;
|
||||||
var encodedLength = encoding.GetByteCount(text);
|
var encodedLength = encoding.GetByteCount(text);
|
||||||
var destination = pipeWriter.GetSpan(encodedLength);
|
var destination = pipeWriter.GetSpan(encodedLength);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the request body pipe <see cref="PipeReader"/>.
|
/// Gets or sets the request body pipe <see cref="PipeReader"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract PipeReader BodyPipe { get; set; }
|
public abstract PipeReader BodyReader { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks the Content-Type header for form types.
|
/// Checks the Content-Type header for form types.
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the response body pipe <see cref="PipeWriter"/>
|
/// Gets or sets the response body pipe <see cref="PipeWriter"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract PipeWriter BodyPipe { get; set; }
|
public abstract PipeWriter BodyWriter { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the value for the <c>Content-Length</c> response header.
|
/// Gets or sets the value for the <c>Content-Length</c> response header.
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Http
|
||||||
var streamPipeWriter = new StreamPipeWriter(outputStream, minimumSegmentSize: 0, memoryPool);
|
var streamPipeWriter = new StreamPipeWriter(outputStream, minimumSegmentSize: 0, memoryPool);
|
||||||
|
|
||||||
HttpContext context = new DefaultHttpContext();
|
HttpContext context = new DefaultHttpContext();
|
||||||
context.Response.BodyPipe = streamPipeWriter;
|
context.Response.BodyWriter = streamPipeWriter;
|
||||||
|
|
||||||
var inputString = "昨日すき焼きを食べました";
|
var inputString = "昨日すき焼きを食べました";
|
||||||
var expected = encoding.GetBytes(inputString);
|
var expected = encoding.GetBytes(inputString);
|
||||||
|
|
|
||||||
|
|
@ -231,7 +231,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
}
|
}
|
||||||
public partial interface IRequestBodyPipeFeature
|
public partial interface IRequestBodyPipeFeature
|
||||||
{
|
{
|
||||||
System.IO.Pipelines.PipeReader RequestBodyPipe { get; set; }
|
System.IO.Pipelines.PipeReader Reader { get; set; }
|
||||||
}
|
}
|
||||||
public partial interface IRequestCookiesFeature
|
public partial interface IRequestCookiesFeature
|
||||||
{
|
{
|
||||||
|
|
@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
}
|
}
|
||||||
public partial interface IResponseBodyPipeFeature
|
public partial interface IResponseBodyPipeFeature
|
||||||
{
|
{
|
||||||
System.IO.Pipelines.PipeWriter ResponseBodyPipe { get; set; }
|
System.IO.Pipelines.PipeWriter Writer { get; set; }
|
||||||
}
|
}
|
||||||
public partial interface IResponseCookiesFeature
|
public partial interface IResponseCookiesFeature
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,6 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A <see cref="PipeReader"/> representing the request body, if any.
|
/// A <see cref="PipeReader"/> representing the request body, if any.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
PipeReader RequestBodyPipe { get; set; }
|
PipeReader Reader { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,6 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A <see cref="PipeWriter"/> representing the response body, if any.
|
/// A <see cref="PipeWriter"/> representing the response body, if any.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
PipeWriter ResponseBodyPipe { get; set; }
|
PipeWriter Writer { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
public partial class RequestBodyPipeFeature : Microsoft.AspNetCore.Http.Features.IRequestBodyPipeFeature
|
public partial class RequestBodyPipeFeature : Microsoft.AspNetCore.Http.Features.IRequestBodyPipeFeature
|
||||||
{
|
{
|
||||||
public RequestBodyPipeFeature(Microsoft.AspNetCore.Http.HttpContext context) { }
|
public RequestBodyPipeFeature(Microsoft.AspNetCore.Http.HttpContext context) { }
|
||||||
public System.IO.Pipelines.PipeReader RequestBodyPipe { get { throw null; } set { } }
|
public System.IO.Pipelines.PipeReader Reader { get { throw null; } set { } }
|
||||||
}
|
}
|
||||||
public partial class RequestCookiesFeature : Microsoft.AspNetCore.Http.Features.IRequestCookiesFeature
|
public partial class RequestCookiesFeature : Microsoft.AspNetCore.Http.Features.IRequestCookiesFeature
|
||||||
{
|
{
|
||||||
|
|
@ -255,7 +255,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
public partial class ResponseBodyPipeFeature : Microsoft.AspNetCore.Http.Features.IResponseBodyPipeFeature
|
public partial class ResponseBodyPipeFeature : Microsoft.AspNetCore.Http.Features.IResponseBodyPipeFeature
|
||||||
{
|
{
|
||||||
public ResponseBodyPipeFeature(Microsoft.AspNetCore.Http.HttpContext context) { }
|
public ResponseBodyPipeFeature(Microsoft.AspNetCore.Http.HttpContext context) { }
|
||||||
public System.IO.Pipelines.PipeWriter ResponseBodyPipe { get { throw null; } set { } }
|
public System.IO.Pipelines.PipeWriter Writer { get { throw null; } set { } }
|
||||||
}
|
}
|
||||||
public partial class ResponseCookiesFeature : Microsoft.AspNetCore.Http.Features.IResponseCookiesFeature
|
public partial class ResponseCookiesFeature : Microsoft.AspNetCore.Http.Features.IResponseCookiesFeature
|
||||||
{
|
{
|
||||||
|
|
@ -328,7 +328,7 @@ namespace Microsoft.AspNetCore.Http.Internal
|
||||||
{
|
{
|
||||||
public DefaultHttpRequest(Microsoft.AspNetCore.Http.DefaultHttpContext context) { }
|
public DefaultHttpRequest(Microsoft.AspNetCore.Http.DefaultHttpContext context) { }
|
||||||
public override System.IO.Stream Body { get { throw null; } set { } }
|
public override System.IO.Stream Body { get { throw null; } set { } }
|
||||||
public override System.IO.Pipelines.PipeReader BodyPipe { get { throw null; } set { } }
|
public override System.IO.Pipelines.PipeReader BodyReader { get { throw null; } set { } }
|
||||||
public override long? ContentLength { get { throw null; } set { } }
|
public override long? ContentLength { get { throw null; } set { } }
|
||||||
public override string ContentType { get { throw null; } set { } }
|
public override string ContentType { get { throw null; } set { } }
|
||||||
public override Microsoft.AspNetCore.Http.IRequestCookieCollection Cookies { get { throw null; } set { } }
|
public override Microsoft.AspNetCore.Http.IRequestCookieCollection Cookies { get { throw null; } set { } }
|
||||||
|
|
@ -355,7 +355,7 @@ namespace Microsoft.AspNetCore.Http.Internal
|
||||||
{
|
{
|
||||||
public DefaultHttpResponse(Microsoft.AspNetCore.Http.DefaultHttpContext context) { }
|
public DefaultHttpResponse(Microsoft.AspNetCore.Http.DefaultHttpContext context) { }
|
||||||
public override System.IO.Stream Body { get { throw null; } set { } }
|
public override System.IO.Stream Body { get { throw null; } set { } }
|
||||||
public override System.IO.Pipelines.PipeWriter BodyPipe { get { throw null; } set { } }
|
public override System.IO.Pipelines.PipeWriter BodyWriter { get { throw null; } set { } }
|
||||||
public override long? ContentLength { get { throw null; } set { } }
|
public override long? ContentLength { get { throw null; } set { } }
|
||||||
public override string ContentType { get { throw null; } set { } }
|
public override string ContentType { get { throw null; } set { } }
|
||||||
public override Microsoft.AspNetCore.Http.IResponseCookies Cookies { get { throw null; } }
|
public override Microsoft.AspNetCore.Http.IResponseCookies Cookies { get { throw null; } }
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
if (HasApplicationFormContentType(contentType))
|
if (HasApplicationFormContentType(contentType))
|
||||||
{
|
{
|
||||||
var encoding = FilterEncoding(contentType.Encoding);
|
var encoding = FilterEncoding(contentType.Encoding);
|
||||||
var formReader = new FormPipeReader(_request.BodyPipe, encoding)
|
var formReader = new FormPipeReader(_request.BodyReader, encoding)
|
||||||
{
|
{
|
||||||
ValueCountLimit = _options.ValueCountLimit,
|
ValueCountLimit = _options.ValueCountLimit,
|
||||||
KeyLengthLimit = _options.KeyLengthLimit,
|
KeyLengthLimit = _options.KeyLengthLimit,
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
_context = context;
|
_context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PipeReader RequestBodyPipe
|
public PipeReader Reader
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
_context = context;
|
_context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PipeWriter ResponseBodyPipe
|
public PipeWriter Writer
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -171,10 +171,10 @@ namespace Microsoft.AspNetCore.Http.Internal
|
||||||
set { RouteValuesFeature.RouteValues = value; }
|
set { RouteValuesFeature.RouteValues = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override PipeReader BodyPipe
|
public override PipeReader BodyReader
|
||||||
{
|
{
|
||||||
get { return RequestBodyPipeFeature.RequestBodyPipe; }
|
get { return RequestBodyPipeFeature.Reader; }
|
||||||
set { RequestBodyPipeFeature.RequestBodyPipe = value; }
|
set { RequestBodyPipeFeature.Reader = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
struct FeatureInterfaces
|
struct FeatureInterfaces
|
||||||
|
|
|
||||||
|
|
@ -109,10 +109,10 @@ namespace Microsoft.AspNetCore.Http.Internal
|
||||||
get { return HttpResponseFeature.HasStarted; }
|
get { return HttpResponseFeature.HasStarted; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override PipeWriter BodyPipe
|
public override PipeWriter BodyWriter
|
||||||
{
|
{
|
||||||
get { return ResponseBodyPipeFeature.ResponseBodyPipe; }
|
get { return ResponseBodyPipeFeature.Writer; }
|
||||||
set { ResponseBodyPipeFeature.ResponseBodyPipe = value; }
|
set { ResponseBodyPipeFeature.Writer = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnStarting(Func<object, Task> callback, object state)
|
public override void OnStarting(Func<object, Task> callback, object state)
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
await pipe.Writer.WriteAsync(formContent);
|
await pipe.Writer.WriteAsync(formContent);
|
||||||
pipe.Writer.Complete();
|
pipe.Writer.Complete();
|
||||||
|
|
||||||
context.Request.BodyPipe = pipe.Reader;
|
context.Request.BodyReader = pipe.Reader;
|
||||||
|
|
||||||
IFormFeature formFeature = new FormFeature(context.Request, new FormOptions() { BufferBody = bufferRequest });
|
IFormFeature formFeature = new FormFeature(context.Request, new FormOptions() { BufferBody = bufferRequest });
|
||||||
context.Features.Set<IFormFeature>(formFeature);
|
context.Features.Set<IFormFeature>(formFeature);
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,9 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
var expectedStream = new MemoryStream();
|
var expectedStream = new MemoryStream();
|
||||||
context.Request.Body = expectedStream;
|
context.Request.Body = expectedStream;
|
||||||
|
|
||||||
var provider = new RequestBodyPipeFeature(context);
|
var feature = new RequestBodyPipeFeature(context);
|
||||||
|
|
||||||
var pipeBody = provider.RequestBodyPipe;
|
var pipeBody = feature.Reader;
|
||||||
|
|
||||||
Assert.True(pipeBody is StreamPipeReader);
|
Assert.True(pipeBody is StreamPipeReader);
|
||||||
Assert.Equal(expectedStream, (pipeBody as StreamPipeReader).InnerStream);
|
Assert.Equal(expectedStream, (pipeBody as StreamPipeReader).InnerStream);
|
||||||
|
|
@ -32,9 +32,9 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
public async Task RequestBodyReadCanWorkWithPipe()
|
public async Task RequestBodyReadCanWorkWithPipe()
|
||||||
{
|
{
|
||||||
var expectedString = "abcdef";
|
var expectedString = "abcdef";
|
||||||
var provider = InitializeFeatureWithData(expectedString);
|
var feature = InitializeFeatureWithData(expectedString);
|
||||||
|
|
||||||
var data = await provider.RequestBodyPipe.ReadAsync();
|
var data = await feature.Reader.ReadAsync();
|
||||||
Assert.Equal(expectedString, GetStringFromReadResult(data));
|
Assert.Equal(expectedString, GetStringFromReadResult(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,12 +43,12 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
|
|
||||||
var provider = new RequestBodyPipeFeature(context);
|
var feature = new RequestBodyPipeFeature(context);
|
||||||
|
|
||||||
var pipeReader = new Pipe().Reader;
|
var pipeReader = new Pipe().Reader;
|
||||||
provider.RequestBodyPipe = pipeReader;
|
feature.Reader = pipeReader;
|
||||||
|
|
||||||
Assert.Equal(pipeReader, provider.RequestBodyPipe);
|
Assert.Equal(pipeReader, feature.Reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -56,25 +56,25 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
|
|
||||||
var provider = new RequestBodyPipeFeature(context);
|
var feature = new RequestBodyPipeFeature(context);
|
||||||
|
|
||||||
var expectedPipeReader = new Pipe().Reader;
|
var expectedPipeReader = new Pipe().Reader;
|
||||||
provider.RequestBodyPipe = expectedPipeReader;
|
feature.Reader = expectedPipeReader;
|
||||||
|
|
||||||
// Because the user set the RequestBodyPipe, this will return the user set pipeReader
|
// Because the user set the RequestBodyPipe, this will return the user set pipeReader
|
||||||
context.Request.Body = new MemoryStream();
|
context.Request.Body = new MemoryStream();
|
||||||
|
|
||||||
Assert.Equal(expectedPipeReader, provider.RequestBodyPipe);
|
Assert.Equal(expectedPipeReader, feature.Reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task RequestBodyDoesNotAffectUserSetPipe()
|
public async Task RequestBodyDoesNotAffectUserSetPipe()
|
||||||
{
|
{
|
||||||
var expectedString = "abcdef";
|
var expectedString = "abcdef";
|
||||||
var provider = InitializeFeatureWithData("hahaha");
|
var feature = InitializeFeatureWithData("hahaha");
|
||||||
provider.RequestBodyPipe = await GetPipeReaderWithData(expectedString);
|
feature.Reader = await GetPipeReaderWithData(expectedString);
|
||||||
|
|
||||||
var data = await provider.RequestBodyPipe.ReadAsync();
|
var data = await feature.Reader.ReadAsync();
|
||||||
Assert.Equal(expectedString, GetStringFromReadResult(data));
|
Assert.Equal(expectedString, GetStringFromReadResult(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,14 +85,14 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
|
|
||||||
context.Request.Body = new MemoryStream();
|
context.Request.Body = new MemoryStream();
|
||||||
|
|
||||||
var provider = new RequestBodyPipeFeature(context);
|
var feature = new RequestBodyPipeFeature(context);
|
||||||
|
|
||||||
var pipeBody = provider.RequestBodyPipe;
|
var pipeBody = feature.Reader;
|
||||||
|
|
||||||
// Requery the PipeReader after setting the body again.
|
// Requery the PipeReader after setting the body again.
|
||||||
var expectedStream = new MemoryStream();
|
var expectedStream = new MemoryStream();
|
||||||
context.Request.Body = expectedStream;
|
context.Request.Body = expectedStream;
|
||||||
pipeBody = provider.RequestBodyPipe;
|
pipeBody = feature.Reader;
|
||||||
|
|
||||||
Assert.True(pipeBody is StreamPipeReader);
|
Assert.True(pipeBody is StreamPipeReader);
|
||||||
Assert.Equal(expectedStream, (pipeBody as StreamPipeReader).InnerStream);
|
Assert.Equal(expectedStream, (pipeBody as StreamPipeReader).InnerStream);
|
||||||
|
|
@ -103,12 +103,12 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
context.Request.Body = new MemoryStream(Encoding.ASCII.GetBytes("hahaha"));
|
context.Request.Body = new MemoryStream(Encoding.ASCII.GetBytes("hahaha"));
|
||||||
var provider = new RequestBodyPipeFeature(context);
|
var feature = new RequestBodyPipeFeature(context);
|
||||||
var _ = provider.RequestBodyPipe;
|
var _ = feature.Reader;
|
||||||
|
|
||||||
var expectedString = "abcdef";
|
var expectedString = "abcdef";
|
||||||
context.Request.Body = new MemoryStream(Encoding.ASCII.GetBytes(expectedString));
|
context.Request.Body = new MemoryStream(Encoding.ASCII.GetBytes(expectedString));
|
||||||
var data = await provider.RequestBodyPipe.ReadAsync();
|
var data = await feature.Reader.ReadAsync();
|
||||||
Assert.Equal(expectedString, GetStringFromReadResult(data));
|
Assert.Equal(expectedString, GetStringFromReadResult(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
var expectedStream = new MemoryStream();
|
var expectedStream = new MemoryStream();
|
||||||
context.Response.Body = expectedStream;
|
context.Response.Body = expectedStream;
|
||||||
|
|
||||||
var provider = new ResponseBodyPipeFeature(context);
|
var feature = new ResponseBodyPipeFeature(context);
|
||||||
|
|
||||||
var pipeBody = provider.ResponseBodyPipe;
|
var pipeBody = feature.Writer;
|
||||||
|
|
||||||
Assert.True(pipeBody is StreamPipeWriter);
|
Assert.True(pipeBody is StreamPipeWriter);
|
||||||
Assert.Equal(expectedStream, (pipeBody as StreamPipeWriter).InnerStream);
|
Assert.Equal(expectedStream, (pipeBody as StreamPipeWriter).InnerStream);
|
||||||
|
|
@ -28,12 +28,12 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
public void ResponseBodySetPipeReaderReturnsSameValue()
|
public void ResponseBodySetPipeReaderReturnsSameValue()
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
var provider = new ResponseBodyPipeFeature(context);
|
var feature = new ResponseBodyPipeFeature(context);
|
||||||
|
|
||||||
var pipeWriter = new Pipe().Writer;
|
var pipeWriter = new Pipe().Writer;
|
||||||
provider.ResponseBodyPipe = pipeWriter;
|
feature.Writer = pipeWriter;
|
||||||
|
|
||||||
Assert.Equal(pipeWriter, provider.ResponseBodyPipe);
|
Assert.Equal(pipeWriter, feature.Writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -43,11 +43,11 @@ namespace Microsoft.AspNetCore.Http.Features
|
||||||
var expectedStream = new MemoryStream();
|
var expectedStream = new MemoryStream();
|
||||||
context.Response.Body = new MemoryStream();
|
context.Response.Body = new MemoryStream();
|
||||||
|
|
||||||
var provider = new ResponseBodyPipeFeature(context);
|
var feature = new ResponseBodyPipeFeature(context);
|
||||||
|
|
||||||
var pipeBody = provider.ResponseBodyPipe;
|
var pipeBody = feature.Writer;
|
||||||
context.Response.Body = expectedStream;
|
context.Response.Body = expectedStream;
|
||||||
pipeBody = provider.ResponseBodyPipe;
|
pipeBody = feature.Writer;
|
||||||
|
|
||||||
Assert.True(pipeBody is StreamPipeWriter);
|
Assert.True(pipeBody is StreamPipeWriter);
|
||||||
Assert.Equal(expectedStream, (pipeBody as StreamPipeWriter).InnerStream);
|
Assert.Equal(expectedStream, (pipeBody as StreamPipeWriter).InnerStream);
|
||||||
|
|
|
||||||
|
|
@ -244,41 +244,41 @@ namespace Microsoft.AspNetCore.Http.Internal
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_CanGet()
|
public void BodyReader_CanGet()
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
var bodyPipe = context.Request.BodyPipe;
|
var bodyPipe = context.Request.BodyReader;
|
||||||
Assert.NotNull(bodyPipe);
|
Assert.NotNull(bodyPipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_CanSet()
|
public void BodyReader_CanSet()
|
||||||
{
|
{
|
||||||
var pipeReader = new Pipe().Reader;
|
var pipeReader = new Pipe().Reader;
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
|
|
||||||
context.Request.BodyPipe = pipeReader;
|
context.Request.BodyReader = pipeReader;
|
||||||
|
|
||||||
Assert.Equal(pipeReader, context.Request.BodyPipe);
|
Assert.Equal(pipeReader, context.Request.BodyReader);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_WrapsStream()
|
public void BodyReader_WrapsStream()
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
var expectedStream = new MemoryStream();
|
var expectedStream = new MemoryStream();
|
||||||
context.Request.Body = expectedStream;
|
context.Request.Body = expectedStream;
|
||||||
|
|
||||||
var bodyPipe = context.Request.BodyPipe as StreamPipeReader;
|
var bodyPipe = context.Request.BodyReader as StreamPipeReader;
|
||||||
|
|
||||||
Assert.Equal(expectedStream, bodyPipe.InnerStream);
|
Assert.Equal(expectedStream, bodyPipe.InnerStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_ThrowsWhenSettingNull()
|
public void BodyReader_ThrowsWhenSettingNull()
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
Assert.Throws<ArgumentNullException>(() => context.Request.BodyPipe = null);
|
Assert.Throws<ArgumentNullException>(() => context.Request.BodyReader = null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class CustomRouteValuesFeature : IRouteValuesFeature
|
private class CustomRouteValuesFeature : IRouteValuesFeature
|
||||||
|
|
|
||||||
|
|
@ -65,41 +65,41 @@ namespace Microsoft.AspNetCore.Http.Internal
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_CanGet()
|
public void BodyWriter_CanGet()
|
||||||
{
|
{
|
||||||
var response = new DefaultHttpContext();
|
var response = new DefaultHttpContext();
|
||||||
var bodyPipe = response.Response.BodyPipe;
|
var bodyPipe = response.Response.BodyWriter;
|
||||||
|
|
||||||
Assert.NotNull(bodyPipe);
|
Assert.NotNull(bodyPipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_CanSet()
|
public void BodyWriter_CanSet()
|
||||||
{
|
{
|
||||||
var response = new DefaultHttpContext();
|
var response = new DefaultHttpContext();
|
||||||
var pipeWriter = new Pipe().Writer;
|
var pipeWriter = new Pipe().Writer;
|
||||||
response.Response.BodyPipe = pipeWriter;
|
response.Response.BodyWriter = pipeWriter;
|
||||||
|
|
||||||
Assert.Equal(pipeWriter, response.Response.BodyPipe);
|
Assert.Equal(pipeWriter, response.Response.BodyWriter);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_WrapsStream()
|
public void BodyWriter_WrapsStream()
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
var expectedStream = new MemoryStream();
|
var expectedStream = new MemoryStream();
|
||||||
context.Response.Body = expectedStream;
|
context.Response.Body = expectedStream;
|
||||||
|
|
||||||
var bodyPipe = context.Response.BodyPipe as StreamPipeWriter;
|
var bodyPipe = context.Response.BodyWriter as StreamPipeWriter;
|
||||||
|
|
||||||
Assert.Equal(expectedStream, bodyPipe.InnerStream);
|
Assert.Equal(expectedStream, bodyPipe.InnerStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void BodyPipe_ThrowsWhenSettingNull()
|
public void BodyWriter_ThrowsWhenSettingNull()
|
||||||
{
|
{
|
||||||
var context = new DefaultHttpContext();
|
var context = new DefaultHttpContext();
|
||||||
Assert.Throws<ArgumentNullException>(() => context.Response.BodyPipe = null);
|
Assert.Throws<ArgumentNullException>(() => context.Response.BodyWriter = null);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
|
||||||
|
|
@ -94,8 +94,8 @@ namespace JwtBearerSample
|
||||||
response.ContentType = "application/json";
|
response.ContentType = "application/json";
|
||||||
response.Headers[HeaderNames.CacheControl] = "no-cache";
|
response.Headers[HeaderNames.CacheControl] = "no-cache";
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
Serialize(Todos, response.BodyPipe);
|
Serialize(Todos, response.BodyWriter);
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -639,8 +639,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
string Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.ReasonPhrase { get { throw null; } set { } }
|
string Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.ReasonPhrase { get { throw null; } set { } }
|
||||||
int Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.StatusCode { get { throw null; } set { } }
|
int Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.StatusCode { get { throw null; } set { } }
|
||||||
bool Microsoft.AspNetCore.Http.Features.IHttpUpgradeFeature.IsUpgradableRequest { get { throw null; } }
|
bool Microsoft.AspNetCore.Http.Features.IHttpUpgradeFeature.IsUpgradableRequest { get { throw null; } }
|
||||||
System.IO.Pipelines.PipeReader Microsoft.AspNetCore.Http.Features.IRequestBodyPipeFeature.RequestBodyPipe { get { throw null; } set { } }
|
System.IO.Pipelines.PipeReader Microsoft.AspNetCore.Http.Features.IRequestBodyPipeFeature.Reader { get { throw null; } set { } }
|
||||||
System.IO.Pipelines.PipeWriter Microsoft.AspNetCore.Http.Features.IResponseBodyPipeFeature.ResponseBodyPipe { get { throw null; } set { } }
|
System.IO.Pipelines.PipeWriter Microsoft.AspNetCore.Http.Features.IResponseBodyPipeFeature.Writer { get { throw null; } set { } }
|
||||||
Microsoft.AspNetCore.Http.DefaultHttpContext Microsoft.AspNetCore.Http.IDefaultHttpContextContainer.HttpContext { get { throw null; } }
|
Microsoft.AspNetCore.Http.DefaultHttpContext Microsoft.AspNetCore.Http.IDefaultHttpContextContainer.HttpContext { get { throw null; } }
|
||||||
public Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpOutputProducer Output { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]protected set { } }
|
public Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpOutputProducer Output { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]protected set { } }
|
||||||
public string Path { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
public string Path { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PipeReader IRequestBodyPipeFeature.RequestBodyPipe
|
PipeReader IRequestBodyPipeFeature.Reader
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
@ -224,7 +224,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PipeWriter IResponseBodyPipeFeature.ResponseBodyPipe
|
PipeWriter IResponseBodyPipeFeature.Writer
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,10 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
{
|
{
|
||||||
await request.Body.ReadUntilEndAsync(buffer).DefaultTimeout();
|
await request.Body.ReadUntilEndAsync(buffer).DefaultTimeout();
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
var memory = response.BodyPipe.GetMemory(buffer.Length);
|
var memory = response.BodyWriter.GetMemory(buffer.Length);
|
||||||
buffer.CopyTo(memory);
|
buffer.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(buffer.Length);
|
response.BodyWriter.Advance(buffer.Length);
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -68,10 +68,10 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
response.Headers["Content-Length"] = bytes.Length.ToString();
|
response.Headers["Content-Length"] = bytes.Length.ToString();
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(bytes.Length);
|
var memory = response.BodyWriter.GetMemory(bytes.Length);
|
||||||
bytes.CopyTo(memory);
|
bytes.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(bytes.Length);
|
response.BodyWriter.Advance(bytes.Length);
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
for (int i = 0; i < 1024; i++)
|
for (int i = 0; i < 1024; i++)
|
||||||
{
|
{
|
||||||
await context.Response.BodyPipe.WriteAsync(new Memory<byte>(bytes, 0, bytes.Length));
|
await context.Response.BodyWriter.WriteAsync(new Memory<byte>(bytes, 0, bytes.Length));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -298,7 +298,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
{
|
{
|
||||||
for (var i = 0; i < 1000; i++)
|
for (var i = 0; i < 1000; i++)
|
||||||
{
|
{
|
||||||
await context.Response.BodyPipe.WriteAsync(new Memory<byte>(scratchBuffer, 0, scratchBuffer.Length), context.RequestAborted);
|
await context.Response.BodyWriter.WriteAsync(new Memory<byte>(scratchBuffer, 0, scratchBuffer.Length), context.RequestAborted);
|
||||||
await Task.Delay(10);
|
await Task.Delay(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -500,7 +500,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
{
|
{
|
||||||
for (; i < chunks; i++)
|
for (; i < chunks; i++)
|
||||||
{
|
{
|
||||||
await context.Response.BodyPipe.WriteAsync(new Memory<byte>(chunkData, 0, chunkData.Length), context.RequestAborted);
|
await context.Response.BodyWriter.WriteAsync(new Memory<byte>(chunkData, 0, chunkData.Length), context.RequestAborted);
|
||||||
await Task.Yield();
|
await Task.Yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -607,7 +607,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
{
|
{
|
||||||
for (var i = 0; i < chunks; i++)
|
for (var i = 0; i < chunks; i++)
|
||||||
{
|
{
|
||||||
await context.Response.BodyPipe.WriteAsync(new Memory<byte>(chunkData, 0, chunkData.Length), context.RequestAborted);
|
await context.Response.BodyWriter.WriteAsync(new Memory<byte>(chunkData, 0, chunkData.Length), context.RequestAborted);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException)
|
catch (OperationCanceledException)
|
||||||
|
|
@ -771,7 +771,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
for (var i = 0; i < chunkCount; i++)
|
for (var i = 0; i < chunkCount; i++)
|
||||||
{
|
{
|
||||||
await context.Response.BodyPipe.WriteAsync(new Memory<byte>(chunkData, 0, chunkData.Length), context.RequestAborted);
|
await context.Response.BodyWriter.WriteAsync(new Memory<byte>(chunkData, 0, chunkData.Length), context.RequestAborted);
|
||||||
}
|
}
|
||||||
|
|
||||||
appFuncCompleted.SetResult(null);
|
appFuncCompleted.SetResult(null);
|
||||||
|
|
@ -848,7 +848,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
context.Response.Headers[$"X-Custom-Header"] = headerStringValues;
|
context.Response.Headers[$"X-Custom-Header"] = headerStringValues;
|
||||||
context.Response.ContentLength = 0;
|
context.Response.ContentLength = 0;
|
||||||
|
|
||||||
await context.Response.BodyPipe.FlushAsync();
|
await context.Response.BodyWriter.FlushAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
using (var server = new TestServer(App, testContext, listenOptions))
|
using (var server = new TestServer(App, testContext, listenOptions))
|
||||||
|
|
|
||||||
|
|
@ -42,15 +42,15 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
var readResult = await request.BodyPipe.ReadAsync();
|
var readResult = await request.BodyReader.ReadAsync();
|
||||||
if (readResult.IsCompleted)
|
if (readResult.IsCompleted)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Need to copy here.
|
// Need to copy here.
|
||||||
await response.BodyPipe.WriteAsync(readResult.Buffer.ToArray());
|
await response.BodyWriter.WriteAsync(readResult.Buffer.ToArray());
|
||||||
|
|
||||||
request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -322,8 +322,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
var result = await request.BodyPipe.ReadAsync();
|
var result = await request.BodyReader.ReadAsync();
|
||||||
request.BodyPipe.AdvanceTo(result.Buffer.End);
|
request.BodyReader.AdvanceTo(result.Buffer.End);
|
||||||
if (result.IsCompleted)
|
if (result.IsCompleted)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
|
|
@ -828,12 +828,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
Assert.Equal("POST", request.Method);
|
Assert.Equal("POST", request.Method);
|
||||||
|
|
||||||
var readResult = await request.BodyPipe.ReadAsync();
|
var readResult = await request.BodyReader.ReadAsync();
|
||||||
request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
var requestTask = httpContext.Request.BodyPipe.ReadAsync();
|
var requestTask = httpContext.Request.BodyReader.ReadAsync();
|
||||||
|
|
||||||
httpContext.Request.BodyPipe.CancelPendingRead();
|
httpContext.Request.BodyReader.CancelPendingRead();
|
||||||
|
|
||||||
Assert.True((await requestTask).IsCanceled);
|
Assert.True((await requestTask).IsCanceled);
|
||||||
|
|
||||||
|
|
@ -841,7 +841,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
|
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -885,16 +885,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
Assert.Equal("POST", request.Method);
|
Assert.Equal("POST", request.Method);
|
||||||
|
|
||||||
var readResult = await request.BodyPipe.ReadAsync();
|
var readResult = await request.BodyReader.ReadAsync();
|
||||||
request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
httpContext.Request.BodyPipe.Complete();
|
httpContext.Request.BodyReader.Complete();
|
||||||
|
|
||||||
await Assert.ThrowsAsync<InvalidOperationException>(async () => await request.BodyPipe.ReadAsync());
|
await Assert.ThrowsAsync<InvalidOperationException>(async () => await request.BodyReader.ReadAsync());
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
|
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -937,14 +937,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
Assert.Equal("POST", request.Method);
|
Assert.Equal("POST", request.Method);
|
||||||
|
|
||||||
var readResult = await request.BodyPipe.ReadAsync();
|
var readResult = await request.BodyReader.ReadAsync();
|
||||||
request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
httpContext.Request.BodyPipe.Complete(new Exception());
|
httpContext.Request.BodyReader.Complete(new Exception());
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
|
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello "), 0, 6));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello "), 0, 6));
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("World!"), 0, 6));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("World!"), 0, 6));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -162,9 +162,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello "), 0, 6));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello "), 0, 6));
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(new byte[0], 0, 0));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(new byte[0], 0, 0));
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("World!"), 0, 6));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("World!"), 0, 6));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -244,7 +244,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(new byte[0], 0, 0));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(new byte[0], 0, 0));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -275,7 +275,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World!"), 0, 12));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World!"), 0, 12));
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -309,7 +309,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(new byte[0], 0, 0));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(new byte[0], 0, 0));
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -344,12 +344,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello "), 0, 6));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello "), 0, 6));
|
||||||
|
|
||||||
// Don't complete response until client has received the first chunk.
|
// Don't complete response until client has received the first chunk.
|
||||||
await flushWh.Task.DefaultTimeout();
|
await flushWh.Task.DefaultTimeout();
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("World!"), 0, 6));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("World!"), 0, 6));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -391,9 +391,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
response.Headers["Transfer-Encoding"] = "chunked";
|
response.Headers["Transfer-Encoding"] = "chunked";
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("6\r\nHello \r\n"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("6\r\nHello \r\n"), 0, 11));
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("6\r\nWorld!\r\n"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("6\r\nWorld!\r\n"), 0, 11));
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("0\r\n\r\n"), 0, 5));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("0\r\n\r\n"), 0, 5));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -430,17 +430,17 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
var memory = response.BodyPipe.GetMemory();
|
var memory = response.BodyWriter.GetMemory();
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory();
|
memory = response.BodyWriter.GetMemory();
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(memory);
|
secondPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -478,20 +478,20 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory();
|
var memory = response.BodyWriter.GetMemory();
|
||||||
length.Value = memory.Length;
|
length.Value = memory.Length;
|
||||||
semaphore.Release();
|
semaphore.Release();
|
||||||
|
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(memory.Length);
|
response.BodyWriter.Advance(memory.Length);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory();
|
memory = response.BodyWriter.GetMemory();
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(memory);
|
secondPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -534,22 +534,22 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory();
|
var memory = response.BodyWriter.GetMemory();
|
||||||
length.Value = memory.Length;
|
length.Value = memory.Length;
|
||||||
semaphore.Release();
|
semaphore.Release();
|
||||||
|
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(memory.Length);
|
response.BodyWriter.Advance(memory.Length);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory();
|
memory = response.BodyWriter.GetMemory();
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(memory);
|
secondPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -592,14 +592,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -637,14 +637,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
// To avoid using span in an async method
|
// To avoid using span in an async method
|
||||||
void NonAsyncMethod()
|
void NonAsyncMethod()
|
||||||
{
|
{
|
||||||
var span = response.BodyPipe.GetSpan(4096);
|
var span = response.BodyWriter.GetSpan(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
||||||
fisrtPartOfResponse.CopyTo(span);
|
fisrtPartOfResponse.CopyTo(span);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(span.Slice(6));
|
secondPartOfResponse.CopyTo(span.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
@ -686,10 +686,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.WriteAsync("World!");
|
await response.WriteAsync("World!");
|
||||||
}, testContext))
|
}, testContext))
|
||||||
|
|
@ -728,12 +728,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(0);
|
var memory = response.BodyWriter.GetMemory(0);
|
||||||
|
|
||||||
// Headers are already written to memory, sliced appropriately
|
// Headers are already written to memory, sliced appropriately
|
||||||
Assert.Equal(4005, memory.Length);
|
Assert.Equal(4005, memory.Length);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory(1000000);
|
memory = response.BodyWriter.GetMemory(1000000);
|
||||||
Assert.Equal(4005, memory.Length);
|
Assert.Equal(4005, memory.Length);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -771,10 +771,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', writeSize));
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', writeSize));
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(writeSize);
|
response.BodyWriter.Advance(writeSize);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -807,16 +807,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
||||||
await response.BodyPipe.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
await response.BodyWriter.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
||||||
await response.WriteAsync("hello, world");
|
await response.WriteAsync("hello, world");
|
||||||
|
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
|
|
|
||||||
|
|
@ -269,9 +269,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
using (var server = new TestServer(async context =>
|
using (var server = new TestServer(async context =>
|
||||||
{
|
{
|
||||||
await context.Response.BodyPipe.WriteAsync(Encoding.ASCII.GetBytes("Hello "));
|
await context.Response.BodyWriter.WriteAsync(Encoding.ASCII.GetBytes("Hello "));
|
||||||
await context.Response.BodyPipe.FlushAsync();
|
await context.Response.BodyWriter.FlushAsync();
|
||||||
await context.Response.BodyPipe.WriteAsync(Encoding.ASCII.GetBytes("World!"));
|
await context.Response.BodyWriter.WriteAsync(Encoding.ASCII.GetBytes("World!"));
|
||||||
}, serviceContext, listenOptions))
|
}, serviceContext, listenOptions))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
|
||||||
|
|
@ -740,15 +740,15 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
};
|
};
|
||||||
await InitializeConnectionAsync(async context =>
|
await InitializeConnectionAsync(async context =>
|
||||||
{
|
{
|
||||||
var readResult = await context.Request.BodyPipe.ReadAsync();
|
var readResult = await context.Request.BodyReader.ReadAsync();
|
||||||
while (!readResult.IsCompleted)
|
while (!readResult.IsCompleted)
|
||||||
{
|
{
|
||||||
context.Request.BodyPipe.AdvanceTo(readResult.Buffer.Start, readResult.Buffer.End);
|
context.Request.BodyReader.AdvanceTo(readResult.Buffer.Start, readResult.Buffer.End);
|
||||||
readResult = await context.Request.BodyPipe.ReadAsync();
|
readResult = await context.Request.BodyReader.ReadAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.Equal(12, readResult.Buffer.Length);
|
Assert.Equal(12, readResult.Buffer.Length);
|
||||||
context.Request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
context.Request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
});
|
});
|
||||||
|
|
||||||
await StartStreamAsync(1, headers, endStream: false);
|
await StartStreamAsync(1, headers, endStream: false);
|
||||||
|
|
@ -788,9 +788,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
};
|
};
|
||||||
await InitializeConnectionAsync(async context =>
|
await InitializeConnectionAsync(async context =>
|
||||||
{
|
{
|
||||||
var readResult = await context.Request.BodyPipe.ReadAsync();
|
var readResult = await context.Request.BodyReader.ReadAsync();
|
||||||
Assert.Equal(1, readResult.Buffer.Length);
|
Assert.Equal(1, readResult.Buffer.Length);
|
||||||
context.Request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
context.Request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
tcs.SetResult(null);
|
tcs.SetResult(null);
|
||||||
|
|
||||||
|
|
@ -1022,12 +1022,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
{
|
{
|
||||||
await InitializeConnectionAsync(async context =>
|
await InitializeConnectionAsync(async context =>
|
||||||
{
|
{
|
||||||
var readResult = await context.Request.BodyPipe.ReadAsync();
|
var readResult = await context.Request.BodyReader.ReadAsync();
|
||||||
Assert.True(readResult.IsCompleted);
|
Assert.True(readResult.IsCompleted);
|
||||||
Assert.Equal(12, readResult.Buffer.Length);
|
Assert.Equal(12, readResult.Buffer.Length);
|
||||||
context.Request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
context.Request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
readResult = await context.Request.BodyPipe.ReadAsync();
|
readResult = await context.Request.BodyReader.ReadAsync();
|
||||||
Assert.True(readResult.IsCompleted);
|
Assert.True(readResult.IsCompleted);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -2636,15 +2636,15 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
var memory = response.BodyPipe.GetMemory();
|
var memory = response.BodyWriter.GetMemory();
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory();
|
memory = response.BodyWriter.GetMemory();
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
||||||
secondPartOfResponse.CopyTo(memory);
|
secondPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
});
|
});
|
||||||
|
|
||||||
await StartStreamAsync(1, headers, endStream: true);
|
await StartStreamAsync(1, headers, endStream: true);
|
||||||
|
|
@ -2683,18 +2683,18 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory();
|
var memory = response.BodyWriter.GetMemory();
|
||||||
Assert.Equal(4096, memory.Length);
|
Assert.Equal(4096, memory.Length);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(memory.Length);
|
response.BodyWriter.Advance(memory.Length);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory();
|
memory = response.BodyWriter.GetMemory();
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("aaaaaa");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("aaaaaa");
|
||||||
secondPartOfResponse.CopyTo(memory);
|
secondPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
});
|
});
|
||||||
|
|
||||||
await StartStreamAsync(1, headers, endStream: true);
|
await StartStreamAsync(1, headers, endStream: true);
|
||||||
|
|
@ -2735,19 +2735,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory();
|
var memory = response.BodyWriter.GetMemory();
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes(new string('a', memory.Length));
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(memory.Length);
|
response.BodyWriter.Advance(memory.Length);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory();
|
memory = response.BodyWriter.GetMemory();
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("aaaaaa");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("aaaaaa");
|
||||||
secondPartOfResponse.CopyTo(memory);
|
secondPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
});
|
});
|
||||||
|
|
||||||
await StartStreamAsync(1, headers, endStream: true);
|
await StartStreamAsync(1, headers, endStream: true);
|
||||||
|
|
@ -2788,16 +2788,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
});
|
});
|
||||||
|
|
||||||
await StartStreamAsync(1, headers, endStream: true);
|
await StartStreamAsync(1, headers, endStream: true);
|
||||||
|
|
@ -2834,18 +2834,18 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
|
|
||||||
void NonAsyncMethod()
|
void NonAsyncMethod()
|
||||||
{
|
{
|
||||||
var span = response.BodyPipe.GetSpan();
|
var span = response.BodyWriter.GetSpan();
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(span);
|
fisrtPartOfResponse.CopyTo(span);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
||||||
secondPartOfResponse.CopyTo(span.Slice(6));
|
secondPartOfResponse.CopyTo(span.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
}
|
}
|
||||||
NonAsyncMethod();
|
NonAsyncMethod();
|
||||||
});
|
});
|
||||||
|
|
@ -2886,10 +2886,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.WriteAsync(" world");
|
await response.WriteAsync(" world");
|
||||||
});
|
});
|
||||||
|
|
@ -2933,10 +2933,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(0);
|
var memory = response.BodyWriter.GetMemory(0);
|
||||||
Assert.Equal(4096, memory.Length);
|
Assert.Equal(4096, memory.Length);
|
||||||
|
|
||||||
memory = response.BodyPipe.GetMemory(4096);
|
memory = response.BodyWriter.GetMemory(4096);
|
||||||
Assert.Equal(4096, memory.Length);
|
Assert.Equal(4096, memory.Length);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -2973,18 +2973,18 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
|
|
||||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
||||||
await response.BodyPipe.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
await response.BodyWriter.WriteAsync(Encoding.ASCII.GetBytes("hello, world"));
|
||||||
await response.WriteAsync("hello, world");
|
await response.WriteAsync("hello, world");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -3041,14 +3041,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
|
|
||||||
void NonAsyncMethod()
|
void NonAsyncMethod()
|
||||||
{
|
{
|
||||||
var span = response.BodyPipe.GetSpan(4096);
|
var span = response.BodyWriter.GetSpan(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(span);
|
fisrtPartOfResponse.CopyTo(span);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world");
|
||||||
secondPartOfResponse.CopyTo(span.Slice(6));
|
secondPartOfResponse.CopyTo(span.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
NonAsyncMethod();
|
NonAsyncMethod();
|
||||||
|
|
@ -3090,14 +3090,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
response.ContentLength = 12;
|
response.ContentLength = 12;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
});
|
});
|
||||||
|
|
||||||
await StartStreamAsync(1, headers, endStream: true);
|
await StartStreamAsync(1, headers, endStream: true);
|
||||||
|
|
@ -3175,16 +3175,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
response.ContentLength = 54;
|
response.ContentLength = 54;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world\r\n");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world\r\n");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(8);
|
response.BodyWriter.Advance(8);
|
||||||
await response.BodyPipe.FlushAsync();
|
await response.BodyWriter.FlushAsync();
|
||||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
||||||
await response.BodyPipe.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
await response.BodyWriter.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
||||||
await response.WriteAsync("hello, world");
|
await response.WriteAsync("hello, world");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -3236,7 +3236,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
};
|
};
|
||||||
await InitializeConnectionAsync(async context =>
|
await InitializeConnectionAsync(async context =>
|
||||||
{
|
{
|
||||||
context.Response.BodyPipe.Complete();
|
context.Response.BodyWriter.Complete();
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -3271,7 +3271,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
};
|
};
|
||||||
await InitializeConnectionAsync(async context =>
|
await InitializeConnectionAsync(async context =>
|
||||||
{
|
{
|
||||||
context.Response.BodyPipe.Complete();
|
context.Response.BodyWriter.Complete();
|
||||||
await context.Response.WriteAsync("");
|
await context.Response.WriteAsync("");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -3309,7 +3309,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
};
|
};
|
||||||
await InitializeConnectionAsync(async context =>
|
await InitializeConnectionAsync(async context =>
|
||||||
{
|
{
|
||||||
context.Response.BodyPipe.Complete(expectedException);
|
context.Response.BodyWriter.Complete(expectedException);
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,12 +65,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
PipeWriter bodyPipe = null;
|
PipeWriter bodyPipe = null;
|
||||||
using (var server = new TestServer(async context =>
|
using (var server = new TestServer(async context =>
|
||||||
{
|
{
|
||||||
if (context.Response.BodyPipe == bodyPipe)
|
if (context.Response.BodyWriter == bodyPipe)
|
||||||
{
|
{
|
||||||
responseBodyPersisted = true;
|
responseBodyPersisted = true;
|
||||||
}
|
}
|
||||||
bodyPipe = new StreamPipeWriter(new MemoryStream());
|
bodyPipe = new StreamPipeWriter(new MemoryStream());
|
||||||
context.Response.BodyPipe = bodyPipe;
|
context.Response.BodyWriter = bodyPipe;
|
||||||
|
|
||||||
await context.Response.WriteAsync("hello, world");
|
await context.Response.WriteAsync("hello, world");
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
|
|
@ -91,11 +91,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
PipeWriter bodyPipe = null;
|
PipeWriter bodyPipe = null;
|
||||||
using (var server = new TestServer(async context =>
|
using (var server = new TestServer(async context =>
|
||||||
{
|
{
|
||||||
if (context.Response.BodyPipe == bodyPipe)
|
if (context.Response.BodyWriter == bodyPipe)
|
||||||
{
|
{
|
||||||
responseBodyPersisted = true;
|
responseBodyPersisted = true;
|
||||||
}
|
}
|
||||||
bodyPipe = context.Response.BodyPipe;
|
bodyPipe = context.Response.BodyWriter;
|
||||||
|
|
||||||
await context.Response.WriteAsync("hello, world");
|
await context.Response.WriteAsync("hello, world");
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
|
|
@ -652,7 +652,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var readResult = await httpContext.Request.BodyPipe.ReadAsync().AsTask().DefaultTimeout();
|
var readResult = await httpContext.Request.BodyReader.ReadAsync().AsTask().DefaultTimeout();
|
||||||
// This will hang if 0 content length is not assumed by the server
|
// This will hang if 0 content length is not assumed by the server
|
||||||
Assert.True(readResult.IsCompleted);
|
Assert.True(readResult.IsCompleted);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
|
|
@ -700,10 +700,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var readResult = await httpContext.Request.BodyPipe.ReadAsync();
|
var readResult = await httpContext.Request.BodyReader.ReadAsync();
|
||||||
// This will hang if 0 content length is not assumed by the server
|
// This will hang if 0 content length is not assumed by the server
|
||||||
Assert.Equal(5, readResult.Buffer.Length);
|
Assert.Equal(5, readResult.Buffer.Length);
|
||||||
httpContext.Request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
httpContext.Request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -1351,12 +1351,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
Assert.Equal("POST", request.Method);
|
Assert.Equal("POST", request.Method);
|
||||||
|
|
||||||
var readResult = await request.BodyPipe.ReadAsync();
|
var readResult = await request.BodyReader.ReadAsync();
|
||||||
request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
var requestTask = httpContext.Request.BodyPipe.ReadAsync();
|
var requestTask = httpContext.Request.BodyReader.ReadAsync();
|
||||||
|
|
||||||
httpContext.Request.BodyPipe.CancelPendingRead();
|
httpContext.Request.BodyReader.CancelPendingRead();
|
||||||
|
|
||||||
Assert.True((await requestTask).IsCanceled);
|
Assert.True((await requestTask).IsCanceled);
|
||||||
|
|
||||||
|
|
@ -1364,7 +1364,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
|
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -1402,16 +1402,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
Assert.Equal("POST", request.Method);
|
Assert.Equal("POST", request.Method);
|
||||||
|
|
||||||
var readResult = await request.BodyPipe.ReadAsync();
|
var readResult = await request.BodyReader.ReadAsync();
|
||||||
request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
httpContext.Request.BodyPipe.Complete();
|
httpContext.Request.BodyReader.Complete();
|
||||||
|
|
||||||
await Assert.ThrowsAsync<InvalidOperationException>(async () => await request.BodyPipe.ReadAsync());
|
await Assert.ThrowsAsync<InvalidOperationException>(async () => await request.BodyReader.ReadAsync());
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
|
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -1448,14 +1448,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
Assert.Equal("POST", request.Method);
|
Assert.Equal("POST", request.Method);
|
||||||
|
|
||||||
var readResult = await request.BodyPipe.ReadAsync();
|
var readResult = await request.BodyReader.ReadAsync();
|
||||||
request.BodyPipe.AdvanceTo(readResult.Buffer.End);
|
request.BodyReader.AdvanceTo(readResult.Buffer.End);
|
||||||
|
|
||||||
httpContext.Request.BodyPipe.Complete(new Exception());
|
httpContext.Request.BodyReader.Complete(new Exception());
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
|
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async context =>
|
using (var server = new TestServer(async context =>
|
||||||
{
|
{
|
||||||
await context.Response.WriteAsync("hello, world");
|
await context.Response.WriteAsync("hello, world");
|
||||||
await context.Response.BodyPipe.FlushAsync();
|
await context.Response.BodyWriter.FlushAsync();
|
||||||
ex = Assert.Throws<InvalidOperationException>(() => context.Response.OnStarting(_ => Task.CompletedTask, null));
|
ex = Assert.Throws<InvalidOperationException>(() => context.Response.OnStarting(_ => Task.CompletedTask, null));
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
{
|
{
|
||||||
|
|
@ -155,14 +155,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var data = new byte[1024 * 1024 * 10];
|
var data = new byte[1024 * 1024 * 10];
|
||||||
|
|
||||||
var timerTask = Task.Delay(TimeSpan.FromSeconds(1));
|
var timerTask = Task.Delay(TimeSpan.FromSeconds(1));
|
||||||
var writeTask = context.Response.BodyPipe.WriteAsync(new Memory<byte>(data, 0, data.Length), cts.Token).AsTask().DefaultTimeout();
|
var writeTask = context.Response.BodyWriter.WriteAsync(new Memory<byte>(data, 0, data.Length), cts.Token).AsTask().DefaultTimeout();
|
||||||
var completedTask = await Task.WhenAny(writeTask, timerTask);
|
var completedTask = await Task.WhenAny(writeTask, timerTask);
|
||||||
|
|
||||||
while (completedTask == writeTask)
|
while (completedTask == writeTask)
|
||||||
{
|
{
|
||||||
await writeTask;
|
await writeTask;
|
||||||
timerTask = Task.Delay(TimeSpan.FromSeconds(1));
|
timerTask = Task.Delay(TimeSpan.FromSeconds(1));
|
||||||
writeTask = context.Response.BodyPipe.WriteAsync(new Memory<byte>(data, 0, data.Length), cts.Token).AsTask().DefaultTimeout();
|
writeTask = context.Response.BodyWriter.WriteAsync(new Memory<byte>(data, 0, data.Length), cts.Token).AsTask().DefaultTimeout();
|
||||||
completedTask = await Task.WhenAny(writeTask, timerTask);
|
completedTask = await Task.WhenAny(writeTask, timerTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -660,7 +660,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
await httpContext.Response.WriteAsync(response);
|
await httpContext.Response.WriteAsync(response);
|
||||||
await httpContext.Response.BodyPipe.FlushAsync();
|
await httpContext.Response.BodyWriter.FlushAsync();
|
||||||
}, new TestServiceContext(LoggerFactory, mockKestrelTrace.Object)))
|
}, new TestServiceContext(LoggerFactory, mockKestrelTrace.Object)))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -699,8 +699,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Response.ContentLength = 11;
|
httpContext.Response.ContentLength = 11;
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("hello,"), 0, 6));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("hello,"), 0, 6));
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes(" world"), 0, 6));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes(" world"), 0, 6));
|
||||||
}, serviceContext))
|
}, serviceContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -777,7 +777,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var response = Encoding.ASCII.GetBytes("hello, world");
|
var response = Encoding.ASCII.GetBytes("hello, world");
|
||||||
httpContext.Response.ContentLength = 5;
|
httpContext.Response.ContentLength = 5;
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, 0, response.Length));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, 0, response.Length));
|
||||||
}, serviceContext))
|
}, serviceContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -813,7 +813,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var response = Encoding.ASCII.GetBytes("hello, world");
|
var response = Encoding.ASCII.GetBytes("hello, world");
|
||||||
httpContext.Response.ContentLength = 5;
|
httpContext.Response.ContentLength = 5;
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, 0, response.Length));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, 0, response.Length));
|
||||||
}, serviceContext))
|
}, serviceContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -996,7 +996,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
if (flushResponse)
|
if (flushResponse)
|
||||||
{
|
{
|
||||||
await httpContext.Response.BodyPipe.FlushAsync();
|
await httpContext.Response.BodyWriter.FlushAsync();
|
||||||
}
|
}
|
||||||
}, serviceContext))
|
}, serviceContext))
|
||||||
{
|
{
|
||||||
|
|
@ -1163,7 +1163,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Response.ContentLength = 12;
|
httpContext.Response.ContentLength = 12;
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("hello, world"), 0, 12));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("hello, world"), 0, 12));
|
||||||
await flushed.Task;
|
await flushed.Task;
|
||||||
}, serviceContext))
|
}, serviceContext))
|
||||||
{
|
{
|
||||||
|
|
@ -1419,7 +1419,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
httpContext.Response.ContentLength = response.Length - 1;
|
httpContext.Response.ContentLength = response.Length - 1;
|
||||||
|
|
||||||
// If OnStarting is not run before verifying writes, an error response will be sent.
|
// If OnStarting is not run before verifying writes, an error response will be sent.
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, 0, response.Length));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, 0, response.Length));
|
||||||
}, serviceContext))
|
}, serviceContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -1505,8 +1505,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
httpContext.Response.ContentLength = response.Length - 1;
|
httpContext.Response.ContentLength = response.Length - 1;
|
||||||
|
|
||||||
// If OnStarting is not run before verifying writes, an error response will be sent.
|
// If OnStarting is not run before verifying writes, an error response will be sent.
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, 0, response.Length / 2));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, 0, response.Length / 2));
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, response.Length / 2, response.Length - response.Length / 2));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, response.Length / 2, response.Length - response.Length / 2));
|
||||||
}, serviceContext))
|
}, serviceContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -1595,7 +1595,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
httpContext.Response.ContentLength = response.Length - 1;
|
httpContext.Response.ContentLength = response.Length - 1;
|
||||||
|
|
||||||
// If OnStarting is not run before verifying writes, an error response will be sent.
|
// If OnStarting is not run before verifying writes, an error response will be sent.
|
||||||
return httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, 0, response.Length)).AsTask();
|
return httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, 0, response.Length)).AsTask();
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -1636,8 +1636,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
httpContext.Response.ContentLength = response.Length - 1;
|
httpContext.Response.ContentLength = response.Length - 1;
|
||||||
|
|
||||||
// If OnStarting is not run before verifying writes, an error response will be sent.
|
// If OnStarting is not run before verifying writes, an error response will be sent.
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, 0, response.Length / 2));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, 0, response.Length / 2));
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new Memory<byte>(response, response.Length / 2, response.Length - response.Length / 2));
|
await httpContext.Response.BodyWriter.WriteAsync(new Memory<byte>(response, response.Length / 2, response.Length - response.Length / 2));
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -2197,7 +2197,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
throw onStartingException;
|
throw onStartingException;
|
||||||
}, null);
|
}, null);
|
||||||
|
|
||||||
var writeException = await Assert.ThrowsAsync<ObjectDisposedException>(async () => await response.BodyPipe.FlushAsync());
|
var writeException = await Assert.ThrowsAsync<ObjectDisposedException>(async () => await response.BodyWriter.FlushAsync());
|
||||||
Assert.Same(onStartingException, writeException.InnerException);
|
Assert.Same(onStartingException, writeException.InnerException);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -2256,7 +2256,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -2303,7 +2303,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -2349,7 +2349,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
|
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -2392,7 +2392,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
}, null);
|
}, null);
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -2434,7 +2434,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
}, null);
|
}, null);
|
||||||
|
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello"), 0, 5));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello"), 0, 5));
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -2469,7 +2469,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
response.Headers["Content-Length"] = new[] { "11" };
|
response.Headers["Content-Length"] = new[] { "11" };
|
||||||
await response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
await response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello World"), 0, 11));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -2914,7 +2914,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
await httpContext.Response.StartAsync();
|
await httpContext.Response.StartAsync();
|
||||||
await httpContext.Response.BodyPipe.FlushAsync();
|
await httpContext.Response.BodyWriter.FlushAsync();
|
||||||
Assert.True(httpContext.Response.HasStarted);
|
Assert.True(httpContext.Response.HasStarted);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -3153,7 +3153,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var ioEx = Assert.Throws<InvalidOperationException>(() => context.Response.Body.Write(Encoding.ASCII.GetBytes("What!?"), 0, 6));
|
var ioEx = Assert.Throws<InvalidOperationException>(() => context.Response.Body.Write(Encoding.ASCII.GetBytes("What!?"), 0, 6));
|
||||||
Assert.Equal(CoreStrings.SynchronousWritesDisallowed, ioEx.Message);
|
Assert.Equal(CoreStrings.SynchronousWritesDisallowed, ioEx.Message);
|
||||||
|
|
||||||
return context.Response.BodyPipe.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello!"), 0, 6)).AsTask();
|
return context.Response.BodyWriter.WriteAsync(new Memory<byte>(Encoding.ASCII.GetBytes("Hello!"), 0, 6)).AsTask();
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -3215,7 +3215,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
Assert.Throws<ArgumentOutOfRangeException>(() => response.BodyPipe.Advance(-1));
|
Assert.Throws<ArgumentOutOfRangeException>(() => response.BodyWriter.Advance(-1));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -3250,7 +3250,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
Assert.Throws<InvalidOperationException>(() => response.BodyPipe.Advance(1));
|
Assert.Throws<InvalidOperationException>(() => response.BodyWriter.Advance(1));
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -3281,7 +3281,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
using (var server = new TestServer(httpContext =>
|
using (var server = new TestServer(httpContext =>
|
||||||
{
|
{
|
||||||
Assert.Throws<InvalidOperationException>(() => httpContext.Response.BodyPipe.GetMemory());
|
Assert.Throws<InvalidOperationException>(() => httpContext.Response.BodyWriter.GetMemory());
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
|
|
@ -3317,14 +3317,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
void NonAsyncMethod()
|
void NonAsyncMethod()
|
||||||
{
|
{
|
||||||
var span = response.BodyPipe.GetSpan(4096);
|
var span = response.BodyWriter.GetSpan(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
||||||
fisrtPartOfResponse.CopyTo(span);
|
fisrtPartOfResponse.CopyTo(span);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(span.Slice(6));
|
secondPartOfResponse.CopyTo(span.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
NonAsyncMethod();
|
NonAsyncMethod();
|
||||||
|
|
@ -3361,14 +3361,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
response.ContentLength = 12;
|
response.ContentLength = 12;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
|
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("Hello ");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
|
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes("World!");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
}, testContext))
|
}, testContext))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -3425,16 +3425,16 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
response.ContentLength = 54;
|
response.ContentLength = 54;
|
||||||
await response.StartAsync();
|
await response.StartAsync();
|
||||||
var memory = response.BodyPipe.GetMemory(4096);
|
var memory = response.BodyWriter.GetMemory(4096);
|
||||||
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
var fisrtPartOfResponse = Encoding.ASCII.GetBytes("hello,");
|
||||||
fisrtPartOfResponse.CopyTo(memory);
|
fisrtPartOfResponse.CopyTo(memory);
|
||||||
response.BodyPipe.Advance(6);
|
response.BodyWriter.Advance(6);
|
||||||
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world\r\n");
|
var secondPartOfResponse = Encoding.ASCII.GetBytes(" world\r\n");
|
||||||
secondPartOfResponse.CopyTo(memory.Slice(6));
|
secondPartOfResponse.CopyTo(memory.Slice(6));
|
||||||
response.BodyPipe.Advance(8);
|
response.BodyWriter.Advance(8);
|
||||||
|
|
||||||
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
await response.Body.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
||||||
await response.BodyPipe.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
await response.BodyWriter.WriteAsync(Encoding.ASCII.GetBytes("hello, world\r\n"));
|
||||||
await response.WriteAsync("hello, world");
|
await response.WriteAsync("hello, world");
|
||||||
|
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
|
|
@ -3465,7 +3465,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Response.BodyPipe.Complete();
|
httpContext.Response.BodyWriter.Complete();
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
{
|
{
|
||||||
|
|
@ -3492,7 +3492,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Response.BodyPipe.Complete();
|
httpContext.Response.BodyWriter.Complete();
|
||||||
await httpContext.Response.WriteAsync("test");
|
await httpContext.Response.WriteAsync("test");
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
{
|
{
|
||||||
|
|
@ -3522,7 +3522,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var expectedException = new Exception();
|
var expectedException = new Exception();
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Response.BodyPipe.Complete(expectedException);
|
httpContext.Response.BodyWriter.Complete(expectedException);
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
{
|
{
|
||||||
|
|
@ -3552,8 +3552,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
await httpContext.Response.StartAsync();
|
await httpContext.Response.StartAsync();
|
||||||
httpContext.Response.BodyPipe.Complete();
|
httpContext.Response.BodyWriter.Complete();
|
||||||
var memory = httpContext.Response.BodyPipe.GetMemory(); // Shouldn't throw
|
var memory = httpContext.Response.BodyWriter.GetMemory(); // Shouldn't throw
|
||||||
Assert.Equal(4096, memory.Length);
|
Assert.Equal(4096, memory.Length);
|
||||||
|
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
|
|
@ -3586,11 +3586,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
await httpContext.Response.StartAsync();
|
await httpContext.Response.StartAsync();
|
||||||
|
|
||||||
httpContext.Response.BodyPipe.Complete();
|
httpContext.Response.BodyWriter.Complete();
|
||||||
for (var i = 0; i < 5; i++)
|
for (var i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
var memory = httpContext.Response.BodyPipe.GetMemory(); // Shouldn't throw
|
var memory = httpContext.Response.BodyWriter.GetMemory(); // Shouldn't throw
|
||||||
httpContext.Response.BodyPipe.Advance(memory.Length);
|
httpContext.Response.BodyWriter.Advance(memory.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
|
|
@ -3622,7 +3622,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Response.Body = new MemoryStream();
|
httpContext.Response.Body = new MemoryStream();
|
||||||
httpContext.Response.BodyPipe = new Pipe().Writer;
|
httpContext.Response.BodyWriter = new Pipe().Writer;
|
||||||
Assert.IsType<WriteOnlyPipeStream>(httpContext.Response.Body);
|
Assert.IsType<WriteOnlyPipeStream>(httpContext.Response.Body);
|
||||||
|
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
|
|
@ -3653,10 +3653,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var memoryStream = new MemoryStream();
|
var memoryStream = new MemoryStream();
|
||||||
httpContext.Response.Body = memoryStream;
|
httpContext.Response.Body = memoryStream;
|
||||||
var bodyPipe1 = httpContext.Response.BodyPipe;
|
var bodyPipe1 = httpContext.Response.BodyWriter;
|
||||||
|
|
||||||
httpContext.Response.Body = memoryStream;
|
httpContext.Response.Body = memoryStream;
|
||||||
var bodyPipe2 = httpContext.Response.BodyPipe;
|
var bodyPipe2 = httpContext.Response.BodyWriter;
|
||||||
|
|
||||||
Assert.NotEqual(bodyPipe1, bodyPipe2);
|
Assert.NotEqual(bodyPipe1, bodyPipe2);
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
|
|
@ -3686,10 +3686,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var pipeWriter = new Pipe().Writer;
|
var pipeWriter = new Pipe().Writer;
|
||||||
httpContext.Response.BodyPipe = pipeWriter;
|
httpContext.Response.BodyWriter = pipeWriter;
|
||||||
var body1 = httpContext.Response.Body;
|
var body1 = httpContext.Response.Body;
|
||||||
|
|
||||||
httpContext.Response.BodyPipe = pipeWriter;
|
httpContext.Response.BodyWriter = pipeWriter;
|
||||||
var body2 = httpContext.Response.Body;
|
var body2 = httpContext.Response.Body;
|
||||||
|
|
||||||
Assert.NotEqual(body1, body2);
|
Assert.NotEqual(body1, body2);
|
||||||
|
|
@ -3719,9 +3719,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Response.BodyPipe = new Pipe().Writer;
|
httpContext.Response.BodyWriter = new Pipe().Writer;
|
||||||
httpContext.Response.Body = new MemoryStream();
|
httpContext.Response.Body = new MemoryStream();
|
||||||
Assert.IsType<StreamPipeWriter>(httpContext.Response.BodyPipe);
|
Assert.IsType<StreamPipeWriter>(httpContext.Response.BodyWriter);
|
||||||
Assert.IsType<MemoryStream>(httpContext.Response.Body);
|
Assert.IsType<MemoryStream>(httpContext.Response.Body);
|
||||||
|
|
||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
|
|
@ -3752,10 +3752,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
for (var i = 0; i < 3; i++)
|
for (var i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
httpContext.Response.BodyPipe = new Pipe().Writer;
|
httpContext.Response.BodyWriter = new Pipe().Writer;
|
||||||
await httpContext.Response.Body.WriteAsync(new byte[1]);
|
await httpContext.Response.Body.WriteAsync(new byte[1]);
|
||||||
httpContext.Response.Body = new MemoryStream();
|
httpContext.Response.Body = new MemoryStream();
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new byte[1]);
|
await httpContext.Response.BodyWriter.WriteAsync(new byte[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestMemoryPool will confirm that all rented blocks have been disposed, meaning dispose was called.
|
// TestMemoryPool will confirm that all rented blocks have been disposed, meaning dispose was called.
|
||||||
|
|
@ -3789,7 +3789,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var oldBody = httpContext.Response.Body;
|
var oldBody = httpContext.Response.Body;
|
||||||
httpContext.Response.Body = new MemoryStream();
|
httpContext.Response.Body = new MemoryStream();
|
||||||
|
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new byte[1]);
|
await httpContext.Response.BodyWriter.WriteAsync(new byte[1]);
|
||||||
await httpContext.Response.Body.WriteAsync(new byte[1]);
|
await httpContext.Response.Body.WriteAsync(new byte[1]);
|
||||||
|
|
||||||
Assert.Equal(2, httpContext.Response.Body.Length);
|
Assert.Equal(2, httpContext.Response.Body.Length);
|
||||||
|
|
@ -3798,7 +3798,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
|
|
||||||
// Even though we are restoring the original response body, we will create a
|
// Even though we are restoring the original response body, we will create a
|
||||||
// wrapper rather than restoring the original pipe.
|
// wrapper rather than restoring the original pipe.
|
||||||
Assert.IsType<StreamPipeWriter>(httpContext.Response.BodyPipe);
|
Assert.IsType<StreamPipeWriter>(httpContext.Response.BodyWriter);
|
||||||
|
|
||||||
}, new TestServiceContext(LoggerFactory)))
|
}, new TestServiceContext(LoggerFactory)))
|
||||||
{
|
{
|
||||||
|
|
@ -3825,17 +3825,17 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
using (var server = new TestServer(async httpContext =>
|
using (var server = new TestServer(async httpContext =>
|
||||||
{
|
{
|
||||||
var oldPipeWriter = httpContext.Response.BodyPipe;
|
var oldPipeWriter = httpContext.Response.BodyWriter;
|
||||||
var pipe = new Pipe();
|
var pipe = new Pipe();
|
||||||
httpContext.Response.BodyPipe = pipe.Writer;
|
httpContext.Response.BodyWriter = pipe.Writer;
|
||||||
|
|
||||||
await httpContext.Response.Body.WriteAsync(new byte[1]);
|
await httpContext.Response.Body.WriteAsync(new byte[1]);
|
||||||
await httpContext.Response.BodyPipe.WriteAsync(new byte[1]);
|
await httpContext.Response.BodyWriter.WriteAsync(new byte[1]);
|
||||||
|
|
||||||
var readResult = await pipe.Reader.ReadAsync();
|
var readResult = await pipe.Reader.ReadAsync();
|
||||||
Assert.Equal(2, readResult.Buffer.Length);
|
Assert.Equal(2, readResult.Buffer.Length);
|
||||||
|
|
||||||
httpContext.Response.BodyPipe = oldPipeWriter;
|
httpContext.Response.BodyWriter = oldPipeWriter;
|
||||||
|
|
||||||
// Even though we are restoring the original response body, we will create a
|
// Even though we are restoring the original response body, we will create a
|
||||||
// wrapper rather than restoring the original pipe.
|
// wrapper rather than restoring the original pipe.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue