4343public class PerRequestTimeoutTest extends AbstractBasicTest {
4444 private static final String MSG = "Enough is enough." ;
4545
46- private void checkTimeoutMessage (String message ) {
47- assertTrue (message .startsWith ("Request timeout" ), "error message indicates reason of error but got: " + message );
46+ private void checkTimeoutMessage (String message , boolean requestTimeout ) {
47+ if (requestTimeout )
48+ assertTrue (message .startsWith ("Request timeout" ), "error message indicates reason of error but got: " + message );
49+ else
50+ assertTrue (message .startsWith ("Read timeout" ), "error message indicates reason of error but got: " + message );
4851 assertTrue (message .contains ("localhost" ), "error message contains remote host address but got: " + message );
49- assertTrue (message .contains ("after 100ms " ), "error message contains timeout configuration value but got: " + message );
52+ assertTrue (message .contains ("after 100 ms " ), "error message contains timeout configuration value but got: " + message );
5053 }
5154
5255 @ Override
@@ -100,7 +103,23 @@ public void testRequestTimeout() throws IOException {
100103 fail ("Interrupted." , e );
101104 } catch (ExecutionException e ) {
102105 assertTrue (e .getCause () instanceof TimeoutException );
103- checkTimeoutMessage (e .getCause ().getMessage ());
106+ checkTimeoutMessage (e .getCause ().getMessage (), true );
107+ } catch (TimeoutException e ) {
108+ fail ("Timeout." , e );
109+ }
110+ }
111+
112+ @ Test (groups = "standalone" )
113+ public void testReadTimeout () throws IOException {
114+ try (AsyncHttpClient client = asyncHttpClient (config ().setReadTimeout (100 ))) {
115+ Future <Response > responseFuture = client .prepareGet (getTargetUrl ()).execute ();
116+ Response response = responseFuture .get (2000 , TimeUnit .MILLISECONDS );
117+ assertNull (response );
118+ } catch (InterruptedException e ) {
119+ fail ("Interrupted." , e );
120+ } catch (ExecutionException e ) {
121+ assertTrue (e .getCause () instanceof TimeoutException );
122+ checkTimeoutMessage (e .getCause ().getMessage (), false );
104123 } catch (TimeoutException e ) {
105124 fail ("Timeout." , e );
106125 }
@@ -116,7 +135,7 @@ public void testGlobalDefaultPerRequestInfiniteTimeout() throws IOException {
116135 fail ("Interrupted." , e );
117136 } catch (ExecutionException e ) {
118137 assertTrue (e .getCause () instanceof TimeoutException );
119- checkTimeoutMessage (e .getCause ().getMessage ());
138+ checkTimeoutMessage (e .getCause ().getMessage (), true );
120139 }
121140 }
122141
@@ -130,7 +149,7 @@ public void testGlobalRequestTimeout() throws IOException {
130149 fail ("Interrupted." , e );
131150 } catch (ExecutionException e ) {
132151 assertTrue (e .getCause () instanceof TimeoutException );
133- checkTimeoutMessage (e .getCause ().getMessage ());
152+ checkTimeoutMessage (e .getCause ().getMessage (), true );
134153 } catch (TimeoutException e ) {
135154 fail ("Timeout." , e );
136155 }
0 commit comments