Update to new corefx (#1561)

This commit is contained in:
Pavel Krymets 2018-03-08 14:23:20 -08:00 committed by GitHub
parent 99aa25e4d8
commit 4a4efe0f39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 36 additions and 50 deletions

View File

@ -22,16 +22,16 @@
<MicrosoftAspNetCoreHttpPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreHttpPackageVersion> <MicrosoftAspNetCoreHttpPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreHttpPackageVersion>
<MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion> <MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>
<MicrosoftAspNetCoreMvcPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreMvcPackageVersion> <MicrosoftAspNetCoreMvcPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreMvcPackageVersion>
<MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion> <MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion>2.1.0-a-preview2-pk-corefx0-17561</MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion>
<MicrosoftAspNetCoreRoutingPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreRoutingPackageVersion> <MicrosoftAspNetCoreRoutingPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreRoutingPackageVersion>
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreServerIISIntegrationPackageVersion> <MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
<MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.5.0-preview2-30220</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion> <MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.5.0-preview2-30220</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreServerKestrelPackageVersion> <MicrosoftAspNetCoreServerKestrelPackageVersion>2.1.0-a-preview2-pk-corefx0-17561</MicrosoftAspNetCoreServerKestrelPackageVersion>
<MicrosoftAspNetCoreStaticFilesPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreStaticFilesPackageVersion> <MicrosoftAspNetCoreStaticFilesPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreStaticFilesPackageVersion>
<MicrosoftAspNetCoreTestHostPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreTestHostPackageVersion> <MicrosoftAspNetCoreTestHostPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreTestHostPackageVersion>
<MicrosoftAspNetCoreTestingPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreTestingPackageVersion> <MicrosoftAspNetCoreTestingPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreTestingPackageVersion>
<MicrosoftAspNetCoreWebSocketsPackageVersion>2.1.0-preview2-30220</MicrosoftAspNetCoreWebSocketsPackageVersion> <MicrosoftAspNetCoreWebSocketsPackageVersion>2.1.0-a-preview2-pk-corefx0-16561</MicrosoftAspNetCoreWebSocketsPackageVersion>
<MicrosoftCSharpPackageVersion>4.5.0-preview2-26224-02</MicrosoftCSharpPackageVersion> <MicrosoftCSharpPackageVersion>4.5.0-preview2-26308-02</MicrosoftCSharpPackageVersion>
<MicrosoftEntityFrameworkCoreDesignPackageVersion>2.1.0-preview2-30220</MicrosoftEntityFrameworkCoreDesignPackageVersion> <MicrosoftEntityFrameworkCoreDesignPackageVersion>2.1.0-preview2-30220</MicrosoftEntityFrameworkCoreDesignPackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.1.0-preview2-30220</MicrosoftEntityFrameworkCoreSqlServerPackageVersion> <MicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.1.0-preview2-30220</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>2.1.0-preview2-30220</MicrosoftEntityFrameworkCoreToolsPackageVersion> <MicrosoftEntityFrameworkCoreToolsPackageVersion>2.1.0-preview2-30220</MicrosoftEntityFrameworkCoreToolsPackageVersion>
@ -53,21 +53,21 @@
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.1.0-preview2-30220</MicrosoftExtensionsSecurityHelperSourcesPackageVersion> <MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.1.0-preview2-30220</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>2.1.0-preview2-30220</MicrosoftExtensionsValueStopwatchSourcesPackageVersion> <MicrosoftExtensionsValueStopwatchSourcesPackageVersion>2.1.0-preview2-30220</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
<MicrosoftNETCoreApp20PackageVersion>2.0.0</MicrosoftNETCoreApp20PackageVersion> <MicrosoftNETCoreApp20PackageVersion>2.0.0</MicrosoftNETCoreApp20PackageVersion>
<MicrosoftNETCoreApp21PackageVersion>2.1.0-preview2-26225-03</MicrosoftNETCoreApp21PackageVersion> <MicrosoftNETCoreApp21PackageVersion>2.1.0-preview2-26308-01</MicrosoftNETCoreApp21PackageVersion>
<MicrosoftNETTestSdkPackageVersion>15.6.0</MicrosoftNETTestSdkPackageVersion> <MicrosoftNETTestSdkPackageVersion>15.6.0</MicrosoftNETTestSdkPackageVersion>
<MoqPackageVersion>4.7.49</MoqPackageVersion> <MoqPackageVersion>4.7.49</MoqPackageVersion>
<MsgPackCliPackageVersion>1.0.0-rc</MsgPackCliPackageVersion> <MsgPackCliPackageVersion>1.0.0-rc</MsgPackCliPackageVersion>
<NewtonsoftJsonPackageVersion>10.0.1</NewtonsoftJsonPackageVersion> <NewtonsoftJsonPackageVersion>10.0.1</NewtonsoftJsonPackageVersion>
<StackExchangeRedisStrongNamePackageVersion>1.2.4</StackExchangeRedisStrongNamePackageVersion> <StackExchangeRedisStrongNamePackageVersion>1.2.4</StackExchangeRedisStrongNamePackageVersion>
<SystemBuffersPackageVersion>4.5.0-preview2-26224-02</SystemBuffersPackageVersion> <SystemBuffersPackageVersion>4.5.0-preview2-26308-02</SystemBuffersPackageVersion>
<SystemIOPipelinesPackageVersion>4.5.0-preview2-26224-02</SystemIOPipelinesPackageVersion> <SystemIOPipelinesPackageVersion>4.5.0-preview2-26308-02</SystemIOPipelinesPackageVersion>
<SystemMemoryPackageVersion>4.5.0-preview2-26224-02</SystemMemoryPackageVersion> <SystemMemoryPackageVersion>4.5.0-preview2-26308-02</SystemMemoryPackageVersion>
<SystemNumericsVectorsPackageVersion>4.5.0-preview2-26224-02</SystemNumericsVectorsPackageVersion> <SystemNumericsVectorsPackageVersion>4.5.0-preview2-26308-02</SystemNumericsVectorsPackageVersion>
<SystemReactiveLinqPackageVersion>3.1.1</SystemReactiveLinqPackageVersion> <SystemReactiveLinqPackageVersion>3.1.1</SystemReactiveLinqPackageVersion>
<SystemReflectionEmitPackageVersion>4.3.0</SystemReflectionEmitPackageVersion> <SystemReflectionEmitPackageVersion>4.3.0</SystemReflectionEmitPackageVersion>
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.5.0-preview2-26224-02</SystemRuntimeCompilerServicesUnsafePackageVersion> <SystemRuntimeCompilerServicesUnsafePackageVersion>4.5.0-preview2-26308-02</SystemRuntimeCompilerServicesUnsafePackageVersion>
<SystemThreadingChannelsPackageVersion>4.5.0-preview2-26224-02</SystemThreadingChannelsPackageVersion> <SystemThreadingChannelsPackageVersion>4.5.0-preview2-26308-02</SystemThreadingChannelsPackageVersion>
<SystemThreadingTasksExtensionsPackageVersion>4.5.0-preview2-26224-02</SystemThreadingTasksExtensionsPackageVersion> <SystemThreadingTasksExtensionsPackageVersion>4.5.0-preview2-26308-02</SystemThreadingTasksExtensionsPackageVersion>
<XunitPackageVersion>2.3.1</XunitPackageVersion> <XunitPackageVersion>2.3.1</XunitPackageVersion>
<XunitRunnerVisualStudioPackageVersion>2.4.0-beta.1.build3945</XunitRunnerVisualStudioPackageVersion> <XunitRunnerVisualStudioPackageVersion>2.4.0-beta.1.build3945</XunitRunnerVisualStudioPackageVersion>
</PropertyGroup> </PropertyGroup>

View File

@ -65,11 +65,9 @@ namespace SocketsSample.EndPoints
private Task Broadcast(byte[] payload) private Task Broadcast(byte[] payload)
{ {
var tasks = new List<Task>(Connections.Count); var tasks = new List<Task>(Connections.Count);
async Task<FlushResult> ToTask(PipeAwaiter<FlushResult> awaiter) => await awaiter;
foreach (var c in Connections) foreach (var c in Connections)
{ {
tasks.Add(ToTask(c.Transport.Output.WriteAsync(payload))); tasks.Add(c.Transport.Output.WriteAsync(payload).AsTask());
} }
return Task.WhenAll(tasks); return Task.WhenAll(tasks);

View File

@ -63,11 +63,11 @@ namespace System.IO.Pipelines
} }
#if NETCOREAPP2_1 #if NETCOREAPP2_1
public override Task WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default) public override ValueTask WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default)
{ {
_pipeWriter.Write(source.Span); _pipeWriter.Write(source.Span);
_length += source.Length; _length += source.Length;
return Task.CompletedTask; return new ValueTask(Task.CompletedTask);
} }
#endif #endif
} }

