diff --git a/spring-core/src/test/java/org/springframework/core/codec/ResourceRegionEncoderTests.java b/spring-core/src/test/java/org/springframework/core/codec/ResourceRegionEncoderTests.java index 465780eb385..6412af93394 100644 --- a/spring-core/src/test/java/org/springframework/core/codec/ResourceRegionEncoderTests.java +++ b/spring-core/src/test/java/org/springframework/core/codec/ResourceRegionEncoderTests.java @@ -63,7 +63,7 @@ class ResourceRegionEncoderTests extends AbstractLeakCheckingTests { } @Test - void shouldEncodeResourceRegionFileResource() throws Exception { + void shouldEncodeResourceRegionFileResource() { ResourceRegion region = new ResourceRegion( new ClassPathResource("ResourceRegionEncoderTests.txt", getClass()), 0, 6); Flux result = this.encoder.encode(Mono.just(region), this.bufferFactory, diff --git a/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/AbstractLeakCheckingTests.java b/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/AbstractLeakCheckingTests.java index 061cad5f8e3..348f5dbbecb 100644 --- a/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/AbstractLeakCheckingTests.java +++ b/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/AbstractLeakCheckingTests.java @@ -16,6 +16,8 @@ package org.springframework.core.testfixture.io.buffer; +import java.time.Duration; + import org.junit.jupiter.api.AfterEach; import org.springframework.core.io.buffer.DataBufferFactory; @@ -42,7 +44,7 @@ public abstract class AbstractLeakCheckingTests { */ @AfterEach final void checkForLeaks() { - this.bufferFactory.checkForLeaks(); + this.bufferFactory.checkForLeaks(Duration.ofSeconds(1)); } } diff --git a/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/LeakAwareDataBufferFactory.java b/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/LeakAwareDataBufferFactory.java index e038b59f0b7..ebf5df7d8df 100644 --- a/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/LeakAwareDataBufferFactory.java +++ b/spring-core/src/testFixtures/java/org/springframework/core/testfixture/io/buffer/LeakAwareDataBufferFactory.java @@ -80,13 +80,21 @@ public class LeakAwareDataBufferFactory implements DataBufferFactory { * method. */ public void checkForLeaks() { + checkForLeaks(Duration.ofSeconds(0)); + } + + /** + * Variant of {@link #checkForLeaks()} with the option to wait for buffer release. + * @param timeout how long to wait for buffers to be released; 0 for no waiting + */ + public void checkForLeaks(Duration timeout) { this.trackCreated.set(false); Instant start = Instant.now(); while (true) { if (this.created.stream().noneMatch(LeakAwareDataBuffer::isAllocated)) { return; } - if (Instant.now().isBefore(start.plus(Duration.ofSeconds(5)))) { + if (Instant.now().isBefore(start.plus(timeout))) { try { Thread.sleep(50); }