Fix deprecations in test from SF

Related to https://github.com/spring-projects/spring-framework/issues/30013

The `WebHttpHandlerBuilder` customization with an `ObservationRegistry`
doesn't add a `SERVER` trace as it was with deprecated `ServerHttpObservationFilter`
This commit is contained in:
abilan
2023-06-07 13:12:51 -04:00
parent cc113e1eed
commit c24d10c8ae
2 changed files with 25 additions and 40 deletions

View File

@@ -39,10 +39,12 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.http.server.reactive.HttpHandler;
import org.springframework.integration.channel.FluxMessageChannel;
import org.springframework.integration.channel.interceptor.ObservationPropagationChannelInterceptor;
import org.springframework.integration.config.EnableIntegration;
@@ -56,8 +58,8 @@ import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
import org.springframework.test.web.reactive.server.WebTestClient;
import org.springframework.web.filter.reactive.ServerHttpObservationFilter;
import org.springframework.web.reactive.config.EnableWebFlux;
import org.springframework.web.server.adapter.WebHttpHandlerBuilder;
import static org.assertj.core.api.Assertions.assertThat;
@@ -105,7 +107,8 @@ public class WebFluxObservationPropagationTests {
this.observationRegistry.getCurrentObservation().stop();
assertThat(SPANS.spans()).hasSize(6);
// assertThat(SPANS.spans()).hasSize(6);
assertThat(SPANS.spans()).hasSize(5);
SpansAssert.assertThat(SPANS.spans().stream().map(BraveFinishedSpan::fromBrave).collect(Collectors.toList()))
.haveSameTraceId();
}
@@ -120,7 +123,9 @@ public class WebFluxObservationPropagationTests {
.expectBody(String.class)
.isEqualTo(testData.toLowerCase());
assertThat(SPANS.spans()).hasSize(3);
// assertThat(SPANS.spans()).hasSize(3);
assertThat(SPANS.spans()).hasSize(2);
// System. out .println(SPANS.spans().stream().map(Objects::toString).collect(Collectors.joining("\n")));
SpansAssert.assertThat(SPANS.spans().stream().map(BraveFinishedSpan::fromBrave).collect(Collectors.toList()))
.haveSameTraceId();
}
@@ -170,9 +175,12 @@ public class WebFluxObservationPropagationTests {
return WebTestClient.bindToApplicationContext(applicationContext).build();
}
// TODO This config does not add a SERVER span into a trace
@Bean
ServerHttpObservationFilter webfluxObservationFilter(ObservationRegistry registry) {
return new ServerHttpObservationFilter(registry);
public HttpHandler httpHandler(ObservationRegistry registry, ApplicationContext applicationContext) {
return WebHttpHandlerBuilder.applicationContext(applicationContext)
.observationRegistry(registry)
.build();
}
@Bean
@@ -200,7 +208,9 @@ public class WebFluxObservationPropagationTests {
}
@Bean
IntegrationFlow webFluxRequestReplyFlow(FluxMessageChannel webFluxRequestChannel) {
IntegrationFlow webFluxRequestReplyFlow(
@Qualifier("webFluxRequestChannel") FluxMessageChannel webFluxRequestChannel) {
return IntegrationFlow.from(WebFlux.inboundGateway("/testRequestReply")
.requestMapping(r -> r.params("name"))
.payloadExpression("#requestParams.name[0]")