diff --git a/module/spring-boot-jersey/src/test/java/org/springframework/boot/jersey/autoconfigure/metrics/JerseyServerMetricsAutoConfigurationTests.java b/module/spring-boot-jersey/src/test/java/org/springframework/boot/jersey/autoconfigure/metrics/JerseyServerMetricsAutoConfigurationTests.java index d45fe6b88b7..bb529516b91 100644 --- a/module/spring-boot-jersey/src/test/java/org/springframework/boot/jersey/autoconfigure/metrics/JerseyServerMetricsAutoConfigurationTests.java +++ b/module/spring-boot-jersey/src/test/java/org/springframework/boot/jersey/autoconfigure/metrics/JerseyServerMetricsAutoConfigurationTests.java @@ -17,6 +17,7 @@ package org.springframework.boot.jersey.autoconfigure.metrics; import java.net.URI; +import java.time.Duration; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Timer; @@ -26,6 +27,8 @@ import io.micrometer.observation.Observation.Context; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; +import org.assertj.core.api.InstanceOfAssertFactories; +import org.awaitility.Awaitility; import org.glassfish.jersey.micrometer.server.ObservationApplicationEventListener; import org.glassfish.jersey.server.ResourceConfig; import org.junit.jupiter.api.Test; @@ -84,10 +87,14 @@ class JerseyServerMetricsAutoConfigurationTests { void httpRequestsAreTimed() { this.webContextRunner.withUserConfiguration(MetricsConfiguration.class).run((context) -> { doRequest(context); - Thread.sleep(500); MeterRegistry registry = context.getBean(MeterRegistry.class); - Timer timer = registry.get("http.server.requests").tag("uri", "/users/{id}").timer(); - assertThat(timer.count()).isOne(); + // Response is sent before the timer is registered which triggers a race + // condition. + // https://github.com/apache/tomcat/commit/69eff83577f7c00cbaaca9384ab4b1989f516797 + Awaitility.await().atMost(Duration.ofSeconds(5)).untilAsserted(() -> { + Timer timer = registry.find("http.server.requests").tag("uri", "/users/{id}").timer(); + assertThat(timer).isNotNull().extracting(Timer::count, InstanceOfAssertFactories.LONG).isOne(); + }); }); }