diff options
Diffstat (limited to 'jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTPTest.java')
-rw-r--r-- | jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTPTest.java | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTPTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTPTest.java index 9b292e9e41..aa3b4f5e74 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTPTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTPTest.java @@ -18,12 +18,13 @@ package org.eclipse.jetty.client.http; +import java.util.Queue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.TimeUnit; import org.eclipse.jetty.client.AbstractHttpClientServerTest; -import org.eclipse.jetty.client.ConnectionPool; +import org.eclipse.jetty.client.DuplexConnectionPool; import org.eclipse.jetty.client.EmptyServerHandler; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.Origin; @@ -62,7 +63,7 @@ public class HttpDestinationOverHTTPTest extends AbstractHttpClientServerTest if (connection == null) { // There are no queued requests, so the newly created connection will be idle - connection = destination.getConnectionPool().getIdleConnections().poll(5, TimeUnit.SECONDS); + connection = timedPoll(destination.getConnectionPool().getIdleConnections(), 5, TimeUnit.SECONDS); } Assert.assertNotNull(connection); } @@ -96,9 +97,9 @@ public class HttpDestinationOverHTTPTest extends AbstractHttpClientServerTest HttpDestinationOverHTTP destination = new HttpDestinationOverHTTP(client, new Origin("http", "localhost", connector.getLocalPort())) { @Override - protected ConnectionPool newConnectionPool(HttpClient client) + protected DuplexConnectionPool newConnectionPool(HttpClient client) { - return new ConnectionPool(this, client.getMaxConnectionsPerDestination(), this) + return new DuplexConnectionPool(this, client.getMaxConnectionsPerDestination(), this) { @Override protected void idleCreated(Connection connection) @@ -132,10 +133,11 @@ public class HttpDestinationOverHTTPTest extends AbstractHttpClientServerTest latch.countDown(); - // There must be 2 idle connections - Connection connection = destination.getConnectionPool().getIdleConnections().poll(5, TimeUnit.SECONDS); + // There must be 2 idle connections. + Queue<Connection> idleConnections = destination.getConnectionPool().getIdleConnections(); + Connection connection = timedPoll(idleConnections, 5, TimeUnit.SECONDS); Assert.assertNotNull(connection); - connection = destination.getConnectionPool().getIdleConnections().poll(5, TimeUnit.SECONDS); + connection = timedPoll(idleConnections, 5, TimeUnit.SECONDS); Assert.assertNotNull(connection); } @@ -156,7 +158,7 @@ public class HttpDestinationOverHTTPTest extends AbstractHttpClientServerTest // Acquire the connection to make it active Assert.assertSame(connection1, destination.acquire()); - destination.process(connection1, false); + destination.process(connection1); destination.release(connection1); Connection connection2 = destination.acquire(); @@ -272,4 +274,17 @@ public class HttpDestinationOverHTTPTest extends AbstractHttpClientServerTest destinationAfter = client.getDestination(scheme, host, port); Assert.assertNotSame(destinationBefore, destinationAfter); } + + private Connection timedPoll(Queue<Connection> connections, long time, TimeUnit unit) throws InterruptedException + { + long start = System.nanoTime(); + while (unit.toNanos(time) > System.nanoTime() - start) + { + Connection connection = connections.poll(); + if (connection != null) + return connection; + TimeUnit.MILLISECONDS.sleep(5); + } + return connections.poll(); + } } |