2828package org .apache .hc .client5 .testing .sync ;
2929
3030import org .apache .hc .client5 .http .ConnectTimeoutException ;
31- import org .apache .hc .client5 .http .classic .HttpClient ;
3231import org .apache .hc .client5 .http .classic .methods .HttpGet ;
3332import org .apache .hc .client5 .http .classic .methods .HttpUriRequestBase ;
3433import org .apache .hc .client5 .http .config .ConnectionConfig ;
3837import org .apache .hc .client5 .http .impl .classic .HttpClientBuilder ;
3938import org .apache .hc .client5 .http .impl .io .PoolingHttpClientConnectionManager ;
4039import org .apache .hc .client5 .http .impl .io .PoolingHttpClientConnectionManagerBuilder ;
41- import org .apache .hc .core5 .http .ClassicHttpRequest ;
4240import org .junit .jupiter .api .Timeout ;
4341import org .junit .jupiter .params .ParameterizedTest ;
4442import org .junit .jupiter .params .provider .ValueSource ;
4543
46- import java .time .Duration ;
47- import java .time .temporal .ChronoUnit ;
48-
49- import static java .lang .String .format ;
5044import static java .util .concurrent .TimeUnit .MILLISECONDS ;
5145import static org .junit .jupiter .api .Assertions .assertThrows ;
5246import static org .junit .jupiter .api .Assertions .assertTrue ;
5347
5448class TestConnectionTimeouts {
55- private static final Duration EXPECTED_TIMEOUT = Duration .ofMillis (500 );
5649
5750 @ Timeout (5 )
5851 @ ParameterizedTest
@@ -61,7 +54,7 @@ class TestConnectionTimeouts {
6154 void testRequestConfig (final String scheme ) throws Exception {
6255 try (final CloseableHttpClient client = HttpClientBuilder .create ()
6356 .setDefaultRequestConfig (RequestConfig .custom ()
64- .setConnectTimeout (EXPECTED_TIMEOUT . toMillis () , MILLISECONDS )
57+ .setConnectTimeout (10 , MILLISECONDS )
6558 .build ())
6659 .build ()) {
6760 assertTimeout (getRequest (scheme ), client );
@@ -75,7 +68,7 @@ void testConnectionConfig(final String scheme) throws Exception {
7568 final PoolingHttpClientConnectionManager connMgr = PoolingHttpClientConnectionManagerBuilder .create ()
7669 .setDefaultConnectionConfig (
7770 ConnectionConfig .custom ()
78- .setConnectTimeout (EXPECTED_TIMEOUT . toMillis () , MILLISECONDS )
71+ .setConnectTimeout (10 , MILLISECONDS )
7972 .build ())
8073 .build ();
8174 try (final CloseableHttpClient client = HttpClientBuilder .create ().setConnectionManager (connMgr ).build ()) {
@@ -87,21 +80,10 @@ private static HttpUriRequestBase getRequest(final String scheme) {
8780 return new HttpGet (scheme + "://198.51.100.1/ping" );
8881 }
8982
90- private static void assertTimeout (final ClassicHttpRequest request , final HttpClient client ) {
91- final long startTime = System .nanoTime ();
83+ private static void assertTimeout (final HttpUriRequestBase request , final CloseableHttpClient client ) {
9284 final ConnectTimeoutException ex = assertThrows (ConnectTimeoutException .class ,
9385 () -> client .execute (request , new BasicHttpClientResponseHandler ()));
94- final Duration actualTime = Duration .of (System .nanoTime () - startTime , ChronoUnit .NANOS );
95- assertTrue (actualTime .toMillis () > EXPECTED_TIMEOUT .toMillis () / 2 ,
96- format ("Connection attempt timed out too soon (only %,d out of %,d ms)" ,
97- actualTime .toMillis (),
98- EXPECTED_TIMEOUT .toMillis ()));
99- assertTrue (actualTime .toMillis () < EXPECTED_TIMEOUT .toMillis () * 2 ,
100- format ("Connection attempt timed out too late (%,d out of %,d ms)" ,
101- actualTime .toMillis (),
102- EXPECTED_TIMEOUT .toMillis ()));
10386 // Capitalization (`connect` vs `Connect`) varies by Java version
104- final String message = ex .getMessage ();
105- assertTrue (message .toLowerCase ().contains ("connect timed out" ), message );
87+ assertTrue (ex .getMessage ().toLowerCase ().contains ("connect timed out" ), ex .getMessage ());
10688 }
10789}
0 commit comments