Polish Docker client exception handling
This commit is contained in:
parent
6f095d6fec
commit
ada0741e10
|
|
@ -48,6 +48,7 @@ import org.springframework.boot.buildpack.platform.json.SharedObjectMapper;
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Mike Smithson
|
* @author Mike Smithson
|
||||||
|
* @author Scott Frederick
|
||||||
*/
|
*/
|
||||||
class HttpClientHttp implements Http {
|
class HttpClientHttp implements Http {
|
||||||
|
|
||||||
|
|
@ -129,9 +130,8 @@ class HttpClientHttp implements Http {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Response execute(HttpUriRequest request) {
|
private Response execute(HttpUriRequest request) {
|
||||||
CloseableHttpResponse response;
|
|
||||||
try {
|
try {
|
||||||
response = this.client.execute(request);
|
CloseableHttpResponse response = this.client.execute(request);
|
||||||
StatusLine statusLine = response.getStatusLine();
|
StatusLine statusLine = response.getStatusLine();
|
||||||
int statusCode = statusLine.getStatusCode();
|
int statusCode = statusLine.getStatusCode();
|
||||||
HttpEntity entity = response.getEntity();
|
HttpEntity entity = response.getEntity();
|
||||||
|
|
@ -143,15 +143,11 @@ class HttpClientHttp implements Http {
|
||||||
if (statusCode == 500) {
|
if (statusCode == 500) {
|
||||||
throw new DockerException(request.getURI(), statusCode, statusLine.getReasonPhrase(), null);
|
throw new DockerException(request.getURI(), statusCode, statusLine.getReasonPhrase(), null);
|
||||||
}
|
}
|
||||||
|
return new HttpClientResponse(response);
|
||||||
}
|
}
|
||||||
catch (IOException ioe) {
|
catch (IOException ioe) {
|
||||||
StringWriter stringWriter = new StringWriter();
|
throw new DockerException(request.getURI(), 500, ioe.getMessage(), null);
|
||||||
PrintWriter printWriter = new PrintWriter(stringWriter);
|
|
||||||
ioe.printStackTrace(printWriter);
|
|
||||||
throw new DockerException(request.getURI(), 500, stringWriter.toString(), null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new HttpClientResponse(response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ import static org.mockito.Mockito.verify;
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Mike Smithson
|
* @author Mike Smithson
|
||||||
|
* @author Scott Frederick
|
||||||
*/
|
*/
|
||||||
class HttpClientHttpTests {
|
class HttpClientHttpTests {
|
||||||
|
|
||||||
|
|
@ -186,11 +187,12 @@ class HttpClientHttpTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void executeWhenClientExecutesRequestThrowsIOExceptionRethrowsAsDockerException() throws IOException {
|
void executeWhenClientThrowsIOExceptionRethrowsAsDockerException() throws IOException {
|
||||||
given(this.client.execute(any())).willThrow(IOException.class);
|
given(this.client.execute(any())).willThrow(new IOException("test IO exception"));
|
||||||
assertThatExceptionOfType(DockerException.class).isThrownBy(() -> this.http.get(this.uri))
|
assertThatExceptionOfType(DockerException.class).isThrownBy(() -> this.http.get(this.uri))
|
||||||
.satisfies((ex) -> assertThat(ex.getErrors()).isNull()).satisfies(DockerException::getStatusCode)
|
.satisfies((ex) -> assertThat(ex.getErrors()).isNull())
|
||||||
.withMessageContaining("500").satisfies((ex) -> assertThat(ex.getReasonPhrase())).isNotNull();
|
.satisfies(DockerException::getStatusCode).withMessageContaining("500")
|
||||||
|
.satisfies((ex) -> assertThat(ex.getReasonPhrase()).contains("test IO exception"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String writeToString(HttpEntity entity) throws IOException {
|
private String writeToString(HttpEntity entity) throws IOException {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue