Switch to using HttpStatusCode in ResponseData. Fixes gh-1088.
This commit is contained in:
@@ -23,6 +23,7 @@ import java.util.Objects;
|
||||
|
||||
import org.springframework.core.style.ToStringCreator;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatusCode;
|
||||
import org.springframework.http.ResponseCookie;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
import org.springframework.http.server.reactive.ServerHttpResponse;
|
||||
@@ -39,7 +40,7 @@ import org.springframework.web.reactive.function.client.ClientResponse;
|
||||
*/
|
||||
public class ResponseData {
|
||||
|
||||
private final Integer httpStatus;
|
||||
private final HttpStatusCode httpStatus;
|
||||
|
||||
private final HttpHeaders headers;
|
||||
|
||||
@@ -47,7 +48,7 @@ public class ResponseData {
|
||||
|
||||
private final RequestData requestData;
|
||||
|
||||
public ResponseData(Integer httpStatus, HttpHeaders headers, MultiValueMap<String, ResponseCookie> cookies,
|
||||
public ResponseData(HttpStatusCode httpStatus, HttpHeaders headers, MultiValueMap<String, ResponseCookie> cookies,
|
||||
RequestData requestData) {
|
||||
this.httpStatus = httpStatus;
|
||||
this.headers = headers;
|
||||
@@ -56,19 +57,19 @@ public class ResponseData {
|
||||
}
|
||||
|
||||
public ResponseData(ClientResponse response, RequestData requestData) {
|
||||
this(response.rawStatusCode(), response.headers().asHttpHeaders(), response.cookies(), requestData);
|
||||
this(response.statusCode(), response.headers().asHttpHeaders(), response.cookies(), requestData);
|
||||
}
|
||||
|
||||
public ResponseData(ServerHttpResponse response, RequestData requestData) {
|
||||
this(response.getRawStatusCode(), response.getHeaders(), response.getCookies(), requestData);
|
||||
this(response.getStatusCode(), response.getHeaders(), response.getCookies(), requestData);
|
||||
}
|
||||
|
||||
public ResponseData(ClientHttpResponse clientHttpResponse, RequestData requestData) throws IOException {
|
||||
this(clientHttpResponse.getRawStatusCode(), clientHttpResponse.getHeaders(),
|
||||
this(clientHttpResponse.getStatusCode(), clientHttpResponse.getHeaders(),
|
||||
buildCookiesFromHeaders(clientHttpResponse.getHeaders()), requestData);
|
||||
}
|
||||
|
||||
public Integer getHttpStatus() {
|
||||
public HttpStatusCode getHttpStatus() {
|
||||
return httpStatus;
|
||||
}
|
||||
|
||||
@@ -120,10 +121,9 @@ public class ResponseData {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (!(o instanceof ResponseData)) {
|
||||
if (!(o instanceof ResponseData that)) {
|
||||
return false;
|
||||
}
|
||||
ResponseData that = (ResponseData) o;
|
||||
return httpStatus == that.httpStatus && Objects.equals(headers, that.headers)
|
||||
&& Objects.equals(cookies, that.cookies) && Objects.equals(requestData, that.requestData);
|
||||
}
|
||||
|
||||
@@ -44,8 +44,7 @@ final class LoadBalancerTags {
|
||||
ServiceInstance serviceInstance = completionContext.getLoadBalancerResponse().getServer();
|
||||
Tags tags = Tags.of(buildServiceInstanceTags(serviceInstance));
|
||||
Object clientResponse = completionContext.getClientResponse();
|
||||
if (clientResponse instanceof ResponseData) {
|
||||
ResponseData responseData = (ResponseData) clientResponse;
|
||||
if (clientResponse instanceof ResponseData responseData) {
|
||||
RequestData requestData = responseData.getRequestData();
|
||||
if (requestData != null) {
|
||||
tags = tags.and(valueOrUnknown("method", requestData.getHttpMethod()),
|
||||
@@ -67,7 +66,7 @@ final class LoadBalancerTags {
|
||||
|
||||
// In keeping with the way null HttpStatus is handled in Actuator
|
||||
private static int statusValue(ResponseData responseData) {
|
||||
return responseData.getHttpStatus() != null ? responseData.getHttpStatus() : 200;
|
||||
return responseData.getHttpStatus() != null ? responseData.getHttpStatus().value() : 200;
|
||||
}
|
||||
|
||||
private static String getPath(RequestData requestData) {
|
||||
|
||||
@@ -62,7 +62,7 @@ class MicrometerStatsLoadBalancerLifecycleTests {
|
||||
Request<Object> lbRequest = new DefaultRequest<>(new RequestDataContext(requestData));
|
||||
Response<ServiceInstance> lbResponse = new DefaultResponse(
|
||||
new DefaultServiceInstance("test-1", "test", "test.org", 8080, false, new HashMap<>()));
|
||||
ResponseData responseData = new ResponseData(HttpStatus.OK.value(), new HttpHeaders(),
|
||||
ResponseData responseData = new ResponseData(HttpStatus.OK, new HttpHeaders(),
|
||||
new MultiValueMapAdapter<>(new HashMap<>()), requestData);
|
||||
statsLifecycle.onStartRequest(lbRequest, lbResponse);
|
||||
assertThat(meterRegistry.get("loadbalancer.requests.active").gauge().value()).isEqualTo(1);
|
||||
@@ -121,7 +121,7 @@ class MicrometerStatsLoadBalancerLifecycleTests {
|
||||
Request<Object> lbRequest = new DefaultRequest<>(new StatsTestContext());
|
||||
Response<ServiceInstance> lbResponse = new DefaultResponse(
|
||||
new DefaultServiceInstance("test-1", "test", "test.org", 8080, false, new HashMap<>()));
|
||||
ResponseData responseData = new ResponseData(HttpStatus.OK.value(), new HttpHeaders(),
|
||||
ResponseData responseData = new ResponseData(HttpStatus.OK, new HttpHeaders(),
|
||||
new MultiValueMapAdapter<>(new HashMap<>()), null);
|
||||
statsLifecycle.onStartRequest(lbRequest, lbResponse);
|
||||
assertThat(meterRegistry.get("loadbalancer.requests.active").gauge().value()).isEqualTo(1);
|
||||
|
||||
Reference in New Issue
Block a user