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 2011/07/28 14:41:17 UTC
svn commit: r1151821 - in /httpcomponents/httpcore/trunk:
httpcore-nio/src/main/java/org/apache/http/nio/pool/
httpcore-nio/src/test/java/org/apache/http/nio/pool/
httpcore/src/main/java/org/apache/http/pool/
httpcore/src/test/java/org/apache/http/pool/
Author: olegk
Date: Thu Jul 28 12:41:14 2011
New Revision: 1151821
URL: http://svn.apache.org/viewvc?rev=1151821&view=rev
Log:
Migrated non-blocking connection pooling code from HttpAsyncClient to HttpCore
Added:
httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/
- copied from r1151803, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/pool/
httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/
- copied from r1151803, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/pool/
httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestPoolEntry.java
- copied, changed from r1151814, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/pool/TestPoolEntry.java
Removed:
httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/PoolEntry.java
httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/BasicPoolEntryCallback.java
httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestPoolEntry.java
Modified:
httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/LeaseRequest.java
httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/PoolEntryCallback.java
httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/RouteSpecificPool.java
httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/SessionPool.java
httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestRouteSpecificPool.java
httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestSessionPool.java
httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/pool/PoolEntry.java
httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestConnPool.java
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/LeaseRequest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/LeaseRequest.java?rev=1151821&r1=1151803&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/LeaseRequest.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/LeaseRequest.java Thu Jul 28 12:41:14 2011
@@ -24,20 +24,23 @@
* <http://www.apache.org/>.
*
*/
-package org.apache.http.impl.nio.pool;
+package org.apache.http.nio.pool;
-class LeaseRequest<T, E extends PoolEntry<T>> {
+import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.pool.PoolEntry;
+
+class LeaseRequest<T, E extends PoolEntry<T, IOSession>> {
private final T route;
private final Object state;
private final int connectTimeout;
- private final PoolEntryCallback<T, E> callback;
+ private final PoolEntryCallback<E> callback;
public LeaseRequest(
final T route,
final Object state,
final int connectTimeout,
- final PoolEntryCallback<T, E> callback) {
+ final PoolEntryCallback<E> callback) {
super();
this.route = route;
this.state = state;
@@ -53,7 +56,7 @@ class LeaseRequest<T, E extends PoolEntr
return this.state;
}
- public PoolEntryCallback<T, E> getCallback() {
+ public PoolEntryCallback<E> getCallback() {
return this.callback;
}
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/PoolEntryCallback.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/PoolEntryCallback.java?rev=1151821&r1=1151803&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/PoolEntryCallback.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/PoolEntryCallback.java Thu Jul 28 12:41:14 2011
@@ -24,9 +24,9 @@
* <http://www.apache.org/>.
*
*/
-package org.apache.http.impl.nio.pool;
+package org.apache.http.nio.pool;
-public interface PoolEntryCallback<T, E extends PoolEntry<T>> {
+public interface PoolEntryCallback<E> {
void completed(E entry);
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/RouteSpecificPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/RouteSpecificPool.java?rev=1151821&r1=1151803&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/RouteSpecificPool.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/RouteSpecificPool.java Thu Jul 28 12:41:14 2011
@@ -24,7 +24,7 @@
* <http://www.apache.org/>.
*
*/
-package org.apache.http.impl.nio.pool;
+package org.apache.http.nio.pool;
import java.net.SocketTimeoutException;
import java.util.HashMap;
@@ -36,20 +36,21 @@ import java.util.Set;
import org.apache.http.nio.reactor.IOSession;
import org.apache.http.nio.reactor.SessionRequest;
+import org.apache.http.pool.PoolEntry;
-abstract class RouteSpecificPool<T, E extends PoolEntry<T>> {
+abstract class RouteSpecificPool<T, E extends PoolEntry<T, IOSession>> {
private final T route;
private final Set<E> leasedSessions;
private final LinkedList<E> availableSessions;
- private final Map<SessionRequest, PoolEntryCallback<T, E>> pendingSessions;
+ private final Map<SessionRequest, PoolEntryCallback<E>> pendingSessions;
RouteSpecificPool(final T route) {
super();
this.route = route;
this.leasedSessions = new HashSet<E>();
this.availableSessions = new LinkedList<E>();
- this.pendingSessions = new HashMap<SessionRequest, PoolEntryCallback<T, E>>();
+ this.pendingSessions = new HashMap<SessionRequest, PoolEntryCallback<E>>();
}
protected abstract E createEntry(T route, IOSession session);
@@ -124,12 +125,12 @@ abstract class RouteSpecificPool<T, E ex
public void addPending(
final SessionRequest sessionRequest,
- final PoolEntryCallback<T, E> callback) {
+ final PoolEntryCallback<E> callback) {
this.pendingSessions.put(sessionRequest, callback);
}
- private PoolEntryCallback<T, E> removeRequest(final SessionRequest request) {
- PoolEntryCallback<T, E> callback = this.pendingSessions.remove(request);
+ private PoolEntryCallback<E> removeRequest(final SessionRequest request) {
+ PoolEntryCallback<E> callback = this.pendingSessions.remove(request);
if (callback == null) {
throw new IllegalStateException("Invalid session request");
}
@@ -137,7 +138,7 @@ abstract class RouteSpecificPool<T, E ex
}
public E completed(final SessionRequest request) {
- PoolEntryCallback<T, E> callback = removeRequest(request);
+ PoolEntryCallback<E> callback = removeRequest(request);
IOSession iosession = request.getSession();
E entry = createEntry(this.route, iosession);
this.leasedSessions.add(entry);
@@ -146,17 +147,17 @@ abstract class RouteSpecificPool<T, E ex
}
public void cancelled(final SessionRequest request) {
- PoolEntryCallback<T, E> callback = removeRequest(request);
+ PoolEntryCallback<E> callback = removeRequest(request);
callback.cancelled();
}
public void failed(final SessionRequest request) {
- PoolEntryCallback<T, E> callback = removeRequest(request);
+ PoolEntryCallback<E> callback = removeRequest(request);
callback.failed(request.getException());
}
public void timeout(final SessionRequest request) {
- PoolEntryCallback<T, E> callback = removeRequest(request);
+ PoolEntryCallback<E> callback = removeRequest(request);
callback.failed(new SocketTimeoutException());
}
@@ -166,11 +167,11 @@ abstract class RouteSpecificPool<T, E ex
}
this.pendingSessions.clear();
for (E entry: this.availableSessions) {
- entry.getIOSession().close();
+ entry.getConnection().close();
}
this.availableSessions.clear();
for (E entry: this.leasedSessions) {
- entry.getIOSession().close();
+ entry.getConnection().close();
}
this.leasedSessions.clear();
}
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/SessionPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/SessionPool.java?rev=1151821&r1=1151803&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/SessionPool.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/pool/SessionPool.java Thu Jul 28 12:41:14 2011
@@ -24,7 +24,7 @@
* <http://www.apache.org/>.
*
*/
-package org.apache.http.impl.nio.pool;
+package org.apache.http.nio.pool;
import java.io.IOException;
import java.net.SocketAddress;
@@ -39,13 +39,14 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
-import org.apache.http.nio.conn.PoolStats;
import org.apache.http.nio.reactor.ConnectingIOReactor;
import org.apache.http.nio.reactor.IOSession;
import org.apache.http.nio.reactor.SessionRequest;
import org.apache.http.nio.reactor.SessionRequestCallback;
+import org.apache.http.pool.PoolEntry;
+import org.apache.http.pool.PoolStats;
-public abstract class SessionPool<T, E extends PoolEntry<T>> {
+public abstract class SessionPool<T, E extends PoolEntry<T, IOSession>> {
private final ConnectingIOReactor ioreactor;
private final SessionRequestCallback sessionRequestCallback;
@@ -149,7 +150,7 @@ public abstract class SessionPool<T, E e
public void lease(
final T route, final Object state,
final long connectTimeout, final TimeUnit tunit,
- final PoolEntryCallback<T, E> callback) {
+ final PoolEntryCallback<E> callback) {
if (route == null) {
throw new IllegalArgumentException("Route may not be null");
}
@@ -206,7 +207,7 @@ public abstract class SessionPool<T, E e
T route = request.getRoute();
Object state = request.getState();
int timeout = request.getConnectTimeout();
- PoolEntryCallback<T, E> callback = request.getCallback();
+ PoolEntryCallback<E> callback = request.getCallback();
RouteSpecificPool<T, E> pool = getPool(request.getRoute());
E entry = null;
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestRouteSpecificPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestRouteSpecificPool.java?rev=1151821&r1=1151803&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestRouteSpecificPool.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestRouteSpecificPool.java Thu Jul 28 12:41:14 2011
@@ -24,30 +24,82 @@
* <http://www.apache.org/>.
*
*/
-package org.apache.http.impl.nio.pool;
+package org.apache.http.nio.pool;
import java.io.IOException;
import java.net.SocketTimeoutException;
-import java.util.concurrent.TimeUnit;
import junit.framework.Assert;
import org.apache.http.nio.reactor.IOSession;
import org.apache.http.nio.reactor.SessionRequest;
+import org.apache.http.pool.PoolEntry;
import org.junit.Test;
import org.mockito.Mockito;
public class TestRouteSpecificPool {
- static class LocalRoutePool extends RouteSpecificPool<String, PoolEntry<String>> {
+ static class LocalPoolEntry extends PoolEntry<String, IOSession> {
+
+ public LocalPoolEntry(final String route, final IOSession conn) {
+ super(route, conn);
+ }
+
+ }
+
+ static class BasicPoolEntryCallback implements PoolEntryCallback<LocalPoolEntry> {
+
+ private LocalPoolEntry entry;
+ private Exception ex;
+ private boolean completed;
+ private boolean failed;
+ private boolean cancelled;
+
+ public void completed(final LocalPoolEntry entry) {
+ this.entry = entry;
+ this.completed = true;
+ }
+
+ public LocalPoolEntry getEntry() {
+ return this.entry;
+ }
+
+ public Exception getException() {
+ return this.ex;
+ }
+
+ public void failed(final Exception ex) {
+ this.ex = ex;
+ this.failed = true;
+ }
+
+ public void cancelled() {
+ this.cancelled = true;
+ }
+
+ public boolean isCompleted() {
+ return this.completed;
+ }
+
+ public boolean isFailed() {
+ return this.failed;
+ }
+
+ public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ }
+
+ static class LocalRoutePool extends RouteSpecificPool<String, LocalPoolEntry> {
public LocalRoutePool() {
super("whatever");
}
@Override
- protected PoolEntry<String> createEntry(String route, IOSession session) {
- return new PoolEntry<String>(route, session, 0L, TimeUnit.MILLISECONDS);
+ protected LocalPoolEntry createEntry(String route, IOSession session) {
+ return new LocalPoolEntry(route, session);
}
};
@@ -74,9 +126,9 @@ public class TestRouteSpecificPool {
Assert.assertEquals(0, pool.getAvailableCount());
Assert.assertEquals(0, pool.getLeasedCount());
Assert.assertEquals(1, pool.getPendingCount());
- PoolEntry<String> entry = pool.completed(sessionRequest);
+ LocalPoolEntry entry = pool.completed(sessionRequest);
Assert.assertNotNull(entry);
- Assert.assertSame(session, entry.getIOSession());
+ Assert.assertSame(session, entry.getConnection());
Assert.assertTrue(callback.isCompleted());
Assert.assertFalse(callback.isFailed());
Assert.assertFalse(callback.isCancelled());
@@ -174,11 +226,11 @@ public class TestRouteSpecificPool {
Assert.assertEquals(0, pool.getLeasedCount());
Assert.assertEquals(3, pool.getPendingCount());
- PoolEntry<String> entry1 = pool.completed(sessionRequest1);
+ LocalPoolEntry entry1 = pool.completed(sessionRequest1);
Assert.assertNotNull(entry1);
- PoolEntry<String> entry2 = pool.completed(sessionRequest2);
+ LocalPoolEntry entry2 = pool.completed(sessionRequest2);
Assert.assertNotNull(entry2);
- PoolEntry<String> entry3 = pool.completed(sessionRequest3);
+ LocalPoolEntry entry3 = pool.completed(sessionRequest3);
Assert.assertNotNull(entry3);
Assert.assertEquals(3, pool.getAllocatedCount());
@@ -221,11 +273,11 @@ public class TestRouteSpecificPool {
Mockito.when(sessionRequest3.getSession()).thenReturn(session3);
pool.addPending(sessionRequest3, new BasicPoolEntryCallback());
- PoolEntry<String> entry1 = pool.completed(sessionRequest1);
+ LocalPoolEntry entry1 = pool.completed(sessionRequest1);
Assert.assertNotNull(entry1);
- PoolEntry<String> entry2 = pool.completed(sessionRequest2);
+ LocalPoolEntry entry2 = pool.completed(sessionRequest2);
Assert.assertNotNull(entry2);
- PoolEntry<String> entry3 = pool.completed(sessionRequest3);
+ LocalPoolEntry entry3 = pool.completed(sessionRequest3);
Assert.assertNotNull(entry3);
entry2.setState(Boolean.FALSE);
@@ -257,7 +309,7 @@ public class TestRouteSpecificPool {
public void testReleaseInvalidEntry() throws Exception {
LocalRoutePool pool = new LocalRoutePool();
IOSession session = Mockito.mock(IOSession.class);
- PoolEntry<String> entry = new PoolEntry<String>("whatever", session, 0L, TimeUnit.MILLISECONDS);
+ LocalPoolEntry entry = new LocalPoolEntry("whatever", session);
pool.freeEntry(entry, true);
}
@@ -282,11 +334,11 @@ public class TestRouteSpecificPool {
Assert.assertEquals(0, pool.getLeasedCount());
Assert.assertEquals(3, pool.getPendingCount());
- PoolEntry<String> entry1 = pool.completed(sessionRequest1);
+ LocalPoolEntry entry1 = pool.completed(sessionRequest1);
Assert.assertNotNull(entry1);
- PoolEntry<String> entry2 = pool.completed(sessionRequest2);
+ LocalPoolEntry entry2 = pool.completed(sessionRequest2);
Assert.assertNotNull(entry2);
- PoolEntry<String> entry3 = pool.completed(sessionRequest3);
+ LocalPoolEntry entry3 = pool.completed(sessionRequest3);
Assert.assertNotNull(entry3);
Assert.assertEquals(3, pool.getAllocatedCount());
@@ -347,9 +399,9 @@ public class TestRouteSpecificPool {
Mockito.when(sessionRequest3.getSession()).thenReturn(session3);
pool.addPending(sessionRequest3, new BasicPoolEntryCallback());
- PoolEntry<String> entry1 = pool.completed(sessionRequest1);
+ LocalPoolEntry entry1 = pool.completed(sessionRequest1);
Assert.assertNotNull(entry1);
- PoolEntry<String> entry2 = pool.completed(sessionRequest2);
+ LocalPoolEntry entry2 = pool.completed(sessionRequest2);
Assert.assertNotNull(entry2);
pool.freeEntry(entry1, true);
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestSessionPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestSessionPool.java?rev=1151821&r1=1151803&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestSessionPool.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/pool/TestSessionPool.java Thu Jul 28 12:41:14 2011
@@ -24,7 +24,7 @@
* <http://www.apache.org/>.
*
*/
-package org.apache.http.impl.nio.pool;
+package org.apache.http.nio.pool;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
@@ -33,17 +33,70 @@ import java.util.concurrent.TimeUnit;
import junit.framework.Assert;
-import org.apache.http.nio.conn.PoolStats;
import org.apache.http.nio.reactor.ConnectingIOReactor;
import org.apache.http.nio.reactor.IOSession;
import org.apache.http.nio.reactor.SessionRequest;
import org.apache.http.nio.reactor.SessionRequestCallback;
+import org.apache.http.pool.PoolEntry;
+import org.apache.http.pool.PoolStats;
import org.junit.Test;
import org.mockito.Mockito;
public class TestSessionPool {
- static class LocalSessionPool extends SessionPool<String, PoolEntry<String>> {
+ static class LocalPoolEntry extends PoolEntry<String, IOSession> {
+
+ public LocalPoolEntry(final String route, final IOSession conn) {
+ super(route, conn);
+ }
+
+ }
+
+ static class BasicPoolEntryCallback implements PoolEntryCallback<LocalPoolEntry> {
+
+ private LocalPoolEntry entry;
+ private Exception ex;
+ private boolean completed;
+ private boolean failed;
+ private boolean cancelled;
+
+ public void completed(final LocalPoolEntry entry) {
+ this.entry = entry;
+ this.completed = true;
+ }
+
+ public LocalPoolEntry getEntry() {
+ return this.entry;
+ }
+
+ public Exception getException() {
+ return this.ex;
+ }
+
+ public void failed(final Exception ex) {
+ this.ex = ex;
+ this.failed = true;
+ }
+
+ public void cancelled() {
+ this.cancelled = true;
+ }
+
+ public boolean isCompleted() {
+ return this.completed;
+ }
+
+ public boolean isFailed() {
+ return this.failed;
+ }
+
+ public boolean isCancelled() {
+ return this.cancelled;
+ }
+
+ }
+
+ static class LocalSessionPool extends SessionPool<String, LocalPoolEntry> {
public LocalSessionPool(
final ConnectingIOReactor ioreactor, int defaultMaxPerRoute, int maxTotal) {
@@ -61,13 +114,13 @@ public class TestSessionPool {
}
@Override
- protected PoolEntry<String> createEntry(final String route, final IOSession session) {
- return new PoolEntry<String>(route, session, 0L, TimeUnit.MILLISECONDS);
+ protected LocalPoolEntry createEntry(final String route, final IOSession session) {
+ return new LocalPoolEntry(route, session);
}
@Override
- protected void closeEntry(final PoolEntry<String> entry) {
- IOSession session = entry.getIOSession();
+ protected void closeEntry(final LocalPoolEntry entry) {
+ IOSession session = entry.getConnection();
session.close();
}
@@ -92,8 +145,8 @@ public class TestSessionPool {
@Test
public void testInternalLeaseRequest() throws Exception {
- LeaseRequest<String, PoolEntry<String>> leaseRequest =
- new LeaseRequest<String, PoolEntry<String>>("somehost", null, 0,
+ LeaseRequest<String, LocalPoolEntry> leaseRequest =
+ new LeaseRequest<String, LocalPoolEntry>("somehost", null, 0,
new BasicPoolEntryCallback());
Assert.assertEquals("[somehost][null]", leaseRequest.toString());
}
@@ -283,11 +336,11 @@ public class TestSessionPool {
pool.lease("otherhost", null, -1, TimeUnit.MILLISECONDS, callback3);
pool.requestCompleted(sessionRequest2);
- PoolEntry<String> entry1 = callback1.getEntry();
+ LocalPoolEntry entry1 = callback1.getEntry();
Assert.assertNotNull(entry1);
- PoolEntry<String> entry2 = callback2.getEntry();
+ LocalPoolEntry entry2 = callback2.getEntry();
Assert.assertNotNull(entry2);
- PoolEntry<String> entry3 = callback3.getEntry();
+ LocalPoolEntry entry3 = callback3.getEntry();
Assert.assertNotNull(entry3);
pool.release(entry1, true);
@@ -327,8 +380,7 @@ public class TestSessionPool {
public void testReleaseUnknownEntry() throws Exception {
ConnectingIOReactor ioreactor = Mockito.mock(ConnectingIOReactor.class);
LocalSessionPool pool = new LocalSessionPool(ioreactor, 2, 2);
- pool.release(new PoolEntry<String>(
- "somehost", Mockito.mock(IOSession.class), 1000, TimeUnit.SECONDS), true);
+ pool.release(new LocalPoolEntry("somehost", Mockito.mock(IOSession.class)), true);
}
@Test
@@ -370,11 +422,11 @@ public class TestSessionPool {
pool.lease("otherhost", null, -1, TimeUnit.MILLISECONDS, callback3);
pool.requestCompleted(sessionRequest2);
- PoolEntry<String> entry1 = callback1.getEntry();
+ LocalPoolEntry entry1 = callback1.getEntry();
Assert.assertNotNull(entry1);
- PoolEntry<String> entry2 = callback2.getEntry();
+ LocalPoolEntry entry2 = callback2.getEntry();
Assert.assertNotNull(entry2);
- PoolEntry<String> entry3 = callback3.getEntry();
+ LocalPoolEntry entry3 = callback3.getEntry();
Assert.assertNotNull(entry3);
pool.release(entry1, true);
@@ -400,13 +452,13 @@ public class TestSessionPool {
pool.lease("otherhost", null, -1, TimeUnit.MILLISECONDS, callback9);
Assert.assertTrue(callback4.isCompleted());
- PoolEntry<String> entry4 = callback4.getEntry();
+ LocalPoolEntry entry4 = callback4.getEntry();
Assert.assertNotNull(entry4);
Assert.assertTrue(callback5.isCompleted());
- PoolEntry<String> entry5 = callback5.getEntry();
+ LocalPoolEntry entry5 = callback5.getEntry();
Assert.assertNotNull(entry5);
Assert.assertTrue(callback6.isCompleted());
- PoolEntry<String> entry6 = callback6.getEntry();
+ LocalPoolEntry entry6 = callback6.getEntry();
Assert.assertNotNull(entry6);
Assert.assertFalse(callback7.isCompleted());
Assert.assertFalse(callback8.isCompleted());
@@ -491,10 +543,10 @@ public class TestSessionPool {
pool.requestCompleted(sessionRequest2);
Assert.assertTrue(callback1.isCompleted());
- PoolEntry<String> entry1 = callback1.getEntry();
+ LocalPoolEntry entry1 = callback1.getEntry();
Assert.assertNotNull(entry1);
Assert.assertTrue(callback2.isCompleted());
- PoolEntry<String> entry2 = callback2.getEntry();
+ LocalPoolEntry entry2 = callback2.getEntry();
Assert.assertNotNull(entry2);
Assert.assertFalse(callback3.isCompleted());
@@ -522,10 +574,10 @@ public class TestSessionPool {
pool.requestCompleted(sessionRequest4);
Assert.assertTrue(callback3.isCompleted());
- PoolEntry<String> entry3 = callback3.getEntry();
+ LocalPoolEntry entry3 = callback3.getEntry();
Assert.assertNotNull(entry3);
Assert.assertTrue(callback4.isCompleted());
- PoolEntry<String> entry4 = callback4.getEntry();
+ LocalPoolEntry entry4 = callback4.getEntry();
Assert.assertNotNull(entry4);
totals = pool.getTotalStats();
@@ -564,10 +616,10 @@ public class TestSessionPool {
pool.requestCompleted(sessionRequest1);
Assert.assertTrue(callback5.isCompleted());
- PoolEntry<String> entry5 = callback5.getEntry();
+ LocalPoolEntry entry5 = callback5.getEntry();
Assert.assertNotNull(entry5);
Assert.assertTrue(callback6.isCompleted());
- PoolEntry<String> entry6 = callback6.getEntry();
+ LocalPoolEntry entry6 = callback6.getEntry();
Assert.assertNotNull(entry6);
totals = pool.getTotalStats();
@@ -621,7 +673,7 @@ public class TestSessionPool {
pool.requestCompleted(sessionRequest1);
Assert.assertTrue(callback1.isCompleted());
- PoolEntry<String> entry1 = callback1.getEntry();
+ LocalPoolEntry entry1 = callback1.getEntry();
Assert.assertNotNull(entry1);
entry1.updateExpiry(1, TimeUnit.MILLISECONDS);
@@ -679,10 +731,10 @@ public class TestSessionPool {
pool.requestCompleted(sessionRequest2);
Assert.assertTrue(callback1.isCompleted());
- PoolEntry<String> entry1 = callback1.getEntry();
+ LocalPoolEntry entry1 = callback1.getEntry();
Assert.assertNotNull(entry1);
Assert.assertTrue(callback2.isCompleted());
- PoolEntry<String> entry2 = callback2.getEntry();
+ LocalPoolEntry entry2 = callback2.getEntry();
Assert.assertNotNull(entry2);
entry1.updateExpiry(1, TimeUnit.MILLISECONDS);
@@ -737,10 +789,10 @@ public class TestSessionPool {
pool.requestCompleted(sessionRequest2);
Assert.assertTrue(callback1.isCompleted());
- PoolEntry<String> entry1 = callback1.getEntry();
+ LocalPoolEntry entry1 = callback1.getEntry();
Assert.assertNotNull(entry1);
Assert.assertTrue(callback2.isCompleted());
- PoolEntry<String> entry2 = callback2.getEntry();
+ LocalPoolEntry entry2 = callback2.getEntry();
Assert.assertNotNull(entry2);
entry1.updateExpiry(0, TimeUnit.MILLISECONDS);
@@ -833,8 +885,7 @@ public class TestSessionPool {
} catch (IllegalStateException expected) {
}
// Ignored if shut down
- pool.release(new PoolEntry<String>(
- "somehost", Mockito.mock(IOSession.class), 1000, TimeUnit.SECONDS), true);
+ pool.release(new LocalPoolEntry("somehost", Mockito.mock(IOSession.class)), true);
pool.requestCompleted(Mockito.mock(SessionRequest.class));
pool.requestFailed(Mockito.mock(SessionRequest.class));
pool.requestCancelled(Mockito.mock(SessionRequest.class));
Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/pool/PoolEntry.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/pool/PoolEntry.java?rev=1151821&r1=1151820&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/pool/PoolEntry.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/pool/PoolEntry.java Thu Jul 28 12:41:14 2011
@@ -71,11 +71,11 @@ public class PoolEntry<T, C> {
this(route, conn, 0, TimeUnit.MILLISECONDS);
}
- protected T getRoute() {
+ public T getRoute() {
return this.route;
}
- protected C getConnection() {
+ public C getConnection() {
return this.conn;
}
@@ -87,11 +87,11 @@ public class PoolEntry<T, C> {
return this.validUnit;
}
- protected Object getState() {
+ public Object getState() {
return this.state;
}
- protected void setState(final Object state) {
+ public void setState(final Object state) {
this.state = state;
}
Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestConnPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestConnPool.java?rev=1151821&r1=1151820&r2=1151821&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestConnPool.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestConnPool.java Thu Jul 28 12:41:14 2011
@@ -97,12 +97,10 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
Assert.assertEquals(10, totals.getMax());
PoolStats stats = pool.getStats("somehost");
Assert.assertEquals(0, stats.getAvailable());
Assert.assertEquals(0, stats.getLeased());
- Assert.assertEquals(0, stats.getPending());
Assert.assertEquals(3, stats.getMax());
Assert.assertEquals("[leased: []][available: []][pending: []]", pool.toString());
}
@@ -145,7 +143,6 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(3, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
LocalPoolEntry entry = future1.get();
Assert.assertSame(entry1, entry);
@@ -159,8 +156,6 @@ public class TestConnPool {
totals = pool.getTotalStats();
Assert.assertEquals(2, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
-
}
@Test
@@ -270,7 +265,6 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(3, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
Future<LocalPoolEntry> future4 = pool.lease("somehost", null);
GetPoolEntryThread t4 = new GetPoolEntryThread(future4);
@@ -375,7 +369,6 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(2, totals.getLeased());
- Assert.assertEquals(2, totals.getPending());
pool.release(entry1, true);
pool.release(entry2, true);
@@ -395,7 +388,6 @@ public class TestConnPool {
totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(2, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
Future<LocalPoolEntry> future5 = pool.lease("somehost", null);
GetPoolEntryThread t5 = new GetPoolEntryThread(future5);
@@ -422,7 +414,6 @@ public class TestConnPool {
totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(2, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
pool.release(entry5, true);
pool.release(entry6, true);
@@ -430,7 +421,6 @@ public class TestConnPool {
totals = pool.getTotalStats();
Assert.assertEquals(2, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
}
@Test
@@ -462,11 +452,9 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(1, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
PoolStats stats = pool.getStats("somehost");
Assert.assertEquals(0, stats.getAvailable());
Assert.assertEquals(1, stats.getLeased());
- Assert.assertEquals(0, stats.getPending());
}
@Test
@@ -505,11 +493,9 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(1, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
PoolStats stats = pool.getStats("somehost");
Assert.assertEquals(1, stats.getAvailable());
Assert.assertEquals(0, stats.getLeased());
- Assert.assertEquals(0, stats.getPending());
}
@Test
@@ -625,11 +611,9 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(1, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
PoolStats stats = pool.getStats("somehost");
Assert.assertEquals(1, stats.getAvailable());
Assert.assertEquals(0, stats.getLeased());
- Assert.assertEquals(0, stats.getPending());
pool.closeIdle(-1, TimeUnit.MILLISECONDS);
@@ -638,11 +622,9 @@ public class TestConnPool {
totals = pool.getTotalStats();
Assert.assertEquals(0, totals.getAvailable());
Assert.assertEquals(0, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
stats = pool.getStats("somehost");
Assert.assertEquals(0, stats.getAvailable());
Assert.assertEquals(0, stats.getLeased());
- Assert.assertEquals(0, stats.getPending());
}
@Test(expected=IllegalArgumentException.class)
@@ -707,7 +689,6 @@ public class TestConnPool {
PoolStats totals = pool.getTotalStats();
Assert.assertEquals(1, totals.getAvailable());
Assert.assertEquals(1, totals.getLeased());
- Assert.assertEquals(0, totals.getPending());
pool.shutdown(1000);
Assert.assertTrue(pool.isShutdown());
Copied: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestPoolEntry.java (from r1151814, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/pool/TestPoolEntry.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestPoolEntry.java?p2=httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestPoolEntry.java&p1=httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/pool/TestPoolEntry.java&r1=1151814&r2=1151821&rev=1151821&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/pool/TestPoolEntry.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/pool/TestPoolEntry.java Thu Jul 28 12:41:14 2011
@@ -24,28 +24,28 @@
* <http://www.apache.org/>.
*
*/
-package org.apache.http.impl.nio.pool;
+package org.apache.http.pool;
import java.util.concurrent.TimeUnit;
import junit.framework.Assert;
-import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.HttpConnection;
import org.junit.Test;
import org.mockito.Mockito;
public class TestPoolEntry {
- static class MockPoolEntry extends PoolEntry<String> {
+ static class MockPoolEntry extends PoolEntry<String, HttpConnection> {
public MockPoolEntry(final String route,
long timeToLive, final TimeUnit tunit) {
- super(route, Mockito.mock(IOSession.class), timeToLive, tunit);
+ super(route, Mockito.mock(HttpConnection.class), timeToLive, tunit);
}
- public MockPoolEntry(final String route, final IOSession iosession,
+ public MockPoolEntry(final String route, final HttpConnection conn,
long timeToLive, final TimeUnit tunit) {
- super(route, iosession, timeToLive, tunit);
+ super(route, conn, timeToLive, tunit);
}
}
@@ -63,7 +63,7 @@ public class TestPoolEntry {
@Test
public void testInvalidConstruction() throws Exception {
try {
- new MockPoolEntry(null, Mockito.mock(IOSession.class), 0L, TimeUnit.MILLISECONDS);
+ new MockPoolEntry(null, Mockito.mock(HttpConnection.class), 0L, TimeUnit.MILLISECONDS);
Assert.fail("IllegalArgumentException should have been thrown");
} catch (IllegalArgumentException expected) {
}
@@ -73,7 +73,7 @@ public class TestPoolEntry {
} catch (IllegalArgumentException expected) {
}
try {
- new MockPoolEntry("stuff", Mockito.mock(IOSession.class), 0L, null);
+ new MockPoolEntry("stuff", Mockito.mock(HttpConnection.class), 0L, null);
Assert.fail("IllegalArgumentException should have been thrown");
} catch (IllegalArgumentException expected) {
}