Skip to content

Commit

Permalink
Merge branch '2.5.x'
Browse files Browse the repository at this point in the history
Closes gh-28469
  • Loading branch information
wilkinsona committed Oct 28, 2021
2 parents ea8a8ec + b375f9f commit e340429
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
Expand Up @@ -65,7 +65,7 @@ private Enum<? extends Producible<?>> resolveProducible(Class<Enum<? extends Pro
Enum<? extends Producible<?>> result = null;
for (String accept : accepts) {
for (String mimeType : MimeTypeUtils.tokenize(accept)) {
result = mostRecent(result, forMimeType(values, mimeType));
result = mostRecent(result, forMimeType(values, MimeTypeUtils.parseMimeType(mimeType)));
}
}
return result;
Expand All @@ -78,14 +78,10 @@ private Enum<? extends Producible<?>> mostRecent(Enum<? extends Producible<?>> e
return (candidateOrdinal > existingOrdinal) ? candidate : existing;
}

private Enum<? extends Producible<?>> forMimeType(List<Enum<? extends Producible<?>>> values, String mimeType) {
if ("*/*".equals(mimeType)) {
private Enum<? extends Producible<?>> forMimeType(List<Enum<? extends Producible<?>>> values, MimeType mimeType) {
if (mimeType.isWildcardType() && mimeType.isWildcardSubtype()) {
return getDefaultValue(values);
}
return forMimeType(values, MimeTypeUtils.parseMimeType(mimeType));
}

private Enum<? extends Producible<?>> forMimeType(List<Enum<? extends Producible<?>>> values, MimeType mimeType) {
for (Enum<? extends Producible<?>> candidate : values) {
if (mimeType.isCompatibleWith(((Producible<?>) candidate).getProducedMimeType())) {
return candidate;
Expand Down
Expand Up @@ -41,12 +41,25 @@ class PrometheusScrapeEndpointIntegrationTests {

@WebEndpointTest
void scrapeHasContentTypeText004ByDefault(WebTestClient client) {
String expectedContentType = TextFormat.CONTENT_TYPE_004;
assertThat(TextFormat.chooseContentType(null)).isEqualTo(expectedContentType);
client.get().uri("/actuator/prometheus").exchange().expectStatus().isOk().expectHeader()
.contentType(MediaType.parseMediaType(TextFormat.CONTENT_TYPE_004)).expectBody(String.class)
.contentType(MediaType.parseMediaType(expectedContentType)).expectBody(String.class)
.value((body) -> assertThat(body).contains("counter1_total").contains("counter2_total")
.contains("counter3_total"));
}

@WebEndpointTest
void scrapeHasContentTypeText004ByDefaultWhenClientAcceptsWildcardWithParameter(WebTestClient client) {
String expectedContentType = TextFormat.CONTENT_TYPE_004;
String accept = "*/*;q=0.8";
assertThat(TextFormat.chooseContentType(accept)).isEqualTo(expectedContentType);
client.get().uri("/actuator/prometheus").accept(MediaType.parseMediaType(accept)).exchange().expectStatus()
.isOk().expectHeader().contentType(MediaType.parseMediaType(expectedContentType))
.expectBody(String.class).value((body) -> assertThat(body).contains("counter1_total")
.contains("counter2_total").contains("counter3_total"));
}

@WebEndpointTest
void scrapeCanProduceOpenMetrics100(WebTestClient client) {
MediaType openMetrics = MediaType.parseMediaType(TextFormat.CONTENT_TYPE_OPENMETRICS_100);
Expand Down

0 comments on commit e340429

Please sign in to comment.