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));
                 }
 }