< prev index next >
test/java/net/httpclient/ManyRequests.java
Print this page
@@ -22,22 +22,21 @@
*/
/**
* @test
* @bug 8087112
- * @library /lib/testlibrary/
- * @build jdk.testlibrary.SimpleSSLContext
+ * @library /lib/testlibrary/ /
+ * @build jdk.testlibrary.SimpleSSLContext EchoHandler
* @compile ../../../com/sun/net/httpserver/LogFilter.java
* @compile ../../../com/sun/net/httpserver/FileServerHandler.java
- * @run main/othervm ManyRequests
+ * @run main/othervm/timeout=40 -Djava.net.http.HttpClient.log=ssl ManyRequests
* @summary Send a large number of requests asynchronously
*/
//package javaapplication16;
-import com.sun.net.httpserver.HttpsConfigurator;
-import com.sun.net.httpserver.HttpsServer;
+import com.sun.net.httpserver.*;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
@@ -45,22 +44,29 @@
import java.net.URI;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Random;
+import java.util.logging.*;
import java.util.concurrent.CompletableFuture;
-import javax.net.ssl.SSLContext;
+import javax.net.ssl.*;
import jdk.testlibrary.SimpleSSLContext;
public class ManyRequests {
+ volatile static int counter = 0;
+
public static void main(String[] args) throws Exception {
+ Logger logger = Logger.getLogger("com.sun.net.httpserver");
+ logger.setLevel(Level.ALL);
+ logger.info("TEST");
+
SSLContext ctx = new SimpleSSLContext().get();
InetSocketAddress addr = new InetSocketAddress(0);
HttpsServer server = HttpsServer.create(addr, 0);
- server.setHttpsConfigurator(new HttpsConfigurator(ctx));
+ server.setHttpsConfigurator(new Configurator(ctx));
HttpClient client = HttpClient.create()
.sslContext(ctx)
.build();
try {
@@ -70,11 +76,12 @@
server.stop(0);
client.executorService().shutdownNow();
}
}
- static final int REQUESTS = 1000;
+ //static final int REQUESTS = 1000;
+ static final int REQUESTS = 20;
static void test(HttpsServer server, HttpClient client) throws Exception {
int port = server.getAddress().getPort();
URI uri = new URI("https://127.0.0.1:" + port + "/foo/x");
server.createContext("/foo", new EchoHandler());
@@ -100,10 +107,13 @@
limiter.requestComplete();
if (resp.statusCode() != 200) {
resp.bodyAsync(HttpResponse.ignoreBody());
String s = "Expected 200, got: " + resp.statusCode();
return completedWithIOException(s);
+ } else {
+ counter++;
+ System.out.println("Result from " + counter);
}
return resp.bodyAsync(HttpResponse.asByteArray())
.thenApply((b) -> new Pair<>(resp, b));
})
.thenAccept((pair) -> {
@@ -112,18 +122,22 @@
check(Arrays.equals(requestBody, pair.u),
"bodies not equal");
});
}
+
// wait for them all to complete and throw exception in case of error
+ //try {
CompletableFuture.allOf(results).join();
+ //} catch (Exception e) {
+ //e.printStackTrace();
+ //throw e;
+ //}
}
static <T> CompletableFuture<T> completedWithIOException(String message) {
- CompletableFuture<T> cf = new CompletableFuture<>();
- cf.completeExceptionally(new IOException(message));
- return cf;
+ return CompletableFuture.failedFuture(new IOException(message));
}
static final class Pair<T,U> {
Pair(T t, U u) {
this.t = t; this.u = u;
@@ -190,5 +204,16 @@
for (Object o : msg)
sb.append(o);
throw new RuntimeException(sb.toString());
}
}
+
+class Configurator extends HttpsConfigurator {
+ public Configurator(SSLContext ctx) {
+ super(ctx);
+ }
+
+ public void configure (HttpsParameters params) {
+ params.setSSLParameters (getSSLContext().getSupportedSSLParameters());
+ }
+}
+
< prev index next >