Skip to content

Commit

Permalink
#12041 add leak tracking in tests
Browse files Browse the repository at this point in the history
Signed-off-by: Ludovic Orban <lorban@bitronix.be>
  • Loading branch information
lorban committed Aug 6, 2024
1 parent 576b7d7 commit b1e97f6
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
5 changes: 5 additions & 0 deletions jetty-server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@
<artifactId>jetty-util-ajax</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.eclipse.jetty</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,21 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.http.HttpTester;
import org.eclipse.jetty.http.HttpVersion;
import org.eclipse.jetty.io.ArrayByteBufferPool;
import org.eclipse.jetty.io.ArrayRetainableByteBufferPool;
import org.eclipse.jetty.logging.StacklessLogging;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;

import static org.awaitility.Awaitility.await;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;

Expand All @@ -43,12 +46,15 @@ public abstract class AbstractHttpTest
protected static Server server;
protected static ServerConnector connector;
private StacklessLogging stacklessChannelLogging;
private ArrayRetainableByteBufferPool.Tracking retainableByteBufferPool;

@BeforeEach
public void setUp() throws Exception
{
server = new Server();
connector = new ServerConnector(server, null, null, new ArrayByteBufferPool(64, 2048, 64 * 1024), 1, 1, new HttpConnectionFactory());
ArrayByteBufferPool.Tracking bufferPool = new ArrayByteBufferPool.Tracking(64, 2048, 64 * 1024);
retainableByteBufferPool = (ArrayRetainableByteBufferPool.Tracking)bufferPool.asRetainableByteBufferPool();
connector = new ServerConnector(server, null, null, bufferPool, 1, 1, new HttpConnectionFactory());
connector.setIdleTimeout(100000);

server.addConnector(connector);
Expand All @@ -58,8 +64,15 @@ public void setUp() throws Exception
@AfterEach
public void tearDown() throws Exception
{
server.stop();
stacklessChannelLogging.close();
try
{
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> assertThat("Server leaks: " + retainableByteBufferPool.dumpLeaks(), retainableByteBufferPool.getLeaks().size(), is(0)));
}
finally
{
server.stop();
stacklessChannelLogging.close();
}
}

protected HttpTester.Response executeRequest(HttpVersion httpVersion) throws URISyntaxException, IOException
Expand Down

0 comments on commit b1e97f6

Please sign in to comment.