You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2012/10/08 00:30:36 UTC

svn commit: r1395402 - in /httpcomponents/httpcore/trunk: httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/ httpcore-nio/src/test/java/org/apache/http/nio/integration/ httpcore-nio/src/test/java/org/apache/http/testserver/ httpcore/src/test/...

Author: olegk
Date: Sun Oct  7 22:30:36 2012
New Revision: 1395402

URL: http://svn.apache.org/viewvc?rev=1395402&view=rev
Log:
Easier timeout configuration in integration tests

Modified:
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncPrematureTermination.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpCoreNIOTestBase.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java
    httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/integration/TestSyncHttp.java
    httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpClient.java
    httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpServer.java

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java Sun Oct  7 22:30:36 2012
@@ -78,12 +78,10 @@ public class TestDefaultIOReactors exten
     public void setUp() throws Exception {
         initServer();
         initClient();
-        initConnPool();
     }
 
     @After
     public void tearDown() throws Exception {
-        shutDownConnPool();
         shutDownClient();
         shutDownServer();
     }
@@ -106,8 +104,8 @@ public class TestDefaultIOReactors exten
         final AtomicInteger closedClientConns = new AtomicInteger(0);
         final AtomicInteger closedServerConns = new AtomicInteger(0);
 
-        this.connpool.setDefaultMaxPerRoute(connNo);
-        this.connpool.setMaxTotal(connNo);
+        this.client.setMaxPerRoute(connNo);
+        this.client.setMaxTotal(connNo);
 
         UriHttpAsyncRequestHandlerMapper registry = new UriHttpAsyncRequestHandlerMapper();
         HttpAsyncService serviceHandler = new HttpAsyncService(this.serverHttpProc, registry) {
@@ -154,7 +152,7 @@ public class TestDefaultIOReactors exten
 
         Queue<Future<BasicNIOPoolEntry>> queue = new LinkedList<Future<BasicNIOPoolEntry>>();
         for (int i = 0; i < connNo; i++) {
-            queue.add(this.connpool.lease(target, null));
+            queue.add(this.client.lease(target, null));
         }
 
         while (!queue.isEmpty()) {
@@ -168,7 +166,6 @@ public class TestDefaultIOReactors exten
         openClientConns.await(15, TimeUnit.SECONDS);
         openServerConns.await(15, TimeUnit.SECONDS);
 
-        this.connpool.shutdown(2000);
         this.client.shutdown();
         this.server.shutdown();
 
@@ -220,7 +217,7 @@ public class TestDefaultIOReactors exten
         this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool);
+                this.client.getConnPool());
 
         this.server.join(20000);
 
@@ -300,7 +297,7 @@ public class TestDefaultIOReactors exten
         this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool);
+                this.client.getConnPool());
 
         this.server.join(20000);
 
@@ -380,7 +377,7 @@ public class TestDefaultIOReactors exten
         this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool);
+                this.client.getConnPool());
 
         requestConns.await();
         Assert.assertEquals(0, requestConns.getCount());

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java Sun Oct  7 22:30:36 2012
@@ -95,12 +95,10 @@ public class TestHttpAsyncHandlers exten
     public void setUp() throws Exception {
         initServer();
         initClient();
-        initConnPool();
     }
 
     @After
     public void tearDown() throws Exception {
-        shutDownConnPool();
         shutDownClient();
         shutDownServer();
     }
@@ -153,8 +151,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -168,7 +166,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -186,8 +184,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -200,7 +198,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -218,8 +216,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -236,7 +234,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -254,8 +252,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -273,7 +271,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -291,8 +289,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -309,7 +307,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -327,8 +325,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -343,7 +341,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -370,8 +368,8 @@ public class TestHttpAsyncHandlers exten
 
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -385,7 +383,7 @@ public class TestHttpAsyncHandlers exten
         Future<HttpResponse> future = this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool);
+                this.client.getConnPool());
 
         HttpResponse response = future.get();
         Assert.assertNotNull(response);
@@ -416,8 +414,8 @@ public class TestHttpAsyncHandlers exten
 
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -431,7 +429,7 @@ public class TestHttpAsyncHandlers exten
         Future<HttpResponse> future = this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool);
+                this.client.getConnPool());
 
         HttpResponse response = future.get();
         Assert.assertNotNull(response);
@@ -444,8 +442,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -466,7 +464,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool,
+                    this.client.getConnPool(),
                     context);
             queue.add(future);
         }
