Browse Source

Polish Docker client exception handling

pull/20344/head
Scott Frederick 6 years ago
parent
commit
ada0741e10
  1. 12
      spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttp.java
  2. 10
      spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttpTests.java

12
spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttp.java

@ -48,6 +48,7 @@ import org.springframework.boot.buildpack.platform.json.SharedObjectMapper; @@ -48,6 +48,7 @@ import org.springframework.boot.buildpack.platform.json.SharedObjectMapper;
*
* @author Phillip Webb
* @author Mike Smithson
* @author Scott Frederick
*/
class HttpClientHttp implements Http {
@ -129,9 +130,8 @@ class HttpClientHttp implements Http { @@ -129,9 +130,8 @@ class HttpClientHttp implements Http {
}
private Response execute(HttpUriRequest request) {
CloseableHttpResponse response;
try {
response = this.client.execute(request);
CloseableHttpResponse response = this.client.execute(request);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
HttpEntity entity = response.getEntity();
@ -143,15 +143,11 @@ class HttpClientHttp implements Http { @@ -143,15 +143,11 @@ class HttpClientHttp implements Http {
if (statusCode == 500) {
throw new DockerException(request.getURI(), statusCode, statusLine.getReasonPhrase(), null);
}
return new HttpClientResponse(response);
}
catch (IOException ioe) {
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
ioe.printStackTrace(printWriter);
throw new DockerException(request.getURI(), 500, stringWriter.toString(), null);
throw new DockerException(request.getURI(), 500, ioe.getMessage(), null);
}
return new HttpClientResponse(response);
}
/**

10
spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/HttpClientHttpTests.java

@ -54,6 +54,7 @@ import static org.mockito.Mockito.verify; @@ -54,6 +54,7 @@ import static org.mockito.Mockito.verify;
*
* @author Phillip Webb
* @author Mike Smithson
* @author Scott Frederick
*/
class HttpClientHttpTests {
@ -186,11 +187,12 @@ class HttpClientHttpTests { @@ -186,11 +187,12 @@ class HttpClientHttpTests {
}
@Test
void executeWhenClientExecutesRequestThrowsIOExceptionRethrowsAsDockerException() throws IOException {
given(this.client.execute(any())).willThrow(IOException.class);
void executeWhenClientThrowsIOExceptionRethrowsAsDockerException() throws IOException {
given(this.client.execute(any())).willThrow(new IOException("test IO exception"));
assertThatExceptionOfType(DockerException.class).isThrownBy(() -> this.http.get(this.uri))
.satisfies((ex) -> assertThat(ex.getErrors()).isNull()).satisfies(DockerException::getStatusCode)
.withMessageContaining("500").satisfies((ex) -> assertThat(ex.getReasonPhrase())).isNotNull();
.satisfies((ex) -> assertThat(ex.getErrors()).isNull())
.satisfies(DockerException::getStatusCode).withMessageContaining("500")
.satisfies((ex) -> assertThat(ex.getReasonPhrase()).contains("test IO exception"));
}
private String writeToString(HttpEntity entity) throws IOException {

Loading…
Cancel
Save