mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-05-06 15:55:49 +02:00
Merge pull request #1430 from scm-manager/feature/ignore_codes_on_tracing
Enhance trace api with accepted status codes
This commit is contained in:
@@ -52,6 +52,7 @@ import java.io.OutputStream;
|
||||
import java.net.*;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Set;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
@@ -206,7 +207,7 @@ public class DefaultAdvancedHttpClient extends AdvancedHttpClient
|
||||
try {
|
||||
DefaultAdvancedHttpResponse response = doRequest(request);
|
||||
span.label("status", response.getStatus());
|
||||
if (!response.isSuccessful()) {
|
||||
if (isFailedRequest(request, response)) {
|
||||
span.failed();
|
||||
}
|
||||
return response;
|
||||
@@ -219,6 +220,13 @@ public class DefaultAdvancedHttpClient extends AdvancedHttpClient
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isFailedRequest(BaseHttpRequest<?> request, AdvancedHttpResponse responseStatus) {
|
||||
if (Arrays.stream(request.getAcceptedStatus()).anyMatch(code -> code == responseStatus.getStatus())) {
|
||||
return false;
|
||||
}
|
||||
return !responseStatus.isSuccessful();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
private DefaultAdvancedHttpResponse doRequest(BaseHttpRequest<?> request) throws IOException {
|
||||
HttpURLConnection connection = openConnection(request, new URL(request.getUrl()));
|
||||
|
||||
@@ -317,6 +317,28 @@ public class DefaultAdvancedHttpClientTest
|
||||
verify(tracer, never()).span(anyString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotTraceRequestIfAcceptedResponseCode() throws IOException {
|
||||
when(connection.getResponseCode()).thenReturn(400);
|
||||
|
||||
new AdvancedHttpRequest(client, HttpMethod.GET, "https://www.scm-manager.org").acceptStatusCodes(400).request();
|
||||
verify(tracer).span("HTTP Request");
|
||||
verify(span).label("status", 400);
|
||||
verify(span, never()).failed();
|
||||
verify(span).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldTraceRequestAsFailedIfAcceptedResponseCodeDoesntMatch() throws IOException {
|
||||
when(connection.getResponseCode()).thenReturn(401);
|
||||
|
||||
new AdvancedHttpRequest(client, HttpMethod.GET, "https://www.scm-manager.org").acceptStatusCodes(400).request();
|
||||
verify(tracer).span("HTTP Request");
|
||||
verify(span).label("status", 401);
|
||||
verify(span).failed();
|
||||
verify(span).close();
|
||||
}
|
||||
|
||||
|
||||
//~--- set methods ----------------------------------------------------------
|
||||
|
||||
@@ -328,7 +350,7 @@ public class DefaultAdvancedHttpClientTest
|
||||
public void setUp()
|
||||
{
|
||||
configuration = new ScmConfiguration();
|
||||
transformers = new HashSet<ContentTransformer>();
|
||||
transformers = new HashSet<>();
|
||||
client = new TestingAdvacedHttpClient(configuration, transformers);
|
||||
when(tracer.span(anyString())).thenReturn(span);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user