@@ -530,7 +528,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, requests[i]),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool,
+                    this.client.getConnPool(),
                     context);
             queue.add(future);
         }
@@ -597,8 +595,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new DelayedRequestHandler());
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -611,7 +609,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -682,7 +680,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, requests[i]),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool,
+                    this.client.getConnPool(),
                     context);
             queue.add(future);
         }
@@ -728,8 +726,8 @@ public class TestHttpAsyncHandlers exten
         registry.register("*", new FailingRequestHandler());
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -742,7 +740,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -759,8 +757,8 @@ public class TestHttpAsyncHandlers exten
         UriHttpAsyncRequestHandlerMapper registry = new UriHttpAsyncRequestHandlerMapper();
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         String pattern = RndTestPatternGenerator.generateText();
         int count = RndTestPatternGenerator.generateCount(1000);
@@ -773,7 +771,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 
@@ -800,8 +798,8 @@ public class TestHttpAsyncHandlers exten
         }));
         InetSocketAddress address = start(registry, null);
 
-        this.connpool.setDefaultMaxPerRoute(3);
-        this.connpool.setMaxTotal(3);
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
 
         HttpHost target = new HttpHost("localhost", address.getPort());
 
@@ -811,7 +809,7 @@ public class TestHttpAsyncHandlers exten
             Future<HttpResponse> future = this.executor.execute(
                     new BasicAsyncRequestProducer(target, request),
                     new BasicAsyncResponseConsumer(),
-                    this.connpool);
+                    this.client.getConnPool());
             queue.add(future);
         }
 

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncPrematureTermination.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncPrematureTermination.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncPrematureTermination.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncPrematureTermination.java Sun Oct  7 22:30:36 2012
@@ -78,7 +78,6 @@ public class TestHttpAsyncPrematureTermi
     public void setUp() throws Exception {
         initServer();
         initClient();
-        initConnPool();
     }
 
     @After
@@ -167,7 +166,7 @@ public class TestHttpAsyncPrematureTermi
         this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool, context, callback);
+                this.client.getConnPool(), context, callback);
 
         Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
     }
@@ -222,7 +221,7 @@ public class TestHttpAsyncPrematureTermi
         this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool, context, callback);
+                this.client.getConnPool(), context, callback);
 
         Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
     }
@@ -283,7 +282,7 @@ public class TestHttpAsyncPrematureTermi
         this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool, context, callback);
+                this.client.getConnPool(), context, callback);
 
         Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
     }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java Sun Oct  7 22:30:36 2012
@@ -87,12 +87,10 @@ public class TestTruncatedChunks extends
     public void setUp() throws Exception {
         initServer();
         initClient();
-        initConnPool();
     }
 
     @After
     public void tearDown() throws Exception {
-        shutDownConnPool();
         shutDownClient();
         shutDownServer();
     }
@@ -200,7 +198,7 @@ public class TestTruncatedChunks extends
         Future<HttpResponse> future = this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new BasicAsyncResponseConsumer(),
-                this.connpool);
+                this.client.getConnPool());
         try {
             future.get();
             Assert.fail("ExecutionException should have been thrown");
@@ -281,7 +279,7 @@ public class TestTruncatedChunks extends
         Future<HttpResponse> future = this.executor.execute(
                 new BasicAsyncRequestProducer(target, request),
                 new LenientAsyncResponseConsumer(),
-                this.connpool);
+                this.client.getConnPool());
 
         HttpResponse response = future.get();
         Assert.assertNotNull(response);

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java Sun Oct  7 22:30:36 2012
@@ -30,9 +30,16 @@ package org.apache.http.testserver;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.util.List;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 
+import org.apache.http.HttpHost;
+import org.apache.http.concurrent.FutureCallback;
 import org.apache.http.impl.nio.DefaultHttpClientIODispatch;
 import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.pool.BasicNIOConnFactory;
+import org.apache.http.impl.nio.pool.BasicNIOConnPool;
+import org.apache.http.impl.nio.pool.BasicNIOPoolEntry;
 import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
 import org.apache.http.impl.nio.reactor.ExceptionEvent;
 import org.apache.http.nio.NHttpClientHandler;
@@ -42,6 +49,7 @@ import org.apache.http.nio.reactor.Conne
 import org.apache.http.nio.reactor.IOEventDispatch;
 import org.apache.http.nio.reactor.IOReactorExceptionHandler;
 import org.apache.http.nio.reactor.IOReactorStatus;
