Fix WebClientIntegrationTests flaky Jetty tests
Ensure the port used by the client in malformedResponseChunksOnBodilessEntity and malformedResponseChunksOnEntityWithBody has correctly been set. Closes gh-29862
This commit is contained in:
		
							parent
							
								
									86a40716bd
								
							
						
					
					
						commit
						fb0aa5abb3
					
				| 
						 | 
				
			
			@ -34,7 +34,6 @@ import java.time.Duration;
 | 
			
		|||
import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.concurrent.atomic.AtomicInteger;
 | 
			
		||||
import java.util.function.Consumer;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +49,7 @@ import org.junit.jupiter.params.ParameterizedTest;
 | 
			
		|||
import org.junit.jupiter.params.provider.MethodSource;
 | 
			
		||||
import reactor.core.publisher.Flux;
 | 
			
		||||
import reactor.core.publisher.Mono;
 | 
			
		||||
import reactor.core.publisher.Sinks;
 | 
			
		||||
import reactor.netty.http.client.HttpClient;
 | 
			
		||||
import reactor.netty.resources.ConnectionProvider;
 | 
			
		||||
import reactor.test.StepVerifier;
 | 
			
		||||
| 
						 | 
				
			
			@ -1281,12 +1281,13 @@ class WebClientIntegrationTests {
 | 
			
		|||
	private <T> Mono<T> doMalformedChunkedResponseTest(
 | 
			
		||||
			ClientHttpConnector connector, Function<ResponseSpec, Mono<T>> handler) {
 | 
			
		||||
 | 
			
		||||
		AtomicInteger port = new AtomicInteger();
 | 
			
		||||
		Sinks.One<Integer> portSink = Sinks.one();
 | 
			
		||||
 | 
			
		||||
		Thread serverThread = new Thread(() -> {
 | 
			
		||||
			// No way to simulate a malformed chunked response through MockWebServer.
 | 
			
		||||
			try (ServerSocket serverSocket = new ServerSocket(0)) {
 | 
			
		||||
				port.set(serverSocket.getLocalPort());
 | 
			
		||||
				Sinks.EmitResult result = portSink.tryEmitValue(serverSocket.getLocalPort());
 | 
			
		||||
				assertThat(result).isEqualTo(Sinks.EmitResult.OK);
 | 
			
		||||
				Socket socket = serverSocket.accept();
 | 
			
		||||
				InputStream is = socket.getInputStream();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1310,12 +1311,13 @@ class WebClientIntegrationTests {
 | 
			
		|||
 | 
			
		||||
		serverThread.start();
 | 
			
		||||
 | 
			
		||||
		WebClient client = WebClient.builder()
 | 
			
		||||
				.clientConnector(connector)
 | 
			
		||||
				.baseUrl("http://localhost:" + port)
 | 
			
		||||
				.build();
 | 
			
		||||
 | 
			
		||||
		return handler.apply(client.post().retrieve());
 | 
			
		||||
		return portSink.asMono().flatMap(port -> {
 | 
			
		||||
			WebClient client = WebClient.builder()
 | 
			
		||||
					.clientConnector(connector)
 | 
			
		||||
					.baseUrl("http://localhost:" + port)
 | 
			
		||||
					.build();
 | 
			
		||||
			return handler.apply(client.post().retrieve());
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private void prepareResponse(Consumer<MockResponse> consumer) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue