Browse Source

Merge pull request #17998 from dreis2211

* gh-17998:
  Improve handling of non-standard status codes in WebMvcTags

Closes gh-17998
pull/18164/head
Andy Wilkinson 6 years ago
parent
commit
9b8decf99c
  1. 19
      spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/servlet/WebMvcTags.java
  2. 14
      spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/servlet/WebMvcTagsTests.java

19
spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/servlet/WebMvcTags.java

@ -175,22 +175,21 @@ public final class WebMvcTags { @@ -175,22 +175,21 @@ public final class WebMvcTags {
*/
public static Tag outcome(HttpServletResponse response) {
if (response != null) {
HttpStatus status = extractStatus(response);
if (status != null) {
if (status.is1xxInformational()) {
HttpStatus.Series series = HttpStatus.Series.resolve(response.getStatus());
if (series != null) {
switch (series) {
case INFORMATIONAL:
return OUTCOME_INFORMATIONAL;
}
if (status.is2xxSuccessful()) {
case SUCCESSFUL:
return OUTCOME_SUCCESS;
}
if (status.is3xxRedirection()) {
case REDIRECTION:
return OUTCOME_REDIRECTION;
}
if (status.is4xxClientError()) {
case CLIENT_ERROR:
return OUTCOME_CLIENT_ERROR;
case SERVER_ERROR:
return OUTCOME_SERVER_ERROR;
}
}
return OUTCOME_SERVER_ERROR;
}
return OUTCOME_UNKNOWN;
}

14
spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/servlet/WebMvcTagsTests.java

@ -136,6 +136,13 @@ class WebMvcTagsTests { @@ -136,6 +136,13 @@ class WebMvcTagsTests {
assertThat(tag.getValue()).isEqualTo("CLIENT_ERROR");
}
@Test
void outcomeTagIsClientErrorWhenResponseIsNonStandardInClientSeries() {
this.response.setStatus(490);
Tag tag = WebMvcTags.outcome(this.response);
assertThat(tag.getValue()).isEqualTo("CLIENT_ERROR");
}
@Test
void outcomeTagIsServerErrorWhenResponseIs5xx() {
this.response.setStatus(500);
@ -143,4 +150,11 @@ class WebMvcTagsTests { @@ -143,4 +150,11 @@ class WebMvcTagsTests {
assertThat(tag.getValue()).isEqualTo("SERVER_ERROR");
}
@Test
void outcomeTagIsUnknownWhenResponseStatusIsInUnknownSeries() {
this.response.setStatus(701);
Tag tag = WebMvcTags.outcome(this.response);
assertThat(tag.getValue()).isEqualTo("UNKNOWN");
}
}

Loading…
Cancel
Save