# HG changeset patch # User dfuchs # Date 1529420919 -3600 # Node ID 4a32a40ce131abde71920f5c1b80ae45ea5d43dd # Parent 6e0e57fe33c7214e58912e67340ac5de564d6859 http-client-branch: review comment - need to split SplitResponse/SplitResponseSSL further diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponse.java --- a/test/jdk/java/net/httpclient/SplitResponse.java Tue Jun 19 14:57:27 2018 +0100 +++ b/test/jdk/java/net/httpclient/SplitResponse.java Tue Jun 19 16:08:39 2018 +0100 @@ -24,6 +24,11 @@ import java.io.IOException; import java.net.SocketException; import java.net.URI; +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; import java.util.concurrent.CompletableFuture; import javax.net.ssl.SSLContext; import javax.net.ServerSocketFactory; @@ -32,6 +37,8 @@ import java.net.http.HttpClient.Version; import java.net.http.HttpRequest; import java.net.http.HttpResponse; +import java.util.stream.Stream; + import jdk.testlibrary.SimpleSSLContext; import static java.lang.System.out; import static java.lang.String.format; @@ -44,7 +51,10 @@ * @library /lib/testlibrary * @build jdk.testlibrary.SimpleSSLContext * @build MockServer - * @run main/othervm -Djdk.internal.httpclient.debug=true -Djdk.httpclient.HttpClient.log=all SplitResponse + * @run main/othervm + * -Djdk.internal.httpclient.debug=true + * -Djdk.httpclient.HttpClient.log=all + * SplitResponse HTTP connection:CLOSE mode:SYNC */ /** @@ -106,20 +116,56 @@ return client; } + enum Protocol { + HTTP, HTTPS + } + enum Connection { + KEEP_ALIVE, + CLOSE + } + enum Mode { + SYNC, ASYNC + } + + public static void main(String[] args) throws Exception { boolean useSSL = false; - if (args != null && args.length == 1) { - useSSL = "SSL".equals(args[0]); + if (args != null && args.length >= 1) { + useSSL = Protocol.valueOf(args[0]).equals(Protocol.HTTPS); + } else { + args = new String[] {"HTTP", "connection:KEEP_ALIVE:CLOSE", "mode:SYNC:ASYNC"}; } + + LinkedHashSet modes = new LinkedHashSet<>(); + LinkedHashSet keepAlive = new LinkedHashSet<>(); + Stream.of(args).skip(1).forEach(s -> { + if (s.startsWith("connection:")) { + Stream.of(s.split(":")).skip(1).forEach(c -> { + keepAlive.add(Connection.valueOf(c)); + }); + } else if (s.startsWith("mode:")) { + Stream.of(s.split(":")).skip(1).forEach(m -> { + modes.add(Mode.valueOf(m)); + }); + } else { + System.err.println("Illegal argument: " + s); + System.err.println("Allowed syntax is: HTTP|HTTPS [connection:KEEP_ALIVE[:CLOSE]] [mode:SYNC[:ASYNC]"); + throw new IllegalArgumentException(s); + } + }); + + if (keepAlive.isEmpty()) keepAlive.addAll(EnumSet.allOf(Connection.class)); + if (modes.isEmpty()) modes.addAll(EnumSet.allOf(Mode.class)); + SplitResponse sp = new SplitResponse(useSSL); for (Version version : Version.values()) { - for (boolean serverKeepalive : new boolean[]{ true, false }) { + for (Connection serverKeepalive : keepAlive) { // Note: the mock server doesn't support Keep-Alive, but // pretending that it might exercises code paths in and out of // the connection pool, and retry logic - for (boolean async : new boolean[]{ true, false }) { - sp.test(version, serverKeepalive, async); + for (Mode mode : modes) { + sp.test(version,serverKeepalive == Connection.KEEP_ALIVE,mode == Mode.ASYNC); } } } diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponseAsync.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/java/net/httpclient/SplitResponseAsync.java Tue Jun 19 16:08:39 2018 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8087112 + * @library /lib/testlibrary + * @build jdk.testlibrary.SimpleSSLContext + * @build MockServer SplitResponse + * @run main/othervm + * -Djdk.internal.httpclient.debug=true + * -Djdk.httpclient.HttpClient.log=all + * SplitResponse HTTP connection:CLOSE mode:ASYNC + */ diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponseKeepAlive.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/java/net/httpclient/SplitResponseKeepAlive.java Tue Jun 19 16:08:39 2018 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8087112 + * @library /lib/testlibrary + * @build jdk.testlibrary.SimpleSSLContext + * @build MockServer SplitResponse + * @run main/othervm + * -Djdk.internal.httpclient.debug=true + * -Djdk.httpclient.HttpClient.log=all + * SplitResponse HTTP connection:KEEP_ALIVE mode:SYNC + */ diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponseKeepAliveAsync.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/java/net/httpclient/SplitResponseKeepAliveAsync.java Tue Jun 19 16:08:39 2018 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8087112 + * @library /lib/testlibrary + * @build jdk.testlibrary.SimpleSSLContext + * @build MockServer SplitResponse + * @run main/othervm + * -Djdk.internal.httpclient.debug=true + * -Djdk.httpclient.HttpClient.log=all + * SplitResponse HTTP connection:KEEP_ALIVE mode:ASYNC + */ diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponseSSL.java --- a/test/jdk/java/net/httpclient/SplitResponseSSL.java Tue Jun 19 14:57:27 2018 +0100 +++ b/test/jdk/java/net/httpclient/SplitResponseSSL.java Tue Jun 19 16:08:39 2018 +0100 @@ -30,10 +30,5 @@ * @run main/othervm * -Djdk.internal.httpclient.debug=true * -Djdk.httpclient.HttpClient.log=all - * SplitResponseSSL SSL + * SplitResponse HTTPS connection:CLOSE mode:SYNC */ -public class SplitResponseSSL { - public static void main(String[] args) throws Exception { - SplitResponse.main(args); - } -} diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponseSSLAsync.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/java/net/httpclient/SplitResponseSSLAsync.java Tue Jun 19 16:08:39 2018 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8087112 + * @library /lib/testlibrary + * @build jdk.testlibrary.SimpleSSLContext + * @build MockServer SplitResponse + * @run main/othervm + * -Djdk.internal.httpclient.debug=true + * -Djdk.httpclient.HttpClient.log=all + * SplitResponse HTTPS connection:CLOSE mode:ASYNC + */ diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponseSSLKeepAlive.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/java/net/httpclient/SplitResponseSSLKeepAlive.java Tue Jun 19 16:08:39 2018 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8087112 + * @library /lib/testlibrary + * @build jdk.testlibrary.SimpleSSLContext + * @build MockServer SplitResponse + * @run main/othervm + * -Djdk.internal.httpclient.debug=true + * -Djdk.httpclient.HttpClient.log=all + * SplitResponse HTTPS connection:KEEP_ALIVE mode:SYNC + */ diff -r 6e0e57fe33c7 -r 4a32a40ce131 test/jdk/java/net/httpclient/SplitResponseSSLKeepAliveAsync.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/java/net/httpclient/SplitResponseSSLKeepAliveAsync.java Tue Jun 19 16:08:39 2018 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8087112 + * @library /lib/testlibrary + * @build jdk.testlibrary.SimpleSSLContext + * @build MockServer SplitResponse + * @run main/othervm + * -Djdk.internal.httpclient.debug=true + * -Djdk.httpclient.HttpClient.log=all + * SplitResponse HTTPS connection:KEEP_ALIVE mode:ASYNC + */