10
10
import java .io .InterruptedIOException ;
11
11
import java .io .UncheckedIOException ;
12
12
import java .net .URI ;
13
+ import java .net .http .HttpConnectTimeoutException ;
13
14
import java .nio .ByteBuffer ;
15
+ import java .time .Duration ;
14
16
import java .util .concurrent .ExecutionException ;
15
17
import java .util .concurrent .atomic .AtomicReference ;
16
18
import javax .servlet .http .HttpServletRequest ;
@@ -49,7 +51,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
49
51
}
50
52
};
51
53
52
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
54
+ try (SdkAsyncHttpClient client = createClient ();
53
55
EmbeddedServer server = new EmbeddedServer (handler )) {
54
56
HttpExecuteResponse response = sendRequest (client , server );
55
57
assertThat (response .httpResponse ().statusCode ()).isEqualTo (200 );
@@ -70,7 +72,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
70
72
}
71
73
};
72
74
73
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
75
+ try (SdkAsyncHttpClient client = createClient ();
74
76
EmbeddedServer server = new EmbeddedServer (handler )) {
75
77
HttpExecuteResponse response = sendRequest (client , server );
76
78
assertThat (response .httpResponse ().statusCode ()).isEqualTo (204 );
@@ -91,7 +93,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
91
93
}
92
94
};
93
95
94
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
96
+ try (SdkAsyncHttpClient client = createClient ();
95
97
EmbeddedServer server = new EmbeddedServer (handler )) {
96
98
HttpExecuteResponse response = sendRequest (client , server );
97
99
assertThat (response .httpResponse ().statusCode ()).isEqualTo (304 );
@@ -112,7 +114,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
112
114
}
113
115
};
114
116
115
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
117
+ try (SdkAsyncHttpClient client = createClient ();
116
118
EmbeddedServer server = new EmbeddedServer (handler )) {
117
119
HttpExecuteResponse response = sendRequest (client , server );
118
120
assertThat (response .httpResponse ().statusCode ()).isEqualTo (417 );
@@ -134,7 +136,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
134
136
}
135
137
};
136
138
137
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
139
+ try (SdkAsyncHttpClient client = createClient ();
138
140
EmbeddedServer server = new EmbeddedServer (handler )) {
139
141
HttpExecuteResponse response = sendRequest (client , server );
140
142
assertThat (response .httpResponse ().statusCode ()).isEqualTo (500 );
@@ -158,7 +160,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
158
160
}
159
161
};
160
162
161
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
163
+ try (SdkAsyncHttpClient client = createClient ();
162
164
EmbeddedServer server = new EmbeddedServer (handler )) {
163
165
HttpExecuteResponse response = sendRequest (client , server );
164
166
assertThat (response .httpResponse ().statusCode ()).isEqualTo (500 );
@@ -182,7 +184,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
182
184
}
183
185
};
184
186
185
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
187
+ try (SdkAsyncHttpClient client = createClient ();
186
188
EmbeddedServer server = new EmbeddedServer (handler )) {
187
189
HttpExecuteResponse response = sendRequest (client , server );
188
190
assertThat (response .httpResponse ().statusCode ()).isEqualTo (400 );
@@ -203,7 +205,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
203
205
}
204
206
};
205
207
206
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
208
+ try (SdkAsyncHttpClient client = createClient ();
207
209
EmbeddedServer server = new EmbeddedServer (handler )) {
208
210
assertThatThrownBy (() -> sendRequest (client , server , true )).isInstanceOf (
209
211
IOException .class );
@@ -226,7 +228,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
226
228
}
227
229
};
228
230
229
- try (SdkAsyncHttpClient client = Java11AsyncHttpClient . create ();
231
+ try (SdkAsyncHttpClient client = createClient ();
230
232
EmbeddedServer server = new EmbeddedServer (handler )) {
231
233
assertThatThrownBy (() -> sendRequest (client , server , true )).isInstanceOf (
232
234
UncheckedIOException .class );
@@ -243,10 +245,11 @@ private HttpExecuteResponse sendRequest(SdkAsyncHttpClient client, EmbeddedServe
243
245
throws IOException {
244
246
final AtomicReference <SdkHttpResponse > responseBuffer = new AtomicReference <>();
245
247
final ByteArrayOutputStream bodyBuffer = new ByteArrayOutputStream ();
248
+ final URI serverUri =server .uri ();
246
249
247
250
try {
248
251
SdkHttpRequest .Builder requestBuilder = SdkHttpRequest .builder ()
249
- .uri (server . uri () )
252
+ .uri (serverUri )
250
253
.putHeader ("Expect" , "100-continue" )
251
254
.method (SdkHttpMethod .PUT );
252
255
client .execute (AsyncExecuteRequest .builder ()
@@ -283,7 +286,12 @@ public void onError(Throwable error) {
283
286
throw new InterruptedIOException ();
284
287
} catch (ExecutionException e ) {
285
288
Throwable cause = e .getCause ();
286
- if (cause instanceof IOException ) {
289
+ if (cause instanceof HttpConnectTimeoutException ) {
290
+ e .printStackTrace (System .err );
291
+ System .err .println (serverUri );
292
+ System .err .println (server .uri ());
293
+ throw (HttpConnectTimeoutException ) cause ;
294
+ } else if (cause instanceof IOException ) {
287
295
throw (IOException ) cause ;
288
296
} else if (cause instanceof RuntimeException ) {
289
297
throw (RuntimeException ) cause ;
@@ -299,6 +307,12 @@ public void onError(Throwable error) {
299
307
.build ();
300
308
}
301
309
310
+ private SdkAsyncHttpClient createClient () {
311
+ return Java11AsyncHttpClient .builder ()
312
+ .connectionTimeout (Duration .ofSeconds (5L ))
313
+ .build ();
314
+ }
315
+
302
316
private static class EmbeddedServer implements SdkAutoCloseable {
303
317
// TODO It might be nice to refactor this to use WireMock?
304
318
0 commit comments