public void TestReturnTransport_PoolWasNotSet_Fail() { using (var target = new Target(RpcClientConfiguration.Default)) using (var transport = new NullClientTransport(target)) using (var transportPool = new SingletonObjectPool <NullClientTransport>(transport)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { target.ReturnTransport(transport); } }
public void TestReturnTransport_Null_Fail() { using (var target = new Target(RpcClientConfiguration.Default)) using (var transport = new NullClientTransport(target)) using (var transportPool = new SingletonObjectPool <NullClientTransport>(transport)) { target.InvokeSetTransportPool(transportPool); target.ReturnTransport(null); } }
public void TestReturnTransport_Null_Fail() { using (var server = new RpcServer()) using (var target = new Target(server)) using (var transport = new NullServerTransport(target)) using (var transportPool = new SingletonObjectPool <NullServerTransport>(transport)) { target.InvokeSetTransportPool(transportPool); target.ReturnTransport(null); } }
public void TestGetTransport_PoolWasNotSet_Fail() { using (var server = new RpcServer()) using (var target = new Target(server)) using (var transport = new NullServerTransport(target)) using (var transportPool = new SingletonObjectPool <NullServerTransport>(transport)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { target.InvokeGetTransport(socket); } }
public void TestReturnTransport_OwnedAnotherManager_Fail() { using (var target = new Target(RpcClientConfiguration.Default)) using (var another = new Target(RpcClientConfiguration.Default)) using (var transport = new NullClientTransport(another)) using (var transportPool = new SingletonObjectPool <NullClientTransport>(transport)) { target.InvokeSetTransportPool(transportPool); target.ReturnTransport(transport); } }
public void TestGetTransport_Null_Harmless() { using (var target = new Target(RpcClientConfiguration.Default)) using (var transport = new NullClientTransport(target)) using (var transportPool = new SingletonObjectPool <NullClientTransport>(transport)) { target.InvokeSetTransportPool(transportPool); var result = target.InvokeGetTransport(null); // Default implementation does not treat bindingSocket Assert.That(result.BoundSocket, Is.Null); } }
public void TestGetTransport_NotNull_ReturnsTransportWithSpecifiedSocket() { using (var target = new Target(RpcClientConfiguration.Default)) using (var transport = new NullClientTransport(target)) using (var transportPool = new SingletonObjectPool <NullClientTransport>(transport)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { target.InvokeSetTransportPool(transportPool); var result = target.InvokeGetTransport(socket); Assert.That(result.BoundSocket, Is.Not.Null); } }
public void TestBeginShutdown_ShutdownCompletedOccurredAndSocketShutdowned() { using (var server = new RpcServer()) using (var target = new Target(server)) using (var transport = new NullServerTransport(target)) using (var transportPool = new SingletonObjectPool <NullServerTransport>(transport)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { var listener = new TcpListener(IPAddress.Loopback, 19860); try { listener.Start(); var ar = listener.BeginAcceptSocket(null, null); target.InvokeSetTransportPool(transportPool); // activate var activeTransport = target.InvokeGetTransport(socket); // maually set transport activeTransport.BoundSocket = socket; using (var waitHandle = new ManualResetEventSlim()) { target.ShutdownCompleted += (sender, e) => waitHandle.Set(); activeTransport.BoundSocket.Connect(IPAddress.Loopback, 19860); using (var acceptted = listener.EndAcceptSocket(ar)) { target.BeginShutdown(); if (Debugger.IsAttached) { waitHandle.Wait(); } else { bool signaled = waitHandle.Wait(TimeSpan.FromSeconds(3)); Assert.That(signaled); } } } } finally { try { listener.Stop(); } catch (SocketException) { } } } }
public void TestGetRequestContext_NotNull_ReturnsWithTransportBound() { using (var server = new RpcServer()) using (var target = new Target(server)) using (var transport = new NullServerTransport(target)) using (var transportPool = new SingletonObjectPool <NullServerTransport>(transport)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { target.InvokeSetTransportPool(transportPool); var result = target.InvokeGetRequestContext(target.InvokeGetTransport(socket)); Assert.That(result.BoundTransport, Is.SameAs(transport)); } }
public void TestGetTransport_NotNull_ReturnsTransportWithSpecifiedSocket() { using (var server = new RpcServer()) using (var target = new Target(server)) using (var transport = new NullServerTransport(target)) using (var transportPool = new SingletonObjectPool <NullServerTransport>(transport)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { target.InvokeSetTransportPool(transportPool); var result = target.InvokeGetTransport(socket); // Default implementation does not treat bindingSocket Assert.That(result.BoundSocket, Is.Null); } }
public void TestReturnTransport_NotNull_ReturnsToPool() { using (var target = new Target(RpcClientConfiguration.Default)) using (var transport = new NullClientTransport(target)) using (var transportPool = new SingletonObjectPool <NullClientTransport>(transport)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { target.InvokeSetTransportPool(transportPool); NullClientTransport returned = null; transportPool.ObjectReturned += (sender, e) => returned = e.ReturnedObject; target.ReturnTransport(target.InvokeGetTransport(socket)); Assert.That(returned, Is.Not.Null.And.SameAs(transport)); } }