< prev index next >

test/jdk/java/net/httpclient/whitebox/java.net.http/jdk/internal/net/http/ConnectionPoolTest.java

Print this page




  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 package jdk.internal.net.http;
  25 
  26 import java.io.IOException;
  27 import java.lang.management.ManagementFactory;
  28 import java.net.Authenticator;
  29 import java.net.CookieHandler;
  30 import java.net.InetSocketAddress;
  31 import java.net.ProxySelector;
  32 import java.nio.ByteBuffer;
  33 import java.nio.channels.SocketChannel;

  34 import java.util.Arrays;
  35 import java.util.List;
  36 import java.util.Optional;
  37 import java.util.Random;
  38 import java.util.concurrent.CompletableFuture;
  39 import java.util.concurrent.Executor;
  40 import java.util.concurrent.Flow;
  41 import java.util.stream.IntStream;
  42 import java.time.Instant;
  43 import java.time.temporal.ChronoUnit;
  44 import javax.net.ssl.SSLContext;
  45 import javax.net.ssl.SSLParameters;
  46 import java.net.http.HttpClient;
  47 import java.net.http.HttpRequest;
  48 import java.net.http.HttpResponse;
  49 import jdk.internal.net.http.common.FlowTube;
  50 
  51 /**
  52  * @summary Verifies that the ConnectionPool correctly handle
  53  *          connection deadlines and purges the right connections


 267         final FlowTubeStub flow;
 268         volatile boolean closed;
 269 
 270         // All these return something
 271         @Override boolean connected() {return !closed;}
 272         @Override boolean isSecure() {return secured;}
 273         @Override boolean isProxied() {return proxy!=null;}
 274         @Override ConnectionPool.CacheKey cacheKey() {return key;}
 275         @Override
 276         public void close() {
 277             closed=true;
 278             System.out.println("closed: " + this);
 279         }
 280         @Override
 281         public String toString() {
 282             return "HttpConnectionStub: " + address + " proxy: " + proxy;
 283         }
 284 
 285         // All these throw errors
 286         @Override public HttpPublisher publisher() {return error();}
 287         @Override public CompletableFuture<Void> connectAsync() {return error();}

 288         @Override SocketChannel channel() {return error();}
 289         @Override
 290         FlowTube getConnectionFlow() {return flow;}
 291     }
 292     // Emulates an HttpClient that has a strong reference to its connection pool.
 293     static class HttpClientStub extends HttpClient {
 294         public HttpClientStub(ConnectionPool pool) {
 295             this.pool = pool;
 296         }
 297         final ConnectionPool pool;
 298         @Override public Optional<CookieHandler> cookieHandler() {return error();}

 299         @Override public HttpClient.Redirect followRedirects() {return error();}
 300         @Override public Optional<ProxySelector> proxy() {return error();}
 301         @Override public SSLContext sslContext() {return error();}
 302         @Override public SSLParameters sslParameters() {return error();}
 303         @Override public Optional<Authenticator> authenticator() {return error();}
 304         @Override public HttpClient.Version version() {return HttpClient.Version.HTTP_1_1;}
 305         @Override public Optional<Executor> executor() {return error();}
 306         @Override
 307         public <T> HttpResponse<T> send(HttpRequest req,
 308                                         HttpResponse.BodyHandler<T> responseBodyHandler)
 309                 throws IOException, InterruptedException {
 310             return error();
 311         }
 312         @Override
 313         public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest req,
 314                 HttpResponse.BodyHandler<T> responseBodyHandler) {
 315             return error();
 316         }
 317         @Override
 318         public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest req,


  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 package jdk.internal.net.http;
  25 
  26 import java.io.IOException;
  27 import java.lang.management.ManagementFactory;
  28 import java.net.Authenticator;
  29 import java.net.CookieHandler;
  30 import java.net.InetSocketAddress;
  31 import java.net.ProxySelector;
  32 import java.nio.ByteBuffer;
  33 import java.nio.channels.SocketChannel;
  34 import java.time.Duration;
  35 import java.util.Arrays;
  36 import java.util.List;
  37 import java.util.Optional;
  38 import java.util.Random;
  39 import java.util.concurrent.CompletableFuture;
  40 import java.util.concurrent.Executor;
  41 import java.util.concurrent.Flow;
  42 import java.util.stream.IntStream;
  43 import java.time.Instant;
  44 import java.time.temporal.ChronoUnit;
  45 import javax.net.ssl.SSLContext;
  46 import javax.net.ssl.SSLParameters;
  47 import java.net.http.HttpClient;
  48 import java.net.http.HttpRequest;
  49 import java.net.http.HttpResponse;
  50 import jdk.internal.net.http.common.FlowTube;
  51 
  52 /**
  53  * @summary Verifies that the ConnectionPool correctly handle
  54  *          connection deadlines and purges the right connections


 268         final FlowTubeStub flow;
 269         volatile boolean closed;
 270 
 271         // All these return something
 272         @Override boolean connected() {return !closed;}
 273         @Override boolean isSecure() {return secured;}
 274         @Override boolean isProxied() {return proxy!=null;}
 275         @Override ConnectionPool.CacheKey cacheKey() {return key;}
 276         @Override
 277         public void close() {
 278             closed=true;
 279             System.out.println("closed: " + this);
 280         }
 281         @Override
 282         public String toString() {
 283             return "HttpConnectionStub: " + address + " proxy: " + proxy;
 284         }
 285 
 286         // All these throw errors
 287         @Override public HttpPublisher publisher() {return error();}
 288         @Override public CompletableFuture<Void> connectAsync(Exchange<?> e) {return error();}
 289         @Override public CompletableFuture<Void> finishConnect() {return error();}
 290         @Override SocketChannel channel() {return error();}
 291         @Override
 292         FlowTube getConnectionFlow() {return flow;}
 293     }
 294     // Emulates an HttpClient that has a strong reference to its connection pool.
 295     static class HttpClientStub extends HttpClient {
 296         public HttpClientStub(ConnectionPool pool) {
 297             this.pool = pool;
 298         }
 299         final ConnectionPool pool;
 300         @Override public Optional<CookieHandler> cookieHandler() {return error();}
 301         @Override public Optional<Duration> connectTimeout() {return error();}
 302         @Override public HttpClient.Redirect followRedirects() {return error();}
 303         @Override public Optional<ProxySelector> proxy() {return error();}
 304         @Override public SSLContext sslContext() {return error();}
 305         @Override public SSLParameters sslParameters() {return error();}
 306         @Override public Optional<Authenticator> authenticator() {return error();}
 307         @Override public HttpClient.Version version() {return HttpClient.Version.HTTP_1_1;}
 308         @Override public Optional<Executor> executor() {return error();}
 309         @Override
 310         public <T> HttpResponse<T> send(HttpRequest req,
 311                                         HttpResponse.BodyHandler<T> responseBodyHandler)
 312                 throws IOException, InterruptedException {
 313             return error();
 314         }
 315         @Override
 316         public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest req,
 317                 HttpResponse.BodyHandler<T> responseBodyHandler) {
 318             return error();
 319         }
 320         @Override
 321         public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest req,
< prev index next >