+import org.apache.http.nio.reactor.IOSession;
 import org.apache.http.nio.reactor.SessionRequest;
 
 @SuppressWarnings("deprecation")
@@ -49,14 +57,47 @@ public class HttpClientNio {
 
     private final DefaultConnectingIOReactor ioReactor;
     private final NHttpConnectionFactory<DefaultNHttpClientConnection> connFactory;
+    private final BasicNIOConnPool connpool;
 
     private volatile IOReactorThread thread;
+    private volatile int timeout;
 
     public HttpClientNio(
             final NHttpConnectionFactory<DefaultNHttpClientConnection> connFactory) throws IOException {
         super();
         this.ioReactor = new DefaultConnectingIOReactor();
         this.connFactory = connFactory;
+        this.connpool = new BasicNIOConnPool(this.ioReactor, new BasicNIOConnFactory(connFactory));
+    }
+
+    public int getTimeout() {
+        return this.timeout;
+    }
+
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
+    public void setMaxTotal(int max) {
+        this.connpool.setMaxTotal(max);
+    }
+
+    public void setMaxPerRoute(int max) {
+        this.connpool.setDefaultMaxPerRoute(max);
+    }
+
+    public Future<BasicNIOPoolEntry> lease(
+            final HttpHost host,
+            final FutureCallback<BasicNIOPoolEntry> callback) {
+        return this.connpool.lease(host, null, this.timeout, TimeUnit.MILLISECONDS, callback);
+    }
+
+    public void release(final BasicNIOPoolEntry poolEntry, boolean reusable) {
+        this.connpool.release(poolEntry, reusable);
+    }
+
+    public BasicNIOConnPool getConnPool() {
+        return this.connpool;
     }
 
     public void setExceptionHandler(final IOReactorExceptionHandler exceptionHandler) {
@@ -64,12 +105,23 @@ public class HttpClientNio {
     }
 
     private void execute(final NHttpClientEventHandler clientHandler) throws IOException {
-        IOEventDispatch ioEventDispatch = new DefaultHttpClientIODispatch(clientHandler, this.connFactory);
+        IOEventDispatch ioEventDispatch = new DefaultHttpClientIODispatch(clientHandler, this.connFactory) {
+
+            @Override
+            protected DefaultNHttpClientConnection createConnection(IOSession session) {
+                DefaultNHttpClientConnection conn = super.createConnection(session);
+                conn.setSocketTimeout(timeout);
+                return conn;
+            }
+
+        };
         this.ioReactor.execute(ioEventDispatch);
     }
 
     public SessionRequest openConnection(final InetSocketAddress address, final Object attachment) {
-        return this.ioReactor.connect(address, null, attachment, null);
+        SessionRequest sessionRequest = this.ioReactor.connect(address, null, attachment, null);
+        sessionRequest.setConnectTimeout(this.timeout);
+        return sessionRequest;
     }
 
     public void start(final NHttpClientEventHandler clientHandler) {
@@ -109,7 +161,7 @@ public class HttpClientNio {
     }
 
     public void shutdown() throws IOException {
-        this.ioReactor.shutdown();
+        this.connpool.shutdown(2000);
         try {
             join(500);
         } catch (InterruptedException ignore) {

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpCoreNIOTestBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpCoreNIOTestBase.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpCoreNIOTestBase.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpCoreNIOTestBase.java Sun Oct  7 22:30:36 2012
@@ -31,8 +31,6 @@ import org.apache.http.HttpRequestInterc
 import org.apache.http.HttpResponseInterceptor;
 import org.apache.http.impl.nio.DefaultNHttpClientConnection;
 import org.apache.http.impl.nio.DefaultNHttpServerConnection;
-import org.apache.http.impl.nio.pool.BasicNIOConnFactory;
-import org.apache.http.impl.nio.pool.BasicNIOConnPool;
 import org.apache.http.nio.NHttpConnectionFactory;
 import org.apache.http.nio.protocol.HttpAsyncRequester;
 import org.apache.http.protocol.HttpProcessor;
@@ -58,7 +56,6 @@ public abstract class HttpCoreNIOTestBas
     protected HttpClientNio client;
     protected HttpProcessor serverHttpProc;
     protected HttpProcessor clientHttpProc;
-    protected BasicNIOConnPool connpool;
     protected HttpAsyncRequester executor;
 
     protected abstract NHttpConnectionFactory<DefaultNHttpServerConnection>
@@ -76,6 +73,7 @@ public abstract class HttpCoreNIOTestBas
                 new ResponseContent(),
                 new ResponseConnControl()
         });
+        this.server.setTimeout(5000);
     }
 
     public void initClient() throws Exception {
@@ -87,24 +85,11 @@ public abstract class HttpCoreNIOTestBas
                 new RequestConnControl(),
                 new RequestUserAgent("TEST-CLIENT/1.1"),
                 new RequestExpectContinue()});
-    }
-
-    public void initConnPool() throws Exception {
-        this.connpool = new BasicNIOConnPool(
-                this.client.getIoReactor(),
-                new BasicNIOConnFactory(createClientConnectionFactory()));
+        this.client.setTimeout(5000);
         this.executor = new HttpAsyncRequester(this.clientHttpProc);
     }
 
     @After