View File

@ -20,7 +20,7 @@ namespace System.Net.WebSockets
#if NETCOREAPP2_1 #if NETCOREAPP2_1
if (buffer.IsSingleSegment) if (buffer.IsSingleSegment)
{ {
return webSocket.SendAsync(buffer.First, webSocketMessageType, endOfMessage: true, cancellationToken); return webSocket.SendAsync(buffer.First, webSocketMessageType, endOfMessage: true, cancellationToken).AsTask();
} }
else else
{ {

View File

@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.SignalR.Internal.Protocol
} }
else else
{ {
consumed = buffer.GetPosition(separator.Value, 1); consumed = buffer.GetPosition(1, separator.Value);
examined = consumed; examined = consumed;
} }

View File

@ -206,7 +206,7 @@ namespace Microsoft.AspNetCore.Sockets.Client
} }
} }
} }
if (_transport == null) if (_transport == null)
{ {
throw new InvalidOperationException("Unable to connect to the server with any of the available transports."); throw new InvalidOperationException("Unable to connect to the server with any of the available transports.");
@ -367,7 +367,7 @@ namespace Microsoft.AspNetCore.Sockets.Client
private async Task StartTransport(Uri connectUrl, TransportType transportType) private async Task StartTransport(Uri connectUrl, TransportType transportType)
{ {
var options = new PipeOptions(readerScheduler: PipeScheduler.ThreadPool); var options = new PipeOptions(writerScheduler: PipeScheduler.Inline, readerScheduler: PipeScheduler.ThreadPool, useSynchronizationContext: false);
var pair = DuplexPipe.CreateConnectionPair(options, options); var pair = DuplexPipe.CreateConnectionPair(options, options);
_transportChannel = pair.Transport; _transportChannel = pair.Transport;
_transport = _transportFactory.CreateTransport(transportType); _transport = _transportFactory.CreateTransport(transportType);

View File

@ -64,7 +64,7 @@ namespace System.IO.Pipelines
private static async Task WriteToStream(Stream stream, ReadOnlyMemory<byte> readOnlyMemory) private static async Task WriteToStream(Stream stream, ReadOnlyMemory<byte> readOnlyMemory)
{ {
var memory = MemoryMarshal.AsMemory(readOnlyMemory); var memory = MemoryMarshal.AsMemory(readOnlyMemory);
if (memory.TryGetArray(out ArraySegment<byte> data)) if (MemoryMarshal.TryGetArray(memory, out ArraySegment<byte> data))
{ {
await stream.WriteAsync(data.Array, data.Offset, data.Count) await stream.WriteAsync(data.Array, data.Offset, data.Count)
.ConfigureAwait(continueOnCapturedContext: false); .ConfigureAwait(continueOnCapturedContext: false);

View File

@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Sockets.Internal.Formatters
return ParseResult.Incomplete; return ParseResult.Incomplete;
} }
lineEnd = buffer.GetPosition(lineEnd, 1); lineEnd = buffer.GetPosition(1, lineEnd);
var line = ConvertBufferToSpan(buffer.Slice(start, lineEnd)); var line = ConvertBufferToSpan(buffer.Slice(start, lineEnd));
buffer = buffer.Slice(line.Length); buffer = buffer.Slice(line.Length);

View File

@ -5,6 +5,7 @@ using System;
using System.Diagnostics; using System.Diagnostics;
using System.IO.Pipelines; using System.IO.Pipelines;
using System.Net.WebSockets; using System.Net.WebSockets;
using System.Runtime.InteropServices;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Sockets.Client.Http; using Microsoft.AspNetCore.Sockets.Client.Http;
@ -151,7 +152,7 @@ namespace Microsoft.AspNetCore.Sockets.Client
#if NETCOREAPP2_1 #if NETCOREAPP2_1
var receiveResult = await socket.ReceiveAsync(memory, CancellationToken.None); var receiveResult = await socket.ReceiveAsync(memory, CancellationToken.None);
#else #else
var isArray = memory.TryGetArray(out var arraySegment); var isArray = MemoryMarshal.TryGetArray<byte>(memory, out var arraySegment);
Debug.Assert(isArray); Debug.Assert(isArray);
// Exceptions are handled above where the send and receive tasks are being run. // Exceptions are handled above where the send and receive tasks are being run.

View File

@ -514,8 +514,8 @@ namespace Microsoft.AspNetCore.Sockets
private DefaultConnectionContext CreateConnectionInternal(HttpSocketOptions options) private DefaultConnectionContext CreateConnectionInternal(HttpSocketOptions options)
{ {
var transportPipeOptions = new PipeOptions(pauseWriterThreshold: options.TransportMaxBufferSize, resumeWriterThreshold: options.TransportMaxBufferSize / 2, readerScheduler: PipeScheduler.ThreadPool); var transportPipeOptions = new PipeOptions(pauseWriterThreshold: options.TransportMaxBufferSize, resumeWriterThreshold: options.TransportMaxBufferSize / 2, readerScheduler: PipeScheduler.ThreadPool, useSynchronizationContext: false);
var appPipeOptions = new PipeOptions(pauseWriterThreshold: options.ApplicationMaxBufferSize, resumeWriterThreshold: options.ApplicationMaxBufferSize / 2, readerScheduler: PipeScheduler.ThreadPool); var appPipeOptions = new PipeOptions(pauseWriterThreshold: options.ApplicationMaxBufferSize, resumeWriterThreshold: options.ApplicationMaxBufferSize / 2, readerScheduler: PipeScheduler.ThreadPool, useSynchronizationContext: false);
return _manager.CreateConnection(transportPipeOptions, appPipeOptions); return _manager.CreateConnection(transportPipeOptions, appPipeOptions);
} }

View File

@ -5,6 +5,7 @@ using System;
using System.Diagnostics; using System.Diagnostics;
using System.IO.Pipelines; using System.IO.Pipelines;
using System.Net.WebSockets; using System.Net.WebSockets;
using System.Runtime.InteropServices;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
@ -143,7 +144,7 @@ namespace Microsoft.AspNetCore.Sockets.Internal.Transports
#if NETCOREAPP2_1 #if NETCOREAPP2_1
var receiveResult = await socket.ReceiveAsync(memory, CancellationToken.None); var receiveResult = await socket.ReceiveAsync(memory, CancellationToken.None);
#else #else
var isArray = memory.TryGetArray(out var arraySegment); var isArray = MemoryMarshal.TryGetArray<byte>(memory, out var arraySegment);
Debug.Assert(isArray); Debug.Assert(isArray);
// Exceptions are handled above where the send and receive tasks are being run. // Exceptions are handled above where the send and receive tasks are being run.

View File

@ -333,7 +333,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests
var channel = await connection.StreamAsync<int>("Stream", 1000, cts.Token).OrTimeout(); var channel = await connection.StreamAsync<int>("Stream", 1000, cts.Token).OrTimeout();
await channel.WaitToReadAsync().OrTimeout(); await channel.WaitToReadAsync().AsTask().OrTimeout();
cts.Cancel(); cts.Cancel();
var results = await channel.ReadAllAsync().OrTimeout(); var results = await channel.ReadAllAsync().OrTimeout();
@ -369,7 +369,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests
var channel = await connection.StreamAsync<int>("Stream", 5, cts.Token).OrTimeout(); var channel = await connection.StreamAsync<int>("Stream", 5, cts.Token).OrTimeout();
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => channel.WaitToReadAsync().OrTimeout()); await Assert.ThrowsAnyAsync<OperationCanceledException>(() => channel.WaitToReadAsync().AsTask().OrTimeout());
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -186,7 +186,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
var parseResult = parser.ParseMessage(result.Buffer, out var consumed, out var examined, out var message); var parseResult = parser.ParseMessage(result.Buffer, out var consumed, out var examined, out var message);
Assert.Equal(ServerSentEventsMessageParser.ParseResult.Completed, parseResult); Assert.Equal(ServerSentEventsMessageParser.ParseResult.Completed, parseResult);
Assert.Equal("foo", Encoding.UTF8.GetString(message)); Assert.Equal("foo", Encoding.UTF8.GetString(message));
Assert.Equal(consumed, result.Buffer.GetPosition(result.Buffer.Start, message1.Length)); Assert.Equal(consumed, result.Buffer.GetPosition(message1.Length));
pipe.Reader.AdvanceTo(consumed, examined); pipe.Reader.AdvanceTo(consumed, examined);
Assert.Equal(consumed, examined); Assert.Equal(consumed, examined);

View File

@ -109,7 +109,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
var json = JsonConvert.SerializeObject(jsonObject, Formatting.None); var json = JsonConvert.SerializeObject(jsonObject, Formatting.None);
var bytes = FormatMessageToArray(Encoding.UTF8.GetBytes(json)); var bytes = FormatMessageToArray(Encoding.UTF8.GetBytes(json));
return _receivedMessages.Writer.WriteAsync(bytes); return _receivedMessages.Writer.WriteAsync(bytes).AsTask();
} }
private byte[] FormatMessageToArray(byte[] message) private byte[] FormatMessageToArray(byte[] message)

View File

@ -303,7 +303,7 @@ namespace Microsoft.AspNetCore.SignalR.Common.Tests.Internal.Protocol
AssertMessages(testData.Encoded, bytes); AssertMessages(testData.Encoded, bytes);
// Unframe the message to check the binary encoding // Unframe the message to check the binary encoding
var byteSpan = bytes.AsReadOnlySpan(); ReadOnlySpan<byte> byteSpan = bytes.AsSpan();
Assert.True(BinaryMessageParser.TryParseMessage(ref byteSpan, out var unframed)); Assert.True(BinaryMessageParser.TryParseMessage(ref byteSpan, out var unframed));
// Check the baseline binary encoding, use Assert.True in order to configure the error message // Check the baseline binary encoding, use Assert.True in order to configure the error message

View File

@ -61,7 +61,7 @@ namespace System.IO.Pipelines
pipeReader.AdvanceTo(result.Buffer.Start, result.Buffer.End); pipeReader.AdvanceTo(result.Buffer.Start, result.Buffer.End);
continue; continue;
} }
pipeReader.AdvanceTo(result.Buffer.GetPosition(result.Buffer.Start, numBytes)); pipeReader.AdvanceTo(result.Buffer.GetPosition(numBytes));
break; break;
} }
} }

