Add duration support for setConnectTimeout and setReadTimeout

See gh-13355
This commit is contained in:
Dmytro Nosan
2018-06-04 15:53:09 +03:00
committed by Stephane Nicoll
parent 8691d01aaf
commit 36f3c1b883

View File

@@ -16,6 +16,7 @@
package org.springframework.boot.web.client;
import java.time.Duration;
import java.util.Collections;
import java.util.Set;
import java.util.function.Supplier;
@@ -60,6 +61,7 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
* @author Stephane Nicoll
* @author Phillip Webb
* @author Andy Wilkinson
* @author Dmytro Nosan
*/
public class RestTemplateBuilderTests {
@@ -390,7 +392,7 @@ public class RestTemplateBuilderTests {
}
@Test
public void customizerShouldBeAppliedInTheEnd() {
public void customizerShouldBeAppliedAtTheEnd() {
ResponseErrorHandler errorHandler = mock(ResponseErrorHandler.class);
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
this.builder.interceptors(this.interceptor)
@@ -439,7 +441,7 @@ public class RestTemplateBuilderTests {
public void connectTimeoutCanBeConfiguredOnHttpComponentsRequestFactory() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(HttpComponentsClientHttpRequestFactory.class)
.setConnectTimeout(1234).build().getRequestFactory();
.setConnectTimeout(Duration.ofMillis(1234)).build().getRequestFactory();
assertThat(((RequestConfig) ReflectionTestUtils.getField(requestFactory,
"requestConfig")).getConnectTimeout()).isEqualTo(1234);
}
@@ -448,7 +450,7 @@ public class RestTemplateBuilderTests {
public void readTimeoutCanBeConfiguredOnHttpComponentsRequestFactory() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(HttpComponentsClientHttpRequestFactory.class)
.setReadTimeout(1234).build().getRequestFactory();
.setReadTimeout(Duration.ofMillis(1234)).build().getRequestFactory();
assertThat(((RequestConfig) ReflectionTestUtils.getField(requestFactory,
"requestConfig")).getSocketTimeout()).isEqualTo(1234);
}
@@ -457,7 +459,7 @@ public class RestTemplateBuilderTests {
public void connectTimeoutCanBeConfiguredOnSimpleRequestFactory() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(SimpleClientHttpRequestFactory.class)
.setConnectTimeout(1234).build().getRequestFactory();
.setConnectTimeout(Duration.ofMillis(1234)).build().getRequestFactory();
assertThat(ReflectionTestUtils.getField(requestFactory, "connectTimeout"))
.isEqualTo(1234);
}
@@ -465,8 +467,8 @@ public class RestTemplateBuilderTests {
@Test
public void readTimeoutCanBeConfiguredOnSimpleRequestFactory() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(SimpleClientHttpRequestFactory.class).setReadTimeout(1234)
.build().getRequestFactory();
.requestFactory(SimpleClientHttpRequestFactory.class)
.setReadTimeout(Duration.ofMillis(1234)).build().getRequestFactory();
assertThat(ReflectionTestUtils.getField(requestFactory, "readTimeout"))
.isEqualTo(1234);
}
@@ -475,7 +477,7 @@ public class RestTemplateBuilderTests {
public void connectTimeoutCanBeConfiguredOnOkHttp3RequestFactory() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(OkHttp3ClientHttpRequestFactory.class)
.setConnectTimeout(1234).build().getRequestFactory();
.setConnectTimeout(Duration.ofMillis(1234)).build().getRequestFactory();
assertThat(ReflectionTestUtils.getField(
ReflectionTestUtils.getField(requestFactory, "client"), "connectTimeout"))
.isEqualTo(1234);
@@ -485,7 +487,7 @@ public class RestTemplateBuilderTests {
public void readTimeoutCanBeConfiguredOnOkHttp3RequestFactory() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(OkHttp3ClientHttpRequestFactory.class)
.setReadTimeout(1234).build().getRequestFactory();
.setReadTimeout(Duration.ofMillis(1234)).build().getRequestFactory();
assertThat(ReflectionTestUtils.getField(
ReflectionTestUtils.getField(requestFactory, "client"), "readTimeout"))
.isEqualTo(1234);
@@ -497,7 +499,7 @@ public class RestTemplateBuilderTests {
this.builder
.requestFactory(
() -> new BufferingClientHttpRequestFactory(requestFactory))
.setConnectTimeout(1234).build();
.setConnectTimeout(Duration.ofMillis(1234)).build();
assertThat(ReflectionTestUtils.getField(requestFactory, "connectTimeout"))
.isEqualTo(1234);
}
@@ -508,7 +510,7 @@ public class RestTemplateBuilderTests {
this.builder
.requestFactory(
() -> new BufferingClientHttpRequestFactory(requestFactory))
.setReadTimeout(1234).build();
.setReadTimeout(Duration.ofMillis(1234)).build();
assertThat(ReflectionTestUtils.getField(requestFactory, "readTimeout"))
.isEqualTo(1234);
}
@@ -524,6 +526,46 @@ public class RestTemplateBuilderTests {
.isInstanceOf(BufferingClientHttpRequestFactory.class);
}
@Test
@SuppressWarnings("deprecation")
public void deprecatedReadTimeout() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(SimpleClientHttpRequestFactory.class).setReadTimeout(1234)
.build().getRequestFactory();
assertThat(ReflectionTestUtils.getField(requestFactory, "readTimeout"))
.isEqualTo(1234);
}
@Test
@SuppressWarnings("deprecation")
public void deprecatedConnectTimeout() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(SimpleClientHttpRequestFactory.class)
.setConnectTimeout(1234).build().getRequestFactory();
assertThat(ReflectionTestUtils.getField(requestFactory, "connectTimeout"))
.isEqualTo(1234);
}
@Test
public void readTimeoutShouldBeIgnored() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(SimpleClientHttpRequestFactory.class)
.setReadTimeout(Duration.ofSeconds(5)).setReadTimeout(null).build()
.getRequestFactory();
assertThat(ReflectionTestUtils.getField(requestFactory, "readTimeout"))
.isEqualTo(-1);
}
@Test
public void connectionTimeoutShouldBeIgnored() {
ClientHttpRequestFactory requestFactory = this.builder
.requestFactory(SimpleClientHttpRequestFactory.class)
.setConnectTimeout(Duration.ofSeconds(5)).setConnectTimeout(null).build()
.getRequestFactory();
assertThat(ReflectionTestUtils.getField(requestFactory, "connectTimeout"))
.isEqualTo(-1);
}
public static class RestTemplateSubclass extends RestTemplate {
}