-    public void shutDownConnPool() throws Exception {
-        if (this.connpool != null) {
-            this.connpool.shutdown(2000);
-            this.connpool = null;
-        }
-    }
-
-    @After
     public void shutDownClient() throws Exception {
         if (this.client != null) {
             this.client.shutdown();

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java Sun Oct  7 22:30:36 2012
@@ -41,6 +41,7 @@ import org.apache.http.nio.NHttpServiceH
 import org.apache.http.nio.reactor.IOEventDispatch;
 import org.apache.http.nio.reactor.IOReactorExceptionHandler;
 import org.apache.http.nio.reactor.IOReactorStatus;
+import org.apache.http.nio.reactor.IOSession;
 import org.apache.http.nio.reactor.ListenerEndpoint;
 import org.apache.http.nio.reactor.ListeningIOReactor;
 
@@ -51,7 +52,8 @@ public class HttpServerNio {
     private final NHttpConnectionFactory<DefaultNHttpServerConnection> connFactory;
 
     private volatile IOReactorThread thread;
-    private ListenerEndpoint endpoint;
+    private volatile ListenerEndpoint endpoint;
+    private volatile int timeout;
 
     public HttpServerNio(
             final NHttpConnectionFactory<DefaultNHttpServerConnection> connFactory) throws IOException {
@@ -60,12 +62,29 @@ public class HttpServerNio {
         this.connFactory = connFactory;
     }
 
+    public int getTimeout() {
+        return this.timeout;
+    }
+
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
     public void setExceptionHandler(final IOReactorExceptionHandler exceptionHandler) {
         this.ioReactor.setExceptionHandler(exceptionHandler);
     }
 
     private void execute(final NHttpServerEventHandler serviceHandler) throws IOException {
-        IOEventDispatch ioEventDispatch = new DefaultHttpServerIODispatch(serviceHandler, this.connFactory);
+        IOEventDispatch ioEventDispatch = new DefaultHttpServerIODispatch(serviceHandler, this.connFactory) {
+
+            @Override
+            protected DefaultNHttpServerConnection createConnection(IOSession session) {
+                DefaultNHttpServerConnection conn = super.createConnection(session);
+                conn.setSocketTimeout(timeout);
+                return conn;
+            }
+
+        };
         this.ioReactor.execute(ioEventDispatch);
     }
 

Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/integration/TestSyncHttp.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/integration/TestSyncHttp.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/integration/TestSyncHttp.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/integration/TestSyncHttp.java Sun Oct  7 22:30:36 2012
@@ -33,7 +33,6 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
-import java.net.Socket;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
@@ -84,11 +83,13 @@ public class TestSyncHttp {
     @Before
     public void initServer() throws Exception {
         this.server = new HttpServer();
+        this.server.setTimeout(5000);
     }
 
     @Before
     public void initClient() throws Exception {
         this.client = new HttpClient();
+        this.client.setTimeout(5000);
     }
 
     @After
@@ -145,8 +146,7 @@ public class TestSyncHttp {
         try {
             for (int r = 0; r < reqNo; r++) {
                 if (!conn.isOpen()) {
-                    Socket socket = new Socket(host.getHostName(), host.getPort());
-                    conn.bind(socket);
+                    client.connect(host, conn);
                 }
 
                 BasicHttpRequest get = new BasicHttpRequest("GET", "/?" + r);
@@ -225,8 +225,7 @@ public class TestSyncHttp {
         try {
             for (int r = 0; r < reqNo; r++) {
                 if (!conn.isOpen()) {
-                    Socket socket = new Socket(host.getHostName(), host.getPort());
-                    conn.bind(socket);
+                    client.connect(host, conn);
                 }
 
                 BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/");
@@ -308,8 +307,7 @@ public class TestSyncHttp {
         try {
             for (int r = 0; r < reqNo; r++) {
                 if (!conn.isOpen()) {
-                    Socket socket = new Socket(host.getHostName(), host.getPort());
-                    conn.bind(socket);
+                    client.connect(host, conn);
                 }
 
                 BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/");
@@ -390,8 +388,7 @@ public class TestSyncHttp {
         try {
             for (int r = 0; r < reqNo; r++) {
                 if (!conn.isOpen()) {
-                    Socket socket = new Socket(host.getHostName(), host.getPort());
-                    conn.bind(socket);
+                    client.connect(host, conn);
                 }
 
                 // Set protocol level to HTTP/1.0
@@ -479,8 +476,7 @@ public class TestSyncHttp {
         try {
             for (int r = 0; r < reqNo; r++) {
                 if (!conn.isOpen()) {
-                    Socket socket = new Socket(host.getHostName(), host.getPort());
-                    conn.bind(socket);
+                    client.connect(host, conn);
                 }
 
                 BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/");
@@ -573,8 +569,7 @@ public class TestSyncHttp {
         try {
             for (int r = 0; r < reqNo; r++) {
                 if (!conn.isOpen()) {
-                    Socket socket = new Socket(host.getHostName(), host.getPort());
-                    conn.bind(socket);
+                    client.connect(host, conn);
                 }
 
                 BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/");
@@ -733,8 +728,7 @@ public class TestSyncHttp {
                 String pattern = patterns[i];
                 for (int n = 1000; n < 1020; n++) {
                     if (!conn.isOpen()) {
-                        Socket socket = new Socket(host.getHostName(), host.getPort());
-                        conn.bind(socket);
+                        client.connect(host, conn);
                     }
 
                     BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest(
@@ -802,8 +796,7 @@ public class TestSyncHttp {
 
         try {
             if (!conn.isOpen()) {
-                Socket socket = new Socket(host.getHostName(), host.getPort());
-                conn.bind(socket);
+                client.connect(host, conn);
             }
 
             BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/");
@@ -848,8 +841,7 @@ public class TestSyncHttp {
 
         try {
             if (!conn.isOpen()) {
-                Socket socket = new Socket(host.getHostName(), host.getPort());
-                conn.bind(socket);
+                client.connect(host, conn);
             }
 
             BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/");
@@ -901,8 +893,7 @@ public class TestSyncHttp {
 
         try {
             if (!conn.isOpen()) {
-                Socket socket = new Socket(host.getHostName(), host.getPort());
-                conn.bind(socket);
+                client.connect(host, conn);
             }
 
             BasicHttpEntityEnclosingRequest post = new BasicHttpEntityEnclosingRequest("POST", "/");
@@ -957,8 +948,7 @@ public class TestSyncHttp {
         try {
             for (int r = 0; r < reqNo; r++) {
                 if (!conn.isOpen()) {
-                    Socket socket = new Socket(host.getHostName(), host.getPort());
-                    conn.bind(socket);
+                    client.connect(host, conn);
                 }
 
                 BasicHttpRequest get = new BasicHttpRequest("GET", "/?" + r);

Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpClient.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpClient.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpClient.java Sun Oct  7 22:30:36 2012
@@ -28,6 +28,8 @@
 package org.apache.http.testserver;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
 
 import org.apache.http.ConnectionReuseStrategy;
 import org.apache.http.HttpClientConnection;
@@ -95,6 +97,13 @@ public class HttpClient {
         return conn;
     }
 
+    public void connect(final HttpHost host, final DefaultBHttpClientConnection conn) throws IOException {
+        Socket socket = new Socket();
+        socket.connect(new InetSocketAddress(host.getHostName(), host.getPort()), this.timeout);
+        conn.bind(socket);
+        conn.setSocketTimeout(this.timeout);
+    }
+
     public HttpResponse execute(
             final HttpRequest request,
             final HttpHost targetHost,

Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpServer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpServer.java?rev=1395402&r1=1395401&r2=1395402&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpServer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/testserver/HttpServer.java Sun Oct  7 22:30:36 2012
@@ -62,10 +62,8 @@ public class HttpServer {
     private final UriHttpRequestHandlerMapper reqistry;
     private final ServerSocket serversocket;
 
-    private HttpExpectationVerifier expectationVerifier;
-
-    private Thread listener;
-
+    private volatile HttpExpectationVerifier expectationVerifier;
+    private volatile Thread listener;
     private volatile boolean shutdown;
     private volatile int timeout;