Example #1
0
		public void TestSetTransport_NotNull_SetAsIs()
		{
			var target = new ClientRequestContext();
			using ( var manager = new NullClientTransportManager() )
			using ( var transport = new NullClientTransport( manager ) )
			{
				target.SetTransport( transport );
				Assert.That( target.BoundTransport, Is.SameAs( transport ) );
			}
		}
 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 TestSetTransport_NotNull_SetAsIs()
        {
            var target = new ClientRequestContext();

            using (var manager = new NullClientTransportManager())
                using (var transport = new NullClientTransport(manager))
                {
                    target.SetTransport(transport);
                    Assert.That(target.BoundTransport, Is.SameAs(transport));
                }
        }
 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 TestSetTransport_NotNull_SetAsIs()
        {
            var target = new ClientResponseContext();

            using (var manager = new NullClientTransportManager())
                using (var transport = new NullClientTransport(manager))
                {
                    target.SetTransport(transport);
                    Assert.That(target.BoundTransport, Is.SameAs(transport));
                    Assert.That(target.NextProcess, Is.EqualTo(new Func <ClientResponseContext, bool>(transport.UnpackResponseHeader)));
                }
        }
 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 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))
                        {
                            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 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));
                 }
 }