jdk-24/test/jdk/sun/net/www/http/HttpClient/KeepAliveTest.java
2022-10-13 08:32:48 +00:00

1273 lines
101 KiB
Java

/*
* Copyright (c) 2022, 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
* @library /test/lib
* @bug 8291226 8291638
* @modules java.base/sun.net:+open
* java.base/sun.net.www.http:+open
* java.base/sun.net.www:+open
* java.base/sun.net.www.protocol.http:+open
* @run main/othervm KeepAliveTest 0
* @run main/othervm KeepAliveTest 1
* @run main/othervm KeepAliveTest 2
* @run main/othervm KeepAliveTest 3
* @run main/othervm KeepAliveTest 4
* @run main/othervm KeepAliveTest 5
* @run main/othervm KeepAliveTest 6
* @run main/othervm KeepAliveTest 7
* @run main/othervm KeepAliveTest 8
* @run main/othervm KeepAliveTest 9
* @run main/othervm KeepAliveTest 10
* @run main/othervm KeepAliveTest 11
* @run main/othervm KeepAliveTest 12
* @run main/othervm KeepAliveTest 13
* @run main/othervm KeepAliveTest 14
* @run main/othervm KeepAliveTest 15
* @run main/othervm KeepAliveTest 16
* @run main/othervm KeepAliveTest 17
* @run main/othervm KeepAliveTest 18
* @run main/othervm KeepAliveTest 19
* @run main/othervm KeepAliveTest 20
* @run main/othervm KeepAliveTest 21
* @run main/othervm KeepAliveTest 22
* @run main/othervm KeepAliveTest 23
* @run main/othervm KeepAliveTest 24
* @run main/othervm KeepAliveTest 25
* @run main/othervm KeepAliveTest 26
* @run main/othervm KeepAliveTest 27
* @run main/othervm KeepAliveTest 28
* @run main/othervm KeepAliveTest 29
* @run main/othervm KeepAliveTest 30
* @run main/othervm KeepAliveTest 31
* @run main/othervm KeepAliveTest 32
* @run main/othervm KeepAliveTest 33
* @run main/othervm KeepAliveTest 34
* @run main/othervm KeepAliveTest 35
* @run main/othervm KeepAliveTest 36
* @run main/othervm KeepAliveTest 37
* @run main/othervm KeepAliveTest 38
* @run main/othervm KeepAliveTest 39
* @run main/othervm KeepAliveTest 40
* @run main/othervm KeepAliveTest 41
* @run main/othervm KeepAliveTest 42
* @run main/othervm KeepAliveTest 43
* @run main/othervm KeepAliveTest 44
* @run main/othervm KeepAliveTest 45
* @run main/othervm KeepAliveTest 46
* @run main/othervm KeepAliveTest 47
* @run main/othervm KeepAliveTest 48
* @run main/othervm KeepAliveTest 49
* @run main/othervm KeepAliveTest 50
* @run main/othervm KeepAliveTest 51
* @run main/othervm KeepAliveTest 52
* @run main/othervm KeepAliveTest 53
* @run main/othervm KeepAliveTest 54
* @run main/othervm KeepAliveTest 55
* @run main/othervm KeepAliveTest 56
* @run main/othervm KeepAliveTest 57
* @run main/othervm KeepAliveTest 58
* @run main/othervm KeepAliveTest 59
* @run main/othervm KeepAliveTest 60
* @run main/othervm KeepAliveTest 61
* @run main/othervm KeepAliveTest 62
* @run main/othervm KeepAliveTest 63
* @run main/othervm KeepAliveTest 64
* @run main/othervm KeepAliveTest 65
* @run main/othervm KeepAliveTest 66
* @run main/othervm KeepAliveTest 67
* @run main/othervm KeepAliveTest 68
* @run main/othervm KeepAliveTest 69
* @run main/othervm KeepAliveTest 70
* @run main/othervm KeepAliveTest 71
* @run main/othervm KeepAliveTest 72
* @run main/othervm KeepAliveTest 73
* @run main/othervm KeepAliveTest 74
* @run main/othervm KeepAliveTest 75
* @run main/othervm KeepAliveTest 76
* @run main/othervm KeepAliveTest 77
* @run main/othervm KeepAliveTest 78
* @run main/othervm KeepAliveTest 79
* @run main/othervm KeepAliveTest 80
* @run main/othervm KeepAliveTest 81
* @run main/othervm KeepAliveTest 82
* @run main/othervm KeepAliveTest 83
* @run main/othervm KeepAliveTest 84
* @run main/othervm KeepAliveTest 85
* @run main/othervm KeepAliveTest 86
* @run main/othervm KeepAliveTest 87
* @run main/othervm KeepAliveTest 88
* @run main/othervm KeepAliveTest 89
* @run main/othervm KeepAliveTest 90
* @run main/othervm KeepAliveTest 91
* @run main/othervm KeepAliveTest 92
* @run main/othervm KeepAliveTest 93
* @run main/othervm KeepAliveTest 94
* @run main/othervm KeepAliveTest 95
* @run main/othervm KeepAliveTest 96
* @run main/othervm KeepAliveTest 97
* @run main/othervm KeepAliveTest 98
* @run main/othervm KeepAliveTest 99
* @run main/othervm KeepAliveTest 100
* @run main/othervm KeepAliveTest 101
* @run main/othervm KeepAliveTest 102
* @run main/othervm KeepAliveTest 103
* @run main/othervm KeepAliveTest 104
* @run main/othervm KeepAliveTest 105
* @run main/othervm KeepAliveTest 106
* @run main/othervm KeepAliveTest 107
* @run main/othervm KeepAliveTest 108
* @run main/othervm KeepAliveTest 109
* @run main/othervm KeepAliveTest 110
* @run main/othervm KeepAliveTest 111
* @run main/othervm KeepAliveTest 112
* @run main/othervm KeepAliveTest 113
* @run main/othervm KeepAliveTest 114
* @run main/othervm KeepAliveTest 115
* @run main/othervm KeepAliveTest 116
* @run main/othervm KeepAliveTest 117
* @run main/othervm KeepAliveTest 118
* @run main/othervm KeepAliveTest 119
* @run main/othervm KeepAliveTest 120
* @run main/othervm KeepAliveTest 121
* @run main/othervm KeepAliveTest 122
* @run main/othervm KeepAliveTest 123
* @run main/othervm KeepAliveTest 124
* @run main/othervm KeepAliveTest 125
* @run main/othervm KeepAliveTest 126
* @run main/othervm KeepAliveTest 127
* @run main/othervm KeepAliveTest 128
* @run main/othervm KeepAliveTest 129
* @run main/othervm KeepAliveTest 130
* @run main/othervm KeepAliveTest 131
* @run main/othervm KeepAliveTest 132
* @run main/othervm KeepAliveTest 133
* @run main/othervm KeepAliveTest 134
* @run main/othervm KeepAliveTest 135
* @run main/othervm KeepAliveTest 136
* @run main/othervm KeepAliveTest 137
* @run main/othervm KeepAliveTest 138
* @run main/othervm KeepAliveTest 139
* @run main/othervm KeepAliveTest 140
* @run main/othervm KeepAliveTest 141
* @run main/othervm KeepAliveTest 142
* @run main/othervm KeepAliveTest 143
* @run main/othervm KeepAliveTest 144
* @run main/othervm KeepAliveTest 145
* @run main/othervm KeepAliveTest 146
* @run main/othervm KeepAliveTest 147
* @run main/othervm KeepAliveTest 148
* @run main/othervm KeepAliveTest 149
* @run main/othervm KeepAliveTest 150
* @run main/othervm KeepAliveTest 151
* @run main/othervm KeepAliveTest 152
* @run main/othervm KeepAliveTest 153
* @run main/othervm KeepAliveTest 154
* @run main/othervm KeepAliveTest 155
* @run main/othervm KeepAliveTest 156
* @run main/othervm KeepAliveTest 157
* @run main/othervm KeepAliveTest 158
* @run main/othervm KeepAliveTest 159
*/
import java.nio.charset.StandardCharsets;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Proxy.Type;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.util.List;
import java.util.Map.Entry;
import java.util.concurrent.CountDownLatch;
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import sun.net.www.http.HttpClient;
import sun.net.www.http.KeepAliveCache;
import sun.net.www.protocol.http.HttpURLConnection;
import jdk.test.lib.net.URIBuilder;
public class KeepAliveTest {
private static final Logger logger = Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection");
private static final String NOT_CACHED = "NotCached";
private static final String CLIENT_SEPARATOR = ";";
private static final String NEW_LINE = "\r\n";
private volatile int SERVER_PORT = 0;
/*
* isProxySet is shared variable between server thread and client thread(main) and it should be set and reset to false for each and
* every scenario.
* isProxySet variable should be set by server thread before proceeding to client thread(main).
*/
private volatile boolean isProxySet = false;
private static final String CONNECTION_KEEP_ALIVE_ONLY = "Connection: keep-alive";
private static final String PROXY_CONNECTION_KEEP_ALIVE_ONLY = "Proxy-Connection: keep-alive";
private static final String KEEP_ALIVE_TIMEOUT_NEG = "Keep-alive: timeout=-20";
private static final String KEEP_ALIVE_TIMEOUT_ZERO = "Keep-alive: timeout=0";
private static final String KEEP_ALIVE_TIMEOUT = "Keep-alive: timeout=20";
private static final String KEEP_ALIVE_PROXY_TIMEOUT = "Keep-alive: timeout=120";
private static final String CLIENT_HTTP_KEEP_ALIVE_TIME_SERVER_NEGATIVE = "http.keepAlive.time.server=-100";
private static final String CLIENT_HTTP_KEEP_ALIVE_TIME_PROXY_NEGATIVE = "http.keepAlive.time.proxy=-200";
private static final String CLIENT_HTTP_KEEP_ALIVE_TIME_SERVER_ZERO = "http.keepAlive.time.server=0";
private static final String CLIENT_HTTP_KEEP_ALIVE_TIME_PROXY_ZERO = "http.keepAlive.time.proxy=0";
private static final String CLIENT_HTTP_KEEP_ALIVE_TIME_SERVER_POSITIVE = "http.keepAlive.time.server=100";
private static final String CLIENT_HTTP_KEEP_ALIVE_TIME_PROXY_POSITIVE = "http.keepAlive.time.proxy=200";
private static final String CONNECTION_KEEP_ALIVE_WITH_TIMEOUT = CONNECTION_KEEP_ALIVE_ONLY + NEW_LINE
+ KEEP_ALIVE_TIMEOUT;
/*
* Following Constants represents Client Side Properties and is used as reference in below table as
* CLIENT_INPUT_CONSTANT_NAMES
*/
private static final String SERVER_100_NEGATIVE = CLIENT_HTTP_KEEP_ALIVE_TIME_SERVER_NEGATIVE;
private static final String PROXY_200_NEGATIVE = CLIENT_HTTP_KEEP_ALIVE_TIME_PROXY_NEGATIVE;
private static final String SERVER_ZERO = CLIENT_HTTP_KEEP_ALIVE_TIME_SERVER_ZERO;
private static final String PROXY_ZERO = CLIENT_HTTP_KEEP_ALIVE_TIME_PROXY_ZERO;
private static final String SERVER_100 = CLIENT_HTTP_KEEP_ALIVE_TIME_SERVER_POSITIVE;
private static final String PROXY_200 = CLIENT_HTTP_KEEP_ALIVE_TIME_PROXY_POSITIVE;
/*
* CONSTANTS A,B,C,D,E,NI,F,G,H,I represents ServerScenarios and is used as reference in below table
* as SERVER_RESPONSE_CONSTANT_NAME
*/
private static final String A = CONNECTION_KEEP_ALIVE_ONLY;
private static final String B = CONNECTION_KEEP_ALIVE_WITH_TIMEOUT;
private static final String C = PROXY_CONNECTION_KEEP_ALIVE_ONLY;
private static final String D = PROXY_CONNECTION_KEEP_ALIVE_ONLY + NEW_LINE + CONNECTION_KEEP_ALIVE_ONLY;
private static final String E = C + NEW_LINE + KEEP_ALIVE_PROXY_TIMEOUT;
private static final String NI = "NO_INPUT";
private static final String F = A + NEW_LINE + KEEP_ALIVE_TIMEOUT_NEG;
private static final String G = A + NEW_LINE + KEEP_ALIVE_TIMEOUT_ZERO;
private static final String H = C + NEW_LINE + KEEP_ALIVE_TIMEOUT_NEG;
private static final String I = C + NEW_LINE + KEEP_ALIVE_TIMEOUT_ZERO;
/*
* There are 160 scenarios run by this program.
* For every scenario there is mapping between serverScenarios[int],clientScenarios[int] and expectedOutput[int]
*
* serverScenarios[0] clientScenarios[0] expectedOutput[0]
* serverScenarios[1] clientScenarios[1] expectedOutput[1]
* serverScenarios[2] clientScenarios[2] expectedOutput[2]
*
* ...
*
* serverScenarios[159] cientScenarios[159] expectedOutput[159]
*
* whereas serverScenarios[int] is retrieved using getServerScenario(int)
* whereas clientScenarios[int] is retrieved using clientScenario[getClientScenarioNumber[int]]
* and
* expectedOutput[int] is retrieved using expectedOuput[int] directly.
*
*/
/* Here is the complete table of server_response, client system properties input and expected cached timeout at client side */
/* ScNo | SERVER RESPONSE (SERVER_RESPONSE_CONSTANT_NAME)| CLIENT SYSTEM PROPERTIES INPUT (CLIENT_INPUT_CONSTANT_NAMES) | EXPECTED CACHED TIMEOUT AT CLIENT SIDE
*****************************************************************************************************************************************
* 0 | Connection: keep-alive (A) | No Input Provided (NI) | Default Timeout set to 5
*---------------------------------------------------------------------------------------------------------------------------
* 1 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=100 (SERVER_100)| Client Timeout set to 100
*--------------------------------------------------------------------------------------------------------------------------
* 2 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.proxy=200 (PROXY_200) | Default Timeout set to 5
*---------------------------------------------------------------------------------------------------------------------------
* 3 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 100
* | | (SERVER_100 && PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 4 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=-100 | Default Timeout set to 5
* | | (SERVER_100_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 5 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.proxy=-200 | Default Timeout set to 5
* | | (PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 6 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Default Timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 7 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=0 | Connection Closed Immediately
* | | (SERVER_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 8 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.proxy=0 | Default Timeout set to 5
* | | (PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 9 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Connection Closed Immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 10 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Connection Closed Immediately
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 11 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Default Timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 12 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 100
* | | (SERVER_100 && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 13 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Connection Closed Immediately
* | | (SERVER_ZERO && PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 14 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 100
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 15 | Connection: keep-alive (A) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Default Timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 16 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | No Input Provided (NI) | Timeout set to 20
*------------------------------------------------------------------------------------------------------------------------
* 17 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=100 | Timeout set to 20
* | | (SERVER_100) |
*---------------------------------------------------------------------------------------------------------------------------
* 18 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 20
* | | (PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 19 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 20
* | | (SERVER_100 && PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 20 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=-100 | Timeout set to 20
* | | (SERVER_100_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 21 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 20
* | | (PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 22 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 20
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE)|
*---------------------------------------------------------------------------------------------------------------------------
* 23 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=0 | Timeout set to 20
* | | (SERVER_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 24 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 20
* | | (PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 25 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 20
* | | (SERVER_ZERO && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 26 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 20
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 27 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 20
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 28 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 20
* | | (SERVER_100 && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 29 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 20
* | | (SERVER_ZERO && PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 30 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 20
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 31 |Connection: keep-alive\r\nKeep-alive: timeout=20 (B) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=200 | Timeout set to 20
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 32 |Proxy-Connection: keep-alive (C) | No Input Provided (NI) | Default timeout set to 60
*---------------------------------------------------------------------------------------------------------------------------
* 33 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=100 | Default timeout set to 60
* | | (SERVER_100) |
*---------------------------------------------------------------------------------------------------------------------------
* 34 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------
* 35 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_100 && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------
* 36 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=-100 | Default timeout set to 60
* | | (SERVER_100_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 37 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.proxy=-200 | Default timeout set to 60
* | | (PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 38 |Proxy-Connection: keep-alive (C) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | Default timeout set to 60
* | |(SERVER_100_NEGATIVE && PROXY_200_NEGATIVE)|
*---------------------------------------------------------------------------------------------------------------------------
* 39 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=0 | Default timeout set to 60
* | | (SERVER_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 40 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 41 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 42 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Default timeout set to 60
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------------
* 43 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------------
* 44 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100 && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 45 |Proxy-Connection: keep-alive (C) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_ZERO && PROXY_200) |
*---------------------------------------------------------------------------------------------------------------------------
* 46 |Proxy-Connection: keep-alive (C) |-Dhttp.keepAlive.time.server=100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | Default timeout set to 60
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------
* 47 |Proxy-Connection: keep-alive (C) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------
* 48 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | No Input Provided (NI) | Default timeout set to 60
*-----------------------------------------------------------------------------------------------------------------------------
* 49 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=100 | Default timeout set to 60
* | | (SERVER_100) |
*---------------------------------------------------------------------------------------------------------------------------
* 50 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (PROXY_200) |
*------------------------------------------------------------------------------------------------------------------------------
* 51 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_100 && PROXY_200) |
*------------------------------------------------------------------------------------------------------------------------------
* 52 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=-100 | Default timeout set to 60
* | | (SERVER_100_NEGATIVE) |
*------------------------------------------------------------------------------------------------------------------------------
* 53 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.proxy=-200 | Default timeout set to 60
* | | (PROXY_200_NEGATIVE) |
*------------------------------------------------------------------------------------------------------------------------------
* 54 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=-100&& |
* | | -Dhttp.keepAlive.time.proxy=-200 | Default timeout set to 60
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE |
*-------------------------------------------------------------------------------------------------------------------------------
* 55 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=0 | Default timeout set to 60
* | | (SERVER_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 56 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 57 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 58 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Default timeout set to 60
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*--------------------------------------------------------------------------------------------------------------------------------
* 59 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 60 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100 && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 61 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_ZERO && PROXY_200) |
*------------------------------------------------------------------------------------------------------------------------------
* 62 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | default timeout set to 60
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*------------------------------------------------------------------------------------------------------------------------------
* 63 |Connection:keep-alive\r\nProxy-connection:keep-alive (D) | -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------
* 64 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| No Input Provided (NI) | Timeout set to 120
*-------------------------------------------------------------------------------------------------------------------------------
* 65 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=100 | Timeout set to 120
* | | (SERVER_100) |
*-------------------------------------------------------------------------------------------------------------------------------
* 66 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.proxy=200 | Timeout set to 120
* | | (PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------
* 67 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 120
* | | (SERVER_100 && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------
* 68 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=-100 | Timeout set to 120
* | | (SERVER_100_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------
* 69 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 120
* | | (PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------
* 70 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 120
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE)|
*-------------------------------------------------------------------------------------------------------------------------------
* 71 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=0 | Timeout set to 120
* | | (SERVER_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------
* 72 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.proxy=0 | Timeout set to 120
* | | (PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------
* 73 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 120
* | | (SERVER_ZERO && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------
* 74 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 120
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------
* 75 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 120
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------
* 76 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 120
* | | (SERVER_100 && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------
* 77 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 120
* | | (SERVER_ZERO && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------
* 78 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | Timeout set to 120
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------
* 79 |Proxy-connection:keep-alive\r\nKeep-alive:timeout=120 (E)| -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 120
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*-----------------------------------------------------------------------------------------------------------------------------
* 80 |No Input (NI) | No Input Provided (NI) | default timeout set to 5
*-----------------------------------------------------------------------------------------------------------------------------
* 81 |No Input (NI) | -Dhttp.keepAlive.time.server=100 | Timeout set to 100
* | | (SERVER_100) |
*-----------------------------------------------------------------------------------------------------------------------------
* 82 |No Input (NI) | -Dhttp.keepAlive.time.proxy=200 | default timeout set to 5
* | | (PROXY_200) |
*-----------------------------------------------------------------------------------------------------------------------------
* 83 |No Input (NI) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | client timeot set to 100
* | | (SERVER_100 && PROXY_200) |
*------------------------------------------------------------------------------------------------------------------------------
* 84 |No Input (NI) | -Dhttp.keepAlive.time.server=-100 | default timeout set to 5
* | | (SERVER_100_NEGATIVE) |
*------------------------------------------------------------------------------------------------------------------------------
* 85 |No Input (NI) | -Dhttp.keepAlive.time.proxy=-200 | default timeout set to 5
* | | (PROXY_200_NEGATIVE) |
*----------------------------------------------------------------------------------------------------------------------------
* 86 |No Input (NI) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | default timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE)|
*------------------------------------------------------------------------------------------------------------------------------
* 87 |No Input (NI) | -Dhttp.keepAlive.time.server=0 | close connection immediately
* | | (SERVER_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------------
* 88 |No Input (NI) | -Dhttp.keepAlive.time.proxy=0 | default timeout set to 5
* | | (PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------------
* 89 |No Input (NI) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------------
* 90 |No Input (NI) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*--------------------------------------------------------------------------------------------------------------------------------
* 91 |No Input (NI) | -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=0 | default timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 92 |No Input (NI) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | Timeout set to 100
* | | (SERVER_100 && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------
* 93 |No Input (NI) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_ZERO && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------
* 94 |No Input (NI) |-Dhttp.keepAlive.time.server=100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | Timeout set to 100
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*--------------------------------------------------------------------------------------------------------------------------------
* 95 |No Input (NI) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=200 | default timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------
* 96 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) | No Input Provided (NI) | default timeout set to 5
*--------------------------------------------------------------------------------------------------------------------------------
* 97 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=100 | Timeout set to 100
* | | (SERVER_100) |
*--------------------------------------------------------------------------------------------------------------------------------
* 98 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.proxy=200 | default timeout set to 5
* | | (PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 99 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=100 && |
* | |-Dhttp.keepAlive.time.proxy=200 | Timeout set to 100
* | |(SERVER_100 && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 100 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=-100 | default timeout set to 5
* | |(SERVER_100_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 101 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.proxy=-200 | default timeout set to 5
* | |(PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 102 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | default timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE)|
*-------------------------------------------------------------------------------------------------------------------------------------
* 103 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=0 | close connection immediately
* | | (SERVER_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 104 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.proxy=0 | default timeout set to 5
* | | (PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 105 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 106 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=0 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO_NEGATIVE)|
*-------------------------------------------------------------------------------------------------------------------------------------
* 107 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=0 | default timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 108 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=100 && |
* | |-Dhttp.keepAlive.time.proxy=0 | Timeout set to 100
* | | (SERVER_100 && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 109 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=0 && |
* | |-Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_ZERO && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 110 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | Timeout set to 100
* | |(SERVER_100 && PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 111 |Connection: keep-alive\r\nKeep-alive: timeout=-20 (F) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=200 | default timeout set to 5
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 112 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | No Input Provided (NI) | close connection immediately
*-------------------------------------------------------------------------------------------------------------------------------------
* 113 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=100 | close connection immediately
* | | (SERVER_100) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 114 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 115 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_100 && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 116 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=-100 | close connection immediately
* | | (SERVER_100_NEGATIVE) |
*------------------------------------------------------------------------------------------------------------------------------------
* 117 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 118 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) |-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 119 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=0 | close connection immediately
* | | (SERVER_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 120 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (PROXY_ZERO) |
*------------------------------------------------------------------------------------------------------------------------------------
* 121 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 122 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 123 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 124 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100 && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 125 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_ZERO && PROXY_200) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 126 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 127 |Connection: keep-alive\r\nKeep-alive: timeout=0 (G) | -Dhttp.keepAlive.time.server=-100 &&|
* | | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 128 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| No Input Provided (NI) | default timeout set to 60
---------------------------------------------------------------------------------------------------------------------------------------
* 129 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=100 | default timeout set to 60
* | | (SERVER_100) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 130 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 131 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_100 && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 132 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=-100 | default timeout set to 60
* | | (SERVER_100_NEGATIVE) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 133 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.proxy=-200 | default timeout set to 60
* | | (PROXY_200_NEGATIVE) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 134 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)|-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | default timeout set to 60
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE)|
*---------------------------------------------------------------------------------------------------------------------------------
* 135 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=0 | default timeout set to 60
* | | (SERVER_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 136 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (PROXY_ZERO) |
*----------------------------------------------------------------------------------------------------------------------------------
* 137 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 138 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | default timeout set to 60
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*---------------------------------------------------------------------------------------------------------------------------------------
* 139 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 140 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100 && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 141 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)| -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | Timeout set to 20
* | | (SERVER_ZERO && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 142 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)|-Dhttp.keepAlive.time.server=100 && |
* | |-Dhttp.keepAlive.time.proxy=-200 | default timeout set to 60
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 143 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=-20 (H)|-Dhttp.keepAlive.time.server=-100 && |
* | |-Dhttp.keepAlive.time.proxy=200 | Timeout set to 200
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 144 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | No Input Provided (NI) | close connection immediately
*--------------------------------------------------------------------------------------------------------------------------------------
* 145 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=100 | close connection immediately
* | | (SERVER_100) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 146 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 147 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_100 && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 148 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=-100 | close connection immediately
* | | (SERVER_100_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 149 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (PROXY_200_NEGATIVE) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 150 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_200_NEGATIVE) |
*------------------------------------------------------------------------------------------------------------------------------------
* 151 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=0 | close connection immediately
* | | (SERVER_ZERO) |
*-----------------------------------------------------------------------------------------------------------------------------------
* 152 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (PROXY_ZERO) |
*---------------------------------------------------------------------------------------------------------------------------------
* 153 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_ZERO && PROXY_ZERO) |
*------------------------------------------------------------------------------------------------------------------------------------
* 154 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_ZERO && PROXY_200_NEGATIVE) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 155 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_ZERO) |
*-------------------------------------------------------------------------------------------------------------------------------------
* 156 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=0 | close connection immediately
* | | (SERVER_100 && PROXY_ZERO) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 157 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=0 && |
* | | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_ZERO && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 158 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=100 && |
* | | -Dhttp.keepAlive.time.proxy=-200 | close connection immediately
* | | (SERVER_100 && PROXY_200_NEGATIVE) |
*--------------------------------------------------------------------------------------------------------------------------------------
* 159 |Proxy-Connection:keep-alive\r\nKeep-alive:timeout=0 (I) | -Dhttp.keepAlive.time.server=-100 && |
* | | -Dhttp.keepAlive.time.proxy=200 | close connection immediately
* | | (SERVER_100_NEGATIVE && PROXY_200) |
*--------------------------------------------------------------------------------------------------------------------------------------
*/
/* private static final String[] serverScenarios = {
A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
B, B, B, B, B, B, B, B, B, B,B, B, B, B, B, B,
C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C,
D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D,
E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E,
NI, NI, NI, NI, NI, NI, NI, NI, NI, NI, NI, NI, NI, NI, NI, NI,
F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H,
I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I
}; */
/*
* following are client scenarios which are repeated.
*/
private static final String[] a = {
NI, SERVER_100, PROXY_200, SERVER_100 + CLIENT_SEPARATOR + PROXY_200, SERVER_100_NEGATIVE,
PROXY_200_NEGATIVE, SERVER_100_NEGATIVE + CLIENT_SEPARATOR + PROXY_200_NEGATIVE,
SERVER_ZERO, PROXY_ZERO, SERVER_ZERO + CLIENT_SEPARATOR + PROXY_ZERO,
SERVER_ZERO + CLIENT_SEPARATOR + PROXY_200_NEGATIVE, SERVER_100_NEGATIVE + CLIENT_SEPARATOR + PROXY_ZERO,
SERVER_100 + CLIENT_SEPARATOR + PROXY_ZERO, SERVER_ZERO + CLIENT_SEPARATOR + PROXY_200,
SERVER_100 + CLIENT_SEPARATOR + PROXY_200_NEGATIVE, SERVER_100_NEGATIVE + CLIENT_SEPARATOR + PROXY_200
};
/* private String[] clientScenarios = {
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15],
}; */
private static final String[] clientScenarios = {
a[0] , a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]
};
private static final int[] expectedValues = {
5, 100, 5, 100, 5, 5, 5, 0, 5, 0, 0, 5, 100, 0, 100, 5,
20, 20 , 20, 20, 20, 20, 20, 20, 20, 20 , 20, 20, 20, 20, 20, 20,
60, 60, 200, 200, 60, 60, 60, 60, 0, 0, 60, 0, 0, 200, 60, 200,
60, 60, 200, 200, 60, 60, 60, 60, 0, 0, 60, 0, 0, 200, 60, 200,
120, 120, 120, 120,120,120,120,120,120, 120, 120, 120, 120, 120, 120, 120,
5, 100, 5, 100, 5, 5, 5, 0, 5, 0, 0, 5, 100, 0, 100, 5,
5, 100, 5, 100, 5, 5, 5, 0, 5, 0, 0, 5, 100, 0, 100, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
60, 60, 200, 200, 60, 60, 60, 60, 0, 0, 60, 0, 0, 200, 60, 200,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
private final CountDownLatch countDownLatch = new CountDownLatch(1);
private final CountDownLatch serverCountDownLatch = new CountDownLatch(1);
/*
* setting of client properties -Dhttp.keepAlive.time.server and -Dhttp.keepAlive.time.proxy is handled through this method.
* There are 16 client scenarios in total starting with scenarioNumber 0(zero) and ending with 15.
* Server Scenarios are grouped into batch of 16 scenarios.
* There are 10 batches in total and each batch contains 16 scenarios so 10 * 16 = 160 scenarios in total.
* 16 Client Scenarios are used repeatedly for every server scenario batch.
* for serverscenario[0],serverscenario[16],serverscenario[32] ... serverscenario[144] is mapped to clientscenario[0]
* for serverscenario[1],serverscenario[17],serverscenario[33] ... serverscenario[145] is mapped to clientscenario[1]
* for serverscenario[2],serverscenario[18],serverscenario[34] ... serverscenario[146] is mapped to clientscenario[2]
* ...
* for serverscenario[15],serverscenario[31],serverscenario[47] ... serverscenario[159] is mapped to clientscenario[15]
*/
private int getClientScenarioNumber(int scenarioNumber) {
return scenarioNumber % 16 ;
}
/*
* Returns SERVER_RESPONSE as String based on integer inputParameter scenarioNumber.
* Server Scenarios are grouped into batch of 16 scenarios starting with scenarioNumber 0 (zero)
* so there are 10 batches in total and each batch contains 16 scenarios so 10 * 16 = 160 scenarios in total.
* For each batch of 16 scenarios, there will be common SERVER_RESPONSE for all 16 scenarios in batch.
* for scenario numbers from 0 to 15 server response is: Connection:keep-alive
* for scenario numbers from 16 to 31 server response is: SERVER_RESPONSE=Connection: keep-alive\r\nKeep-alive: timeout=20
* for scenario numbers from 32 to 47 server response is: SERVER_RESPONSE=Proxy-Connection: keep-alive
* for scenario numbers from 48 to 63 server response is: SERVER_RESPONSE=Connection:keep-alive\r\nProxy-connection:keep-alive
* for scenario numbers from 64 to 79 server response is: SERVER_RESPONSE=Proxy-connection:keep-alive\r\nKeep-alive:timeout=120
* for scenario numbers from 80 to 95 server response is: SERVER_RESPONSE=No Input
* for scenario numbers from 96 to 111 server response is: SERVER_RESPONSE=Connection: keep-alive\r\nKeep-alive: timeout=-20
* for scenario numbers from 112 to 127 server resonse is: Connection: keep-alive\r\nKeep-alive: timeout=0
* for scenario numbers from 128 to 143 server response is: Proxy-connection:keep-alive\r\nKeep-alive:timeout=-20
* for scenario numbers from 144 to 159 server response is: Proxy-connection:keep-alive\r\nKeep-alive:timeout=0
*/
private String getServerScenario(int scenarioNumber) {
/*
* ServerResponse for scenarios from 0 to 15
* SERVER_RESPONSE:Connection:keep-alive
*/
if(scenarioNumber >= 0 && scenarioNumber <= 15) {
return A;
}
/*
* ServerResponse for scenarios from 16 to 31
* SERVER_RESPONSE=Connection: keep-alive\r\nKeep-alive: timeout=20
*/
else if (scenarioNumber >= 16 && scenarioNumber <= 31){
return B;
}
/*
* ServerResponse for scenarios from 32 to 47
* SERVER_RESPONSE=Proxy-Connection: keep-alive
*/
else if (scenarioNumber >= 32 && scenarioNumber <= 47){
return C;
}
/*
* ServerResponse for scenarios from 48 to 63
* SERVER_RESPONSE=Connection:keep-alive\r\nProxy-connection:keep-alive
*/
else if (scenarioNumber >= 48 && scenarioNumber <= 63){
return D;
/*
* ServerResponse for scenarios from 64 to 79
* SERVER_RESPONSE=Proxy-connection:keep-alive\r\nKeep-alive:timeout=120
*/
} else if (scenarioNumber >= 64 && scenarioNumber <= 79){
return E;
}
/*
* ServerResponse for scenarios from 80 to 95
* SERVER_RESPONSE=No Input
*/
else if (scenarioNumber >= 80 && scenarioNumber <= 95){
return NI;
}
/*
* ServerResponse for scenarios from 96 to 111
* SERVER_RESPONSE=Connection: keep-alive\r\nKeep-alive: timeout=-20
*/
else if (scenarioNumber >= 96 && scenarioNumber <= 111){
return F;
}
/*
* ServerResponse for scenarios from 112 to 127
* SERVER_RESPONSE=Connection: keep-alive\r\nKeep-alive: timeout=0
*/
else if (scenarioNumber >= 112 && scenarioNumber <= 127){
return G;
}
/*
* ServerResponse for scenarios from 128 to 143
* SERVER_RESPONSE=Proxy-connection:keep-alive\r\nKeep-alive:timeout=-20
*/
else if (scenarioNumber >= 128 && scenarioNumber <= 143){
return H;
}
/*
* ServerResponse for scenarios from 144 to 159
* SERVER_RESPONSE=Proxy-connection:keep-alive\r\nKeep-alive:timeout=0
*/
else if (scenarioNumber >= 144 && scenarioNumber <= 159){
return I;
}
/*Invalid Case*/
return null;
}
private void startScenario(int scenarioNumber) throws Exception {
System.out.println("serverScenarios[" + scenarioNumber + "]=" + getServerScenario(scenarioNumber));
System.out.println("clientScenarios[" + scenarioNumber + "]=" + clientScenarios[getClientScenarioNumber(scenarioNumber)]);
if(expectedValues[scenarioNumber] == 0) {
System.out.println("ExpectedOutput=" + NOT_CACHED);
} else {
System.out.println("ExpectedOutput=" + expectedValues[scenarioNumber]);
}
System.out.println();
startServer(scenarioNumber);
runClient(scenarioNumber);
}
private void startServer(int scenarioNumber) {
Thread server = new Thread(new Runnable() {
@Override
public void run() {
try {
executeServer(scenarioNumber);
} catch (IOException e) {
e.printStackTrace();
}
}
}, "SERVER");
server.start();
}
private void readAll(Socket s) throws IOException {
byte[] buf = new byte[128];
int c;
String request = "";
InputStream is = s.getInputStream();
while ((c = is.read(buf)) > 0) {
request += new String(buf, 0, c, StandardCharsets.US_ASCII);
if (request.contains("\r\n\r\n")) {
return;
}
}
if (c == -1) {
throw new IOException("Socket closed");
}
}
private void executeServer(int scenarioNumber) throws IOException {
String serverScenarioContent = null;
if (!getServerScenario(scenarioNumber).equalsIgnoreCase(NI)) {
serverScenarioContent = getServerScenario(scenarioNumber) + NEW_LINE;
/*
* isProxySet should be set before Server is moved to Listen State.
*/
if (serverScenarioContent.contains("Proxy")) {
isProxySet = true;
} else {
isProxySet = false;
}
}
ServerSocket serverSocket = null;
Socket socket = null;
OutputStreamWriter out = null;
InetAddress loopback = InetAddress.getLoopbackAddress();
try {
serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress(loopback, 0));
SERVER_PORT = serverSocket.getLocalPort();
//serverReady = true;
this.serverCountDownLatch.countDown();
System.out
.println("SERVER_PORT= " + SERVER_PORT +" isProxySet=" + isProxySet);
/*
* Server will be waiting for clients to connect.
*/
socket = serverSocket.accept();
readAll(socket);
out = new OutputStreamWriter(socket.getOutputStream());
String BODY = "SERVER REPLY: Hello world";
String CLEN = "Content-Length: " + BODY.length() + NEW_LINE;
/* send the header */
out.write("HTTP/1.1 200 OK\r\n");
out.write("Content-Type: text/plain; charset=iso-8859-1\r\n");
/*
* append each scenario content from array.
*/
if(serverScenarioContent != null) {
out.write(serverScenarioContent);
}
out.write(CLEN);
out.write(NEW_LINE);
out.write(BODY);
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.flush();
out.close();
}
if (socket != null) {
socket.close();
}
if (serverSocket != null) {
serverSocket.close();
}
}
}
private void runClient(int scenarioNumber) throws Exception {
try {
connectToServerURL(scenarioNumber);
} finally {
System.out.println("client count down latch:" + scenarioNumber);
this.countDownLatch.countDown();
System.out.println();
System.out.println();
}
}
private void connectToServerURL(int scenarioNumber) throws Exception {
// System.setProperty("java.net.useSystemProxies", "false");
// System.setProperty("http.nonProxyHosts", "");
// System.setProperty("http.proxyHost", "localhost");
// System.setProperty("http.proxyPort", String.valueOf(SERVER_PORT));
System.out.println("Following are Existing System Properties if set any");
System.out.println("http.keepAlive.time.server:" + System.getProperty("http.keepAlive.time.server"));
System.out.println("http.keepAlive.time.proxy:" + System.getProperty("http.keepAlive.time.proxy"));
System.setProperty("java.net.useSystemProxies", "false");
System.out.println("http.proxyPort:"+System.getProperty("http.proxyPort"));
System.out.println("http.proxyHost:"+System.getProperty("http.proxyHost"));
System.clearProperty("http.keepAlive.time.server");
System.clearProperty("http.keepAlive.time.proxy");
// fetch clientScenearios for each scenarioNumber from array and set it to
// System property.
if (!clientScenarios[getClientScenarioNumber(scenarioNumber)].equalsIgnoreCase(NI)) {
System.out.println("Client Input Parsing");
for (String clientScenarioString : clientScenarios[getClientScenarioNumber(scenarioNumber)].split(CLIENT_SEPARATOR)) {
System.out.println(clientScenarioString);
String key = clientScenarioString.split("=")[0];
String value = clientScenarioString.split("=")[1];
System.setProperty(key, value);
}
}
// wait until ServerSocket moves to listening state.
this.serverCountDownLatch.await();
System.out.println("client started");
URL url = URIBuilder.newBuilder().scheme("http").loopback().port(SERVER_PORT).toURL();
System.out.println("connecting from client to SERVER URL:" + url);
HttpURLConnection httpUrlConnection = null;
/*
* isProxySet is set to true when Expected Server Response contains Proxy-Connection header.
*/
if (isProxySet) {
httpUrlConnection = (sun.net.www.protocol.http.HttpURLConnection) url
.openConnection(new Proxy(Type.HTTP, new InetSocketAddress("localhost", SERVER_PORT)));
} else {
httpUrlConnection = (sun.net.www.protocol.http.HttpURLConnection) url.openConnection();
}
InputStreamReader inputStreamReader = new InputStreamReader(httpUrlConnection.getInputStream());
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(inputStreamReader);
while (true) {
String eachLine = bufferedReader.readLine();
if (eachLine == null) {
break;
}
System.out.println(eachLine);
}
} finally {
if (bufferedReader != null) {
bufferedReader.close();
}
}
// System.out.println("ResponseCode:" + httpUrlConnection.getResponseCode());
// System.out.println("ResponseMessage:" + httpUrlConnection.getResponseMessage());
// System.out.println("Content:" + httpUrlConnection.getContent());
// Thread.sleep(2000);
for (Entry<String, List<String>> header : httpUrlConnection.getHeaderFields().entrySet()) {
System.out.println(header.getKey() + "=" + header.getValue());
}
fetchInfo(scenarioNumber, httpUrlConnection);
}
private void fetchInfo(int scenarioNumber, sun.net.www.protocol.http.HttpURLConnection httpUrlConnection)
throws Exception {
Field field = Class.forName("sun.net.www.protocol.http.HttpURLConnection").getDeclaredField("http");
field.setAccessible(true);
HttpClient httpClient = (HttpClient) field.get(httpUrlConnection);
// System.out.println("httpclient=" + httpClient);
Field keepAliveField = Class.forName("sun.net.www.http.HttpClient").getDeclaredField("kac");
keepAliveField.setAccessible(true);
KeepAliveCache keepAliveCache = (KeepAliveCache) keepAliveField.get(httpClient);
System.out.println("keepAliveCache" + keepAliveCache);
System.out.println("SERVER URL:" + httpUrlConnection.getURL());
/*
* create KeepAliveKey(URL,Object) object and compare created KeepAliveKey and
* existing using equals() method: KeepAliveKey.equals()
*/
Class keepAliveKeyClass = Class.forName("sun.net.www.http.KeepAliveKey");
// System.out.println("keepAliveKeyClass=" + keepAliveKeyClass);
Constructor keepAliveKeyClassconstructor = keepAliveKeyClass.getDeclaredConstructors()[0];
keepAliveKeyClassconstructor.setAccessible(true);
Object expectedKeepAliveKey = keepAliveKeyClassconstructor.newInstance(httpUrlConnection.getURL(), null);
System.out.println("ExpectedKeepAliveKey=" + expectedKeepAliveKey);
Object clientVectorObjectInMap = keepAliveCache.get(expectedKeepAliveKey);
System.out.println("ClientVector=" + clientVectorObjectInMap);
HttpClient httpClientCached = keepAliveCache.get(httpUrlConnection.getURL(), null);
System.out.println("HttpClient in Cache:" + httpClientCached);
if(httpClientCached != null) {
System.out.println("KeepingAlive:" + httpClientCached.isKeepingAlive());
System.out.println("UsingProxy:" + httpClientCached.getUsingProxy());
System.out.println("ProxiedHost:" + httpClientCached.getProxyHostUsed());
System.out.println("ProxiedPort:" + httpClientCached.getProxyPortUsed());
System.out.println("ProxyPortUsingSystemProperty:" + System.getProperty("http.proxyPort"));
System.out.println("ProxyHostUsingSystemProperty:" + System.getProperty("http.proxyHost"));
System.out.println("http.keepAlive.time.server=" + System.getProperty("http.keepAlive.time.server"));
System.out.println("http.keepAlive.time.proxy=" + System.getProperty("http.keepAlive.time.proxy"));
Class clientVectorClass = Class.forName("sun.net.www.http.ClientVector");
// System.out.println("clientVectorClass=" + clientVectorClass);
Field napField = clientVectorClass.getDeclaredField("nap");
napField.setAccessible(true);
int napValue = (int) napField.get(clientVectorObjectInMap);
int actualValue = napValue / 1000;
// System.out.println("nap=" + napValue / 1000);
System.out.printf("ExpectedOutput:%d ActualOutput:%d ", expectedValues[scenarioNumber], actualValue);
System.out.println();
if (expectedValues[scenarioNumber] != actualValue) {
throw new RuntimeException(
"ExpectedOutput:" + expectedValues[scenarioNumber] + " ActualOutput: " + actualValue);
}
} else {
//executed when value is not cached.
String expected = expectedValues[scenarioNumber] == 0 ? NOT_CACHED
: String.valueOf(expectedValues[scenarioNumber]);
System.out.println("ExpectedOutput:" + expected + " ActualOutput:" + NOT_CACHED);
if (!expected.equalsIgnoreCase(NOT_CACHED)) {
throw new RuntimeException("ExpectedOutput:" + expected + " ActualOutput:" + NOT_CACHED);
}
}
}
public static void main(String[] args) throws Exception {
if (args.length != 1) {
throw new IllegalArgumentException("Usage:java KeepAliveTest.java <scenarioNumber>");
}
logger.setLevel(Level.FINEST);
ConsoleHandler h = new ConsoleHandler();
h.setLevel(Level.FINEST);
logger.addHandler(h);
KeepAliveTest keepAliveTest = new KeepAliveTest();
if (args.length != 0) {
keepAliveTest.startScenario(Integer.valueOf(args[0]));
}
// make main thread wait until server and client is completed.
keepAliveTest.countDownLatch.await();
}
}