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

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@ package org.springframework.integration.http.outbound;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URI;
@@ -38,6 +37,7 @@ import org.springframework.http.client.ClientHttpResponse;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.mock.http.client.MockClientHttpResponse;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@@ -90,7 +90,6 @@ public class CookieTests {
private int count = 123;
public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) {
return new ClientHttpRequest() {
private HttpHeaders headers = new HttpHeaders();
@@ -113,37 +112,13 @@ public class CookieTests {
public ClientHttpResponse execute() {
allHeaders.add(headers);
return new ClientHttpResponse() {
public HttpHeaders getHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.set("Set-cookie", "JSESSIONID=X" + count++); // test case insensitivity
headers.set("Content-Length", "2");
headers.set("Content-Type", "text/plain");
return headers;
}
public InputStream getBody() {
return new ByteArrayInputStream("OK".getBytes());
}
public String getStatusText() {
return "OK";
}
public HttpStatus getStatusCode() {
return HttpStatus.OK;
}
public void close() {
}
@Deprecated
public int getRawStatusCode() {
return 200;
}
};
MockClientHttpResponse clientHttpResponse =
new MockClientHttpResponse(new ByteArrayInputStream("OK".getBytes()), HttpStatus.OK);
HttpHeaders httpHeaders = clientHttpResponse.getHeaders();
httpHeaders.set("Set-cookie", "JSESSIONID=X" + count++); // test case insensitivity
httpHeaders.set("Content-Length", "2");
httpHeaders.set("Content-Type", "text/plain");
return clientHttpResponse;
}
};

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]")