Reject setups with multiple observation conventions
Prior to this commit, the `WebHttpHandlerBuilder` would only configure a custom observation convention if there is a single convention in the application context. It would other wise use the default. This commit aligns with the previous Spring Boot behavior where multiple conventions setups are rejected as invalid with `NoUniqueBeanDefinitionException`. Fixes gh-31864
This commit is contained in:
@@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -49,6 +50,7 @@ import org.springframework.web.testfixture.http.server.reactive.MockServerHttpRe
|
||||
|
||||
import static java.time.Duration.ofMillis;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link WebHttpHandlerBuilder}.
|
||||
@@ -173,6 +175,14 @@ public class WebHttpHandlerBuilderTests {
|
||||
.that().hasLowCardinalityKeyValue("uri", "UNKNOWN");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRejectDuplicateObservationConvention() {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ObservationConfig.class,
|
||||
DuplicateConventionObservationConfig.class);
|
||||
assertThatThrownBy(() -> WebHttpHandlerBuilder.applicationContext(applicationContext).build())
|
||||
.isInstanceOf(NoUniqueBeanDefinitionException.class);
|
||||
}
|
||||
|
||||
private static Mono<Void> writeToResponse(ServerWebExchange exchange, String value) {
|
||||
byte[] bytes = value.getBytes(StandardCharsets.UTF_8);
|
||||
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bytes);
|
||||
@@ -315,4 +325,14 @@ public class WebHttpHandlerBuilderTests {
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class DuplicateConventionObservationConfig {
|
||||
|
||||
@Bean
|
||||
public ServerRequestObservationConvention duplicateRequestObservationConvention() {
|
||||
return new DefaultServerRequestObservationConvention();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user