test/jdk/java/net/httpclient/LargeResponseTest.java
author dfuchs
Wed, 16 Oct 2019 14:50:53 +0100
changeset 58649 6b6bf0de534b
permissions -rw-r--r--
8231449: HttpClient’s client ssl certificate authentication seems to be broken. Summary: SSLFlowDelegate.Reader and SubscriberWrapper are changed to better cooperate on when more demand should be requested from upstream. The issue encountered in this scenario was triggered by a large certificate which caused the SSLFlowDelegate to stop requesting data from upstream during the handshake although the engine handshake status was NEED_UNWRAP. Reviewed-by: chegar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58649
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     1
/*
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     4
 *
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     7
 * published by the Free Software Foundation.
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     8
 *
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    13
 * accompanied this code).
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    14
 *
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    18
 *
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    21
 * questions.
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    22
 */
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    23
import com.sun.net.httpserver.HttpServer;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    24
import com.sun.net.httpserver.HttpsConfigurator;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    25
import com.sun.net.httpserver.HttpsServer;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    26
import jdk.test.lib.net.SimpleSSLContext;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    27
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    28
import javax.net.ssl.SSLContext;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    29
import java.io.IOException;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    30
import java.io.InputStream;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    31
import java.io.OutputStream;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    32
import java.net.InetAddress;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    33
import java.net.InetSocketAddress;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    34
import java.net.Proxy;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    35
import java.net.ProxySelector;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    36
import java.net.SocketAddress;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    37
import java.net.URI;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    38
import java.net.http.HttpClient;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    39
import java.net.http.HttpRequest;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    40
import java.net.http.HttpResponse;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    41
import java.nio.charset.StandardCharsets;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    42
import java.time.Duration;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    43
import java.util.List;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    44
import java.util.Set;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    45
import java.util.concurrent.CompletableFuture;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    46
import java.util.concurrent.CopyOnWriteArrayList;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    47
import java.util.concurrent.CopyOnWriteArraySet;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    48
import java.util.concurrent.ExecutorService;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    49
import java.util.concurrent.LinkedBlockingQueue;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    50
import java.util.concurrent.ThreadPoolExecutor;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    51
import java.util.concurrent.TimeUnit;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    52
import java.util.concurrent.atomic.AtomicLong;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    53
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    54
/**
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    55
 * @test
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    56
 * @bug 8231449
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    57
 * @summary This test verifies that the HttpClient works correctly when the server
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    58
 *          sends large amount of data. Note that this test will pass even without
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    59
 *          the fix for JDK-8231449, which is unfortunate.
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    60
 * @library /test/lib http2/server
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    61
 * @build jdk.test.lib.net.SimpleSSLContext HttpServerAdapters DigestEchoServer LargeResponseTest
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    62
 * @modules java.net.http/jdk.internal.net.http.common
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    63
 *          java.net.http/jdk.internal.net.http.frame
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    64
 *          java.net.http/jdk.internal.net.http.hpack
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    65
 *          java.logging
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    66
 *          java.base/sun.net.www.http
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    67
 *          java.base/sun.net.www
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    68
 *          java.base/sun.net
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    69
 * @run main/othervm -Dtest.requiresHost=true
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    70
 *                   -Djdk.httpclient.HttpClient.log=headers
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    71
 *                   -Djdk.internal.httpclient.debug=true
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    72
 *                   LargeResponseTest
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    73
 *
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    74
 */
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    75
public class LargeResponseTest implements HttpServerAdapters {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    76
    static final byte[] DATA;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    77
    static {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    78
        DATA = new byte[64 * 1024];
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    79
        int len = 'z' - 'a';
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    80
        for (int i=0; i < DATA.length; i++) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    81
            DATA[i] = (byte) ('a' + (i % len));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    82
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    83
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    84
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    85
    static final SSLContext context;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    86
    static {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    87
        try {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    88
            context = new SimpleSSLContext().get();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    89
            SSLContext.setDefault(context);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    90
        } catch (Exception x) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    91
            throw new ExceptionInInitializerError(x);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    92
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    93
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    94
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    95
    final AtomicLong requestCounter = new AtomicLong();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    96
    final AtomicLong responseCounter = new AtomicLong();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    97
    HttpTestServer http1Server;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    98
    HttpTestServer http2Server;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
    99
    HttpTestServer https1Server;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   100
    HttpTestServer https2Server;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   101
    DigestEchoServer.TunnelingProxy proxy;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   102
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   103
    URI http1URI;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   104
    URI https1URI;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   105
    URI http2URI;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   106
    URI https2URI;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   107
    InetSocketAddress proxyAddress;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   108
    ProxySelector proxySelector;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   109
    HttpClient client;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   110
    List<CompletableFuture<?>>  futures = new CopyOnWriteArrayList<>();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   111
    Set<URI> pending = new CopyOnWriteArraySet<>();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   112
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   113
    final ExecutorService executor = new ThreadPoolExecutor(12, 60, 10,
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   114
            TimeUnit.SECONDS, new LinkedBlockingQueue<>());
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   115
    final ExecutorService clientexec = new ThreadPoolExecutor(6, 12, 1,
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   116
            TimeUnit.SECONDS, new LinkedBlockingQueue<>());
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   117
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   118
    public HttpClient newHttpClient(ProxySelector ps) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   119
        HttpClient.Builder builder = HttpClient
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   120
                .newBuilder()
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   121
                .sslContext(context)
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   122
                .executor(clientexec)
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   123
                .proxy(ps);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   124
        return builder.build();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   125
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   126
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   127
    public void setUp() throws Exception {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   128
        try {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   129
            InetSocketAddress sa = new InetSocketAddress(InetAddress.getLoopbackAddress(), 0);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   130
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   131
            // HTTP/1.1
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   132
            HttpServer server1 = HttpServer.create(sa, 0);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   133
            server1.setExecutor(executor);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   134
            http1Server = HttpTestServer.of(server1);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   135
            http1Server.addHandler(new HttpTestLargeHandler(), "/LargeResponseTest/http1/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   136
            http1Server.start();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   137
            http1URI = new URI("http://" + http1Server.serverAuthority() + "/LargeResponseTest/http1/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   138
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   139
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   140
            // HTTPS/1.1
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   141
            HttpsServer sserver1 = HttpsServer.create(sa, 100);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   142
            sserver1.setExecutor(executor);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   143
            sserver1.setHttpsConfigurator(new HttpsConfigurator(context));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   144
            https1Server = HttpTestServer.of(sserver1);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   145
            https1Server.addHandler(new HttpTestLargeHandler(), "/LargeResponseTest/https1/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   146
            https1Server.start();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   147
            https1URI = new URI("https://" + https1Server.serverAuthority() + "/LargeResponseTest/https1/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   148
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   149
            // HTTP/2.0
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   150
            http2Server = HttpTestServer.of(
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   151
                    new Http2TestServer("localhost", false, 0));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   152
            http2Server.addHandler(new HttpTestLargeHandler(), "/LargeResponseTest/http2/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   153
            http2Server.start();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   154
            http2URI = new URI("http://" + http2Server.serverAuthority() + "/LargeResponseTest/http2/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   155
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   156
            // HTTPS/2.0
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   157
            https2Server = HttpTestServer.of(
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   158
                    new Http2TestServer("localhost", true, 0));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   159
            https2Server.addHandler(new HttpTestLargeHandler(), "/LargeResponseTest/https2/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   160
            https2Server.start();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   161
            https2URI = new URI("https://" + https2Server.serverAuthority() + "/LargeResponseTest/https2/");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   162
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   163
            proxy = DigestEchoServer.createHttpsProxyTunnel(
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   164
                    DigestEchoServer.HttpAuthSchemeType.NONE);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   165
            proxyAddress = proxy.getProxyAddress();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   166
            proxySelector = new HttpProxySelector(proxyAddress);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   167
            client = newHttpClient(proxySelector);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   168
            System.out.println("Setup: done");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   169
        } catch (Exception x) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   170
            tearDown(); throw x;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   171
        } catch (Error e) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   172
            tearDown(); throw e;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   173
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   174
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   175
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   176
    public static void main(String[] args) throws Exception {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   177
        LargeResponseTest test = new LargeResponseTest();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   178
        test.setUp();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   179
        long start = System.nanoTime();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   180
        try {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   181
            test.run(args);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   182
        } finally {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   183
            try {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   184
                long elapsed = System.nanoTime() - start;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   185
                System.out.println("*** Elapsed: " + Duration.ofNanos(elapsed));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   186
            } finally {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   187
                test.tearDown();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   188
            }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   189
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   190
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   191
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   192
    public void run(String... args) throws Exception {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   193
        List<URI> serverURIs = List.of(http1URI, http2URI, https1URI, https2URI);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   194
        for (int i=0; i<5; i++) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   195
            for (URI base : serverURIs) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   196
                if (base.getScheme().equalsIgnoreCase("https")) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   197
                    URI proxy = i % 1 == 0 ? base.resolve(URI.create("proxy/foo?n="+requestCounter.incrementAndGet()))
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   198
                    : base.resolve(URI.create("direct/foo?n="+requestCounter.incrementAndGet()));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   199
                    test(proxy);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   200
                }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   201
            }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   202
            for (URI base : serverURIs) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   203
                URI direct = base.resolve(URI.create("direct/foo?n="+requestCounter.incrementAndGet()));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   204
                test(direct);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   205
            }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   206
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   207
        CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   208
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   209
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   210
    public void test(URI uri) throws Exception {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   211
        System.out.println("Testing with " + uri);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   212
        pending.add(uri);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   213
        HttpRequest request = HttpRequest.newBuilder(uri).build();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   214
        CompletableFuture<HttpResponse<String>> resp =
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   215
                client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   216
                .whenComplete((r, t) -> this.requestCompleted(request, r, t));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   217
        futures.add(resp);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   218
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   219
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   220
    private void requestCompleted(HttpRequest request, HttpResponse<?> r, Throwable t) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   221
        responseCounter.incrementAndGet();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   222
        pending.remove(request.uri());
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   223
        System.out.println(request + " -> " + (t == null ? r : t)
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   224
                + " [still pending: " + (requestCounter.get() - responseCounter.get()) +"]");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   225
        if (pending.size() < 10 && requestCounter.get() > 10) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   226
            pending.forEach(u -> System.out.println("\tpending: " + u));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   227
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   228
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   229
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   230
    public void tearDown() {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   231
        proxy = stop(proxy, DigestEchoServer.TunnelingProxy::stop);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   232
        http1Server = stop(http1Server, HttpTestServer::stop);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   233
        https1Server = stop(https1Server, HttpTestServer::stop);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   234
        http2Server = stop(http2Server, HttpTestServer::stop);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   235
        https2Server = stop(https2Server, HttpTestServer::stop);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   236
        client = null;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   237
        try {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   238
            executor.awaitTermination(2000, TimeUnit.MILLISECONDS);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   239
        } catch (Throwable x) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   240
        } finally {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   241
            executor.shutdownNow();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   242
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   243
        try {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   244
            clientexec.awaitTermination(2000, TimeUnit.MILLISECONDS);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   245
        } catch (Throwable x) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   246
        } finally {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   247
            clientexec.shutdownNow();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   248
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   249
        System.out.println("Teardown: done");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   250
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   251
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   252
    private interface Stoppable<T> { public void stop(T service) throws Exception; }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   253
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   254
    static <T>  T stop(T service, Stoppable<T> stop) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   255
        try { if (service != null) stop.stop(service); } catch (Throwable x) { };
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   256
        return null;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   257
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   258
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   259
    static class HttpProxySelector extends ProxySelector {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   260
        private static final List<Proxy> NO_PROXY = List.of(Proxy.NO_PROXY);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   261
        private final List<Proxy> proxyList;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   262
        HttpProxySelector(InetSocketAddress proxyAddress) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   263
            proxyList = List.of(new Proxy(Proxy.Type.HTTP, proxyAddress));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   264
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   265
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   266
        @Override
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   267
        public List<Proxy> select(URI uri) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   268
            // our proxy only supports tunneling
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   269
            if (uri.getScheme().equalsIgnoreCase("https")) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   270
                if (uri.getPath().contains("/proxy/")) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   271
                    return proxyList;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   272
                }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   273
            }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   274
            return NO_PROXY;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   275
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   276
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   277
        @Override
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   278
        public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   279
            System.err.println("Connection to proxy failed: " + ioe);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   280
            System.err.println("Proxy: " + sa);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   281
            System.err.println("\tURI: " + uri);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   282
            ioe.printStackTrace();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   283
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   284
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   285
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   286
    public static class HttpTestLargeHandler implements HttpTestHandler {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   287
        @Override
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   288
        public void handle(HttpTestExchange t) throws IOException {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   289
            try (InputStream is = t.getRequestBody();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   290
                 OutputStream os = t.getResponseBody()) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   291
                byte[] bytes = is.readAllBytes();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   292
                assert bytes.length == 0;
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   293
                URI u = t.getRequestURI();
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   294
                long responseID = Long.parseLong(u.getQuery().substring(2));
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   295
                System.out.println("Server " + t.getRequestURI() + " sending response " + responseID);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   296
                t.sendResponseHeaders(200, DATA.length * 3);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   297
                for (int i=0; i<3; i++) {
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   298
                    os.write(DATA);
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   299
                }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   300
                System.out.println("\tresp:" + responseID + ": done");
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   301
            }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   302
        }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   303
    }
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   304
6b6bf0de534b 8231449: HttpClient’s client ssl certificate authentication seems to be broken.
dfuchs
parents:
diff changeset
   305
}