View File

@ -93,10 +93,5 @@ namespace System.Threading.Tasks
return "Operation timed out"; return "Operation timed out";
} }
} }
public static async Task<T> AsTask<T>(this PipeAwaiter<T> awaiter)
{
return await awaiter;
}
} }
} }

View File

@ -1362,14 +1362,8 @@ namespace Microsoft.AspNetCore.Sockets.Tests
{ {
public override Task OnConnectedAsync(ConnectionContext connection) public override Task OnConnectedAsync(ConnectionContext connection)
{ {
var waitHandle = new ManualResetEventSlim(); var result = connection.Transport.Input.ReadAsync().AsTask().Result;
var awaiter = connection.Transport.Input.ReadAsync();
awaiter.OnCompleted(waitHandle.Set);
waitHandle.Wait();
var result = awaiter.GetResult();
connection.Transport.Input.AdvanceTo(result.Buffer.End); connection.Transport.Input.AdvanceTo(result.Buffer.End);
return Task.CompletedTask; return Task.CompletedTask;
} }
} }

View File

@ -58,7 +58,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
var connection = new DefaultConnectionContext("foo", pair.Transport, pair.Application); var connection = new DefaultConnectionContext("foo", pair.Transport, pair.Application);
var context = new DefaultHttpContext(); var context = new DefaultHttpContext();
var ms = new MemoryStream(); var ms = new MemoryStream();
context.Response.Body = ms; context.Response.Body = ms;
var sse = new ServerSentEventsTransport(connection.Application.Input, connectionId: string.Empty, loggerFactory: new LoggerFactory()); var sse = new ServerSentEventsTransport(connection.Application.Input, connectionId: string.Empty, loggerFactory: new LoggerFactory());
@ -66,12 +66,9 @@ namespace Microsoft.AspNetCore.Sockets.Tests
var task = sse.ProcessRequestAsync(context, context.RequestAborted); var task = sse.ProcessRequestAsync(context, context.RequestAborted);
await connection.Transport.Output.WriteAsync(Encoding.ASCII.GetBytes("Hello")); await connection.Transport.Output.WriteAsync(Encoding.ASCII.GetBytes("Hello"));
Assert.Equal(":\r\ndata: Hello\r\n\r\n", Encoding.ASCII.GetString(ms.ToArray()));
connection.Transport.Output.Complete(); connection.Transport.Output.Complete();
await task.OrTimeout(); await task.OrTimeout();
Assert.Equal(":\r\ndata: Hello\r\n\r\n", Encoding.ASCII.GetString(ms.ToArray()));
} }
[Theory] [Theory]