From 8624b82b2b34a150c1b5baf70df77d78e6af3127 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Mon, 7 Jul 2014 13:02:18 -0700 Subject: [PATCH] Improving callback exception support Also renaming KestralTests to KestrelTests --- .../Http/Connection.cs | 16 ++++-- .../Http/Frame.cs | 28 ++++++++-- .../Http/FrameResponseStream.cs | 32 ++++++++++- .../Http/Listener.cs | 16 ++++-- .../Http/SocketOutput.cs | 18 +++--- .../Infrastructure/KestrelThread.cs | 1 + .../Networking/UvStreamHandle.cs | 56 ++++++++++++++----- .../Networking/UvWriteRequest.cs | 33 +++++++++-- .../EngineTests.cs | 36 ++++++++++-- .../MessageBodyExchangerTests.cs | 2 +- .../MessageBodyTests.cs | 2 +- ...icrosoft.AspNet.Server.KestrelTests.kproj} | 0 .../NetworkingTests.cs | 24 ++++---- .../Program.cs | 4 +- .../TestConnection.cs | 2 +- .../TestInput.cs | 4 +- .../TestServer.cs | 2 +- 17 files changed, 209 insertions(+), 67 deletions(-) rename test/Microsoft.AspNet.Server.KestralTests/{Microsoft.AspNet.Server.KestralTests.kproj => Microsoft.AspNet.Server.KestrelTests.kproj} (100%) diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/Connection.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/Connection.cs index 8dffb3fc1f..486e0a82ec 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/Connection.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/Connection.cs @@ -4,6 +4,7 @@ using System; using System.Threading.Tasks; using Microsoft.AspNet.Server.Kestrel.Networking; +using System.Diagnostics; namespace Microsoft.AspNet.Server.Kestrel.Http { @@ -39,7 +40,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http public class Connection : ConnectionContext, IConnectionControl { - private static readonly Action _readCallback = ReadCallback; + private static readonly Action _readCallback = ReadCallback; private static readonly Func _allocCallback = AllocCallback; private static Libuv.uv_buf_t AllocCallback(UvStreamHandle handle, int suggestedSize, object state) @@ -47,9 +48,9 @@ namespace Microsoft.AspNet.Server.Kestrel.Http return ((Connection)state).OnAlloc(handle, suggestedSize); } - private static void ReadCallback(UvStreamHandle handle, int nread, object state) + private static void ReadCallback(UvStreamHandle handle, int nread, Exception error, object state) { - ((Connection)state).OnRead(handle, nread); + ((Connection)state).OnRead(handle, nread, error); } private readonly UvStreamHandle _socket; @@ -79,14 +80,19 @@ namespace Microsoft.AspNet.Server.Kestrel.Http 2048); } - private void OnRead(UvStreamHandle handle, int nread) + private void OnRead(UvStreamHandle handle, int nread, Exception error) { SocketInput.Unpin(nread); - if (nread == 0) + if (nread == 0 || error != null) { SocketInput.RemoteIntakeFin = true; KestrelTrace.Log.ConnectionReadFin(_connectionId); + + if (error != null) + { + Trace.WriteLine("Connection.OnRead " + error.ToString()); + } } else { diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/Frame.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/Frame.cs index fd0696d180..1f8552459b 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/Frame.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/Frame.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text; @@ -38,7 +39,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http public interface IFrameControl { void ProduceContinue(); - void Write(ArraySegment data, Action callback, object state); + void Write(ArraySegment data, Action callback, object state); } public class Frame : FrameContext, IFrameControl @@ -229,7 +230,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http } - public void Write(ArraySegment data, Action callback, object state) + public void Write(ArraySegment data, Action callback, object state) { ProduceStart(); SocketOutput.Write(data, callback, state); @@ -255,7 +256,16 @@ namespace Microsoft.AspNet.Server.Kestrel.Http RequestHeaders.TryGetValue("Expect", out expect) && (expect.FirstOrDefault() ?? "").Equals("100-continue", StringComparison.OrdinalIgnoreCase)) { - SocketOutput.Write(new ArraySegment(_continueBytes, 0, _continueBytes.Length), _ => { }, null); + SocketOutput.Write( + new ArraySegment(_continueBytes, 0, _continueBytes.Length), + (error, _) => + { + if (error != null) + { + Trace.WriteLine("ProduceContinue " + error.ToString()); + } + }, + null); } } @@ -269,7 +279,17 @@ namespace Microsoft.AspNet.Server.Kestrel.Http var status = ReasonPhrases.ToStatus(StatusCode, ReasonPhrase); var responseHeader = CreateResponseHeader(status, ResponseHeaders); - SocketOutput.Write(responseHeader.Item1, x => ((IDisposable)x).Dispose(), responseHeader.Item2); + SocketOutput.Write( + responseHeader.Item1, + (error, x) => + { + if (error != null) + { + Trace.WriteLine("ProduceStart " + error.ToString()); + } + ((IDisposable)x).Dispose(); + }, + responseHeader.Item2); } public void ProduceEnd(Exception ex) diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/FrameResponseStream.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/FrameResponseStream.cs index dc05b4dd7f..2ee9f27f32 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/FrameResponseStream.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/FrameResponseStream.cs @@ -25,7 +25,21 @@ namespace Microsoft.AspNet.Server.Kestrel.Http public override Task FlushAsync(CancellationToken cancellationToken) { var tcs = new TaskCompletionSource(); - _context.FrameControl.Write(new ArraySegment(new byte[0]), x => ((TaskCompletionSource)x).SetResult(0), tcs); + _context.FrameControl.Write( + new ArraySegment(new byte[0]), + (error, arg) => + { + var tcsArg = (TaskCompletionSource)arg; + if (error != null) + { + tcsArg.SetException(error); + } + else + { + tcsArg.SetResult(0); + } + }, + tcs); return tcs.Task; } @@ -52,7 +66,21 @@ namespace Microsoft.AspNet.Server.Kestrel.Http public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) { var tcs = new TaskCompletionSource(); - _context.FrameControl.Write(new ArraySegment(buffer, offset, count), x => ((TaskCompletionSource)x).SetResult(0), tcs); + _context.FrameControl.Write( + new ArraySegment(buffer, offset, count), + (error, arg) => + { + var tcsArg = (TaskCompletionSource)arg; + if (error != null) + { + tcsArg.SetException(error); + } + else + { + tcsArg.SetResult(0); + } + }, + tcs); return tcs.Task; } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/Listener.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/Listener.cs index d6e20e0f3a..98de2b440f 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/Listener.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/Listener.cs @@ -3,6 +3,7 @@ using Microsoft.AspNet.Server.Kestrel.Networking; using System; +using System.Diagnostics; using System.Net; using System.Threading.Tasks; @@ -31,13 +32,20 @@ namespace Microsoft.AspNet.Server.Kestrel.Http /// public class Listener : ListenerContext, IDisposable { - private static readonly Action _connectionCallback = ConnectionCallback; + private static readonly Action _connectionCallback = ConnectionCallback; UvTcpHandle ListenSocket { get; set; } - private static void ConnectionCallback(UvStreamHandle stream, int status, object state) + private static void ConnectionCallback(UvStreamHandle stream, int status, Exception error, object state) { - ((Listener)state).OnConnection(stream, status); + if (error != null) + { + Trace.WriteLine("Listener.ConnectionCallback " + error.ToString()); + } + else + { + ((Listener)state).OnConnection(stream, status); + } } public Listener(IMemoryPool memory) @@ -99,7 +107,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http { tcs.SetException(ex); } - }, + }, null); tcs.Task.Wait(); ListenSocket = null; diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/SocketOutput.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/SocketOutput.cs index fa0b0a6ab3..c43d13dcba 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/SocketOutput.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/SocketOutput.cs @@ -12,7 +12,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http /// public interface ISocketOutput { - void Write(ArraySegment buffer, Action callback, object state); + void Write(ArraySegment buffer, Action callback, object state); } public class SocketOutput : ISocketOutput @@ -26,7 +26,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http _socket = socket; } - public void Write(ArraySegment buffer, Action callback, object state) + public void Write(ArraySegment buffer, Action callback, object state) { //TODO: need buffering that works var copy = new byte[buffer.Count]; @@ -45,17 +45,17 @@ namespace Microsoft.AspNet.Server.Kestrel.Http public class ThisWriteReq : UvWriteReq { - private static readonly Action _writeCallback = WriteCallback; - private static void WriteCallback(UvWriteReq req, int status, object state) + private static readonly Action _writeCallback = WriteCallback; + private static void WriteCallback(UvWriteReq req, int status, Exception error, object state) { - ((ThisWriteReq)state).OnWrite(req, status); + ((ThisWriteReq)state).OnWrite(req, status, error); } SocketOutput _self; ArraySegment _buffer; Action _drained; UvStreamHandle _socket; - Action _callback; + Action _callback; object _state; GCHandle _pin; @@ -63,7 +63,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http SocketOutput socketOutput, UvStreamHandle socket, ArraySegment buffer, - Action callback, + Action callback, object state) { _self = socketOutput; @@ -83,12 +83,12 @@ namespace Microsoft.AspNet.Server.Kestrel.Http this); } - private void OnWrite(UvWriteReq req, int status) + private void OnWrite(UvWriteReq req, int status, Exception error) { KestrelTrace.Log.ConnectionWriteCallback(0, status); //NOTE: pool this? Dispose(); - _callback(_state); + _callback(error, _state); } } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Infrastructure/KestrelThread.cs b/src/Microsoft.AspNet.Server.Kestrel/Infrastructure/KestrelThread.cs index a59f7ba42e..fae471eec5 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Infrastructure/KestrelThread.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Infrastructure/KestrelThread.cs @@ -105,6 +105,7 @@ namespace Microsoft.AspNet.Server.Kestrel { tcs.SetException(ex); } + try { var ran1 = _loop.Run(); diff --git a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs index feb9dc4f6f..9249b53104 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Diagnostics; namespace Microsoft.AspNet.Server.Kestrel.Networking { @@ -11,16 +12,16 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking private readonly static Libuv.uv_alloc_cb _uv_alloc_cb = UvAllocCb; private readonly static Libuv.uv_read_cb _uv_read_cb = UvReadCb; - public Action _connectionCallback; + public Action _connectionCallback; public object _connectionState; public Func _allocCallback; - public Action _readCallback; + public Action _readCallback; public object _readState; - public void Listen(int backlog, Action callback, object state) + public void Listen(int backlog, Action callback, object state) { _connectionCallback = callback; _connectionState = state; @@ -34,7 +35,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking public void ReadStart( Func allocCallback, - Action readCallback, + Action readCallback, object state) { _allocCallback = allocCallback; @@ -57,28 +58,57 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking private static void UvConnectionCb(IntPtr handle, int status) { var stream = FromIntPtr(handle); - stream._connectionCallback(stream, status, stream._connectionState); + + Exception error; + status = stream.Libuv.Check(status, out error); + + try + { + stream._connectionCallback(stream, status, error, stream._connectionState); + } + catch (Exception ex) + { + Trace.WriteLine("UvConnectionCb " + ex.ToString()); + } } + private static void UvAllocCb(IntPtr handle, int suggested_size, out Libuv.uv_buf_t buf) { var stream = FromIntPtr(handle); - buf = stream._allocCallback(stream, suggested_size, stream._readState); + try + { + buf = stream._allocCallback(stream, suggested_size, stream._readState); + } + catch (Exception ex) + { + Trace.WriteLine("UvAllocCb " + ex.ToString()); + buf = stream.Libuv.buf_init(IntPtr.Zero, 0); + throw; + } } private static void UvReadCb(IntPtr handle, int nread, ref Libuv.uv_buf_t buf) { var stream = FromIntPtr(handle); - if (nread == -4095) + try { - stream._readCallback(stream, 0, stream._readState); - return; + if (nread < 0) + { + Exception error; + stream._uv.Check(nread, out error); + stream._readCallback(stream, 0, error, stream._readState); + } + else + { + stream._readCallback(stream, nread, null, stream._readState); + } + } + catch (Exception ex) + { + Trace.WriteLine("UbReadCb " + ex.ToString()); } - - var length = stream._uv.Check(nread); - - stream._readCallback(stream, nread, stream._readState); } } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvWriteRequest.cs b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvWriteRequest.cs index f44865e121..dee7b6bb66 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvWriteRequest.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvWriteRequest.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Runtime.InteropServices; namespace Microsoft.AspNet.Server.Kestrel.Networking @@ -16,12 +17,12 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking IntPtr _bufs; - Action _callback; + Action _callback; object _state; const int BUFFER_COUNT = 4; List _pins = new List(); - + public void Init(UvLoopHandle loop) { var requestSize = loop.Libuv.req_size(Libuv.RequestType.WRITE); @@ -30,7 +31,11 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking _bufs = handle + requestSize; } - public unsafe void Write(UvStreamHandle handle, ArraySegment> bufs, Action callback, object state) + public unsafe void Write( + UvStreamHandle handle, + ArraySegment> bufs, + Action callback, + object state) { var pBuffers = (Libuv.uv_buf_t*)_bufs; var nBuffers = bufs.Count; @@ -59,14 +64,32 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking private static void UvWriteCb(IntPtr ptr, int status) { var req = FromIntPtr(ptr); - foreach(var pin in req._pins) + foreach (var pin in req._pins) { pin.Free(); } req._pins.Clear(); - req._callback(req, status, req._state); + + var callback = req._callback; req._callback = null; + + var state = req._state; req._state = null; + + Exception error = null; + if (status < 0) + { + req.Libuv.Check(status, out error); + } + + try + { + callback(req, status, error, state); + } + catch (Exception ex) + { + Trace.WriteLine("UvWriteCb " + ex.ToString()); + } } } diff --git a/test/Microsoft.AspNet.Server.KestralTests/EngineTests.cs b/test/Microsoft.AspNet.Server.KestralTests/EngineTests.cs index 1c667ecafb..f3bc95c1af 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/EngineTests.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/EngineTests.cs @@ -10,7 +10,7 @@ using System.Text; using System.Threading.Tasks; using Xunit; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { /// /// Summary description for EngineTests @@ -35,20 +35,22 @@ namespace Microsoft.AspNet.Server.KestralTests { get { - try + try { var locator = CallContextServiceLocator.Locator; - if (locator == null) + if (locator == null) { return null; } var services = locator.ServiceProvider; - if (services == null) + if (services == null) { return null; } return (ILibraryManager)services.GetService(typeof(ILibraryManager)); - } catch (NullReferenceException) { return null; } + } + catch (NullReferenceException) + { return null; } } } @@ -314,5 +316,29 @@ namespace Microsoft.AspNet.Server.KestralTests } } + + [Fact] + public async Task DisconnectingClient() + { + using (var server = new TestServer(App)) + { + var socket = new Socket(SocketType.Stream, ProtocolType.IP); + socket.Connect(IPAddress.Loopback, 54321); + await Task.Delay(200); + socket.Disconnect(false); + socket.Dispose(); + + await Task.Delay(200); + using (var connection = new TestConnection()) + { + await connection.SendEnd( + "GET / HTTP/1.0", + "\r\n"); + await connection.ReceiveEnd( + "HTTP/1.0 200 OK", + "\r\n"); + } + } + } } } diff --git a/test/Microsoft.AspNet.Server.KestralTests/MessageBodyExchangerTests.cs b/test/Microsoft.AspNet.Server.KestralTests/MessageBodyExchangerTests.cs index a96efcc8ad..b8606ef8dd 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/MessageBodyExchangerTests.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/MessageBodyExchangerTests.cs @@ -4,7 +4,7 @@ using System; using System.Threading.Tasks; using Xunit; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { /// /// Summary description for MessageBodyExchangerTests diff --git a/test/Microsoft.AspNet.Server.KestralTests/MessageBodyTests.cs b/test/Microsoft.AspNet.Server.KestralTests/MessageBodyTests.cs index ea5d2a75ce..a8be2d3420 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/MessageBodyTests.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/MessageBodyTests.cs @@ -6,7 +6,7 @@ using System.Threading; using System.Threading.Tasks; using Xunit; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { /// /// Summary description for MessageBodyTests diff --git a/test/Microsoft.AspNet.Server.KestralTests/Microsoft.AspNet.Server.KestralTests.kproj b/test/Microsoft.AspNet.Server.KestralTests/Microsoft.AspNet.Server.KestrelTests.kproj similarity index 100% rename from test/Microsoft.AspNet.Server.KestralTests/Microsoft.AspNet.Server.KestralTests.kproj rename to test/Microsoft.AspNet.Server.KestralTests/Microsoft.AspNet.Server.KestrelTests.kproj diff --git a/test/Microsoft.AspNet.Server.KestralTests/NetworkingTests.cs b/test/Microsoft.AspNet.Server.KestralTests/NetworkingTests.cs index 19b0178c14..cca8bb0f4d 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/NetworkingTests.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/NetworkingTests.cs @@ -12,7 +12,7 @@ using System.Runtime.InteropServices; using System.Threading.Tasks; using Xunit; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { /// /// Summary description for NetworkingTests @@ -31,12 +31,12 @@ namespace Microsoft.AspNet.Server.KestralTests get { var locator = CallContextServiceLocator.Locator; - if (locator == null) + if (locator == null) { return null; } var services = locator.ServiceProvider; - if (services == null) + if (services == null) { return null; } @@ -93,7 +93,7 @@ namespace Microsoft.AspNet.Server.KestralTests var tcp = new UvTcpHandle(); tcp.Init(loop); tcp.Bind(new IPEndPoint(IPAddress.Loopback, 54321)); - tcp.Listen(10, (stream, status, state) => + tcp.Listen(10, (stream, status, error, state) => { var tcp2 = new UvTcpHandle(); tcp2.Init(loop); @@ -130,7 +130,7 @@ namespace Microsoft.AspNet.Server.KestralTests var tcp = new UvTcpHandle(); tcp.Init(loop); tcp.Bind(new IPEndPoint(IPAddress.Loopback, 54321)); - tcp.Listen(10, (_, status, state) => + tcp.Listen(10, (_, status, error, state) => { Console.WriteLine("Connected"); var tcp2 = new UvTcpHandle(); @@ -139,7 +139,7 @@ namespace Microsoft.AspNet.Server.KestralTests var data = Marshal.AllocCoTaskMem(500); tcp2.ReadStart( (a, b, c) => _uv.buf_init(data, 500), - (__, nread, state2) => + (__, nread, error2, state2) => { bytesRead += nread; if (nread == 0) @@ -186,7 +186,7 @@ namespace Microsoft.AspNet.Server.KestralTests var tcp = new UvTcpHandle(); tcp.Init(loop); tcp.Bind(new IPEndPoint(IPAddress.Loopback, 54321)); - tcp.Listen(10, (_, status, state) => + tcp.Listen(10, (_, status, error, state) => { Console.WriteLine("Connected"); var tcp2 = new UvTcpHandle(); @@ -195,7 +195,7 @@ namespace Microsoft.AspNet.Server.KestralTests var data = Marshal.AllocCoTaskMem(500); tcp2.ReadStart( (a, b, c) => tcp2.Libuv.buf_init(data, 500), - (__, nread, state2) => + (__, nread, error2, state2) => { bytesRead += nread; if (nread == 0) @@ -211,9 +211,9 @@ namespace Microsoft.AspNet.Server.KestralTests req.Write( tcp2, new ArraySegment>( - new[]{new ArraySegment(new byte[]{65,66,67,68,69})} + new[] { new ArraySegment(new byte[] { 65, 66, 67, 68, 69 }) } ), - (___,____,_____)=>{}, + (_1, _2, _3, _4) => { }, null); } } @@ -243,7 +243,7 @@ namespace Microsoft.AspNet.Server.KestralTests TaskCreationOptions.None); socket.Shutdown(SocketShutdown.Send); var buffer = new ArraySegment(new byte[2048]); - for(;;) + for (; ;) { var count = await Task.Factory.FromAsync( socket.BeginReceive, @@ -252,7 +252,7 @@ namespace Microsoft.AspNet.Server.KestralTests SocketFlags.None, null, TaskCreationOptions.None); - Console.WriteLine("count {0} {1}", + Console.WriteLine("count {0} {1}", count, System.Text.Encoding.ASCII.GetString(buffer.Array, 0, count)); if (count <= 0) break; diff --git a/test/Microsoft.AspNet.Server.KestralTests/Program.cs b/test/Microsoft.AspNet.Server.KestralTests/Program.cs index 86ae9b71d7..9e36b9f8c2 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/Program.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/Program.cs @@ -1,6 +1,6 @@ using System; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { /// /// Summary description for Program @@ -9,7 +9,7 @@ namespace Microsoft.AspNet.Server.KestralTests { public void Main() { - new EngineTests().Http11().Wait(); + new EngineTests().DisconnectingClient().Wait(); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Server.KestralTests/TestConnection.cs b/test/Microsoft.AspNet.Server.KestralTests/TestConnection.cs index a1447fae25..be079ad17f 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/TestConnection.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/TestConnection.cs @@ -7,7 +7,7 @@ using System.Text; using System.Threading.Tasks; using Xunit; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { /// /// Summary description for TestConnection diff --git a/test/Microsoft.AspNet.Server.KestralTests/TestInput.cs b/test/Microsoft.AspNet.Server.KestralTests/TestInput.cs index c7aa430c1f..a9448ac942 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/TestInput.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/TestInput.cs @@ -1,7 +1,7 @@ using System; using Microsoft.AspNet.Server.Kestrel.Http; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { class TestInput : IConnectionControl, IFrameControl { @@ -44,7 +44,7 @@ namespace Microsoft.AspNet.Server.KestralTests { } - public void Write(ArraySegment data, Action callback, object state) + public void Write(ArraySegment data, Action callback, object state) { } public void End(ProduceEndType endType) diff --git a/test/Microsoft.AspNet.Server.KestralTests/TestServer.cs b/test/Microsoft.AspNet.Server.KestralTests/TestServer.cs index 828c60ce67..0e2c9f3d33 100644 --- a/test/Microsoft.AspNet.Server.KestralTests/TestServer.cs +++ b/test/Microsoft.AspNet.Server.KestralTests/TestServer.cs @@ -5,7 +5,7 @@ using Microsoft.Framework.Runtime.Infrastructure; using System; using System.Threading.Tasks; -namespace Microsoft.AspNet.Server.KestralTests +namespace Microsoft.AspNet.Server.KestrelTests { /// /// Summary description for TestServer