private static TestContext CreateTestContext()
{
var endpoint = new IPEndPoint(IPAddress.Loopback, 50192);
var server = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
var context = new TestContext
{
Local = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
};
server.Bind(endpoint);
server.Listen(1);
var connectAsyncResult = context.Local.BeginConnect(endpoint, null, null);
context.Remote = server.Accept();
context.Remote.NoDelay = true;
((IDisposable)server).Dispose();
// Even though accept blocks the connect async op will not have completed.
connectAsyncResult.AsyncWaitHandle.WaitOne();
context.Stream = new LiveSocketMessageStream(context.Local)
{
PingInterval = TimeSpan.FromMilliseconds(50d)
};
return context;
}