Skip to content

Commit cc36b9b

Browse files
author
Derrick Isaacson
committed
accept configurable timeouts in HTTP client factory
1 parent 00801a0 commit cc36b9b

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

Diff for: java/client/src/org/openqa/selenium/remote/internal/HttpClientFactory.java

+25-20
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,17 @@
5050
public class HttpClientFactory {
5151

5252
private final CloseableHttpClient httpClient;
53-
private final int TIMEOUT_THREE_HOURS = (int) SECONDS.toMillis(60 * 60 * 3);
53+
private static final int TIMEOUT_THREE_HOURS = (int) SECONDS.toMillis(60 * 60 * 3);
54+
private static final int TIMEOUT_TWO_MINUTES = (int) SECONDS.toMillis(60 * 2);
5455
private final HttpClientConnectionManager gridClientConnectionManager =
5556
getClientConnectionManager();
5657

5758
public HttpClientFactory() {
58-
httpClient = createHttpClient(null);
59+
this(TIMEOUT_TWO_MINUTES, TIMEOUT_THREE_HOURS);
60+
}
61+
62+
public HttpClientFactory(int connectionTimeout, int socketTimeout) {
63+
httpClient = createHttpClient(null, connectionTimeout, socketTimeout);
5964
}
6065

6166
private static HttpClientConnectionManager getClientConnectionManager() {
@@ -77,12 +82,18 @@ public HttpClient getHttpClient() {
7782
}
7883

7984
public CloseableHttpClient createHttpClient(Credentials credentials) {
85+
return createHttpClient(credentials, 0, 0);
86+
}
87+
88+
public CloseableHttpClient createHttpClient(Credentials credentials, int connectionTimeout, int socketTimeout) {
89+
SocketConfig socketConfig = createSocketConfig(socketTimeout);
90+
RequestConfig requestConfig = createRequestConfig(connectionTimeout, socketTimeout);
91+
8092
HttpClientBuilder builder = HttpClientBuilder.create()
8193
.setConnectionManager(getClientConnectionManager())
82-
.setDefaultSocketConfig(createSocketConfig())
83-
.setDefaultSocketConfig(createSocketConfig())
84-
.setRoutePlanner(createRoutePlanner())
85-
.setDefaultRequestConfig(createRequestConfig());
94+
.setDefaultSocketConfig(createSocketConfig(socketTimeout))
95+
.setDefaultRequestConfig(createRequestConfig(connectionTimeout, socketTimeout))
96+
.setRoutePlanner(createRoutePlanner());
8697

8798
if (credentials != null) {
8899
CredentialsProvider provider = new BasicCredentialsProvider();
@@ -93,17 +104,11 @@ public CloseableHttpClient createHttpClient(Credentials credentials) {
93104
return builder.build();
94105
}
95106

96-
public HttpClient getGridHttpClient(int connection_timeout, int socket_timeout) {
107+
public HttpClient getGridHttpClient(int connectionTimeout, int socketTimeout) {
97108
gridClientConnectionManager.closeIdleConnections(100, MILLISECONDS);
98109

99-
SocketConfig socketConfig = SocketConfig.copy(createSocketConfig())
100-
.setSoTimeout(socket_timeout > 0 ? socket_timeout : TIMEOUT_THREE_HOURS)
101-
.build();
102-
103-
RequestConfig requestConfig = RequestConfig.copy(createRequestConfig())
104-
.setConnectTimeout(connection_timeout > 0 ? connection_timeout : 120 * 1000)
105-
.setSocketTimeout(socket_timeout > 0 ? socket_timeout : TIMEOUT_THREE_HOURS)
106-
.build();
110+
SocketConfig socketConfig = createSocketConfig(socketTimeout);
111+
RequestConfig requestConfig = createRequestConfig(connectionTimeout, socketTimeout);
107112

108113
return HttpClientBuilder.create()
109114
.setConnectionManager(gridClientConnectionManager)
@@ -114,18 +119,18 @@ public HttpClient getGridHttpClient(int connection_timeout, int socket_timeout)
114119
.build();
115120
}
116121

117-
private SocketConfig createSocketConfig() {
122+
private SocketConfig createSocketConfig(int socketTimeout) {
118123
return SocketConfig.custom()
119124
.setSoReuseAddress(true)
120-
.setSoTimeout(TIMEOUT_THREE_HOURS)
125+
.setSoTimeout(socketTimeout > 0 ? socketTimeout : TIMEOUT_THREE_HOURS)
121126
.build();
122127
}
123128

124-
private RequestConfig createRequestConfig() {
129+
private RequestConfig createRequestConfig(int connectionTimeout, int socketTimeout) {
125130
return RequestConfig.custom()
126131
.setStaleConnectionCheckEnabled(true)
127-
.setConnectTimeout(120 * 1000)
128-
.setSocketTimeout(TIMEOUT_THREE_HOURS)
132+
.setConnectTimeout(connectionTimeout > 0 ? connectionTimeout : TIMEOUT_TWO_MINUTES)
133+
.setSocketTimeout(socketTimeout > 0 ? socketTimeout : TIMEOUT_THREE_HOURS)
129134
.build();
130135
}
131136

0 commit comments

Comments
 (0)