Issue #6728 - QUIC and HTTP/3

- Try to pinpoint the elusive failures.

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
This commit is contained in:
Simone Bordet 2021-11-08 18:52:11 +01:00
parent 41a2e785a9
commit 4b49dbb54f
2 changed files with 35 additions and 23 deletions

2
Jenkinsfile vendored
View File

@ -42,7 +42,7 @@ pipeline {
steps {
container( 'jetty-build' ) {
timeout( time: 120, unit: 'MINUTES' ) {
mavenBuild( "jdk17", "clean install -Dspotbugs.skip=true -Djacoco.skip=true", "maven3")
mavenBuild( "jdk17", "clean install -Dspotbugs.skip=true -Djacoco.skip=true -am -pl :test-http-client-transport -Dtest=HttpClientLoadTest#testIterative", "maven3")
recordIssues id: "jdk17", name: "Static Analysis jdk17", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), spotBugs(), pmdParser()]
}
}

View File

@ -44,6 +44,8 @@ import org.eclipse.jetty.io.ArrayByteBufferPool;
import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.io.LeakTrackingByteBufferPool;
import org.eclipse.jetty.io.MappedByteBufferPool;
import org.eclipse.jetty.logging.JettyLevel;
import org.eclipse.jetty.logging.JettyLogger;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
@ -80,33 +82,43 @@ public class HttpClientLoadTest extends AbstractTest<HttpClientLoadTest.LoadTran
@ArgumentsSource(TransportProvider.class)
public void testIterative(Transport transport) throws Exception
{
init(transport);
scenario.start(new LoadHandler(), client ->
{
client.setByteBufferPool(new LeakTrackingByteBufferPool(new MappedByteBufferPool.Tagged()));
client.setMaxConnectionsPerDestination(32768);
client.setMaxRequestsQueuedPerDestination(1024 * 1024);
});
scenario.setConnectionIdleTimeout(120000);
scenario.setRequestIdleTimeout(120000);
scenario.client.setIdleTimeout(120000);
JettyLogger logger = (JettyLogger)LoggerFactory.getLogger("org.eclipse.jetty");
logger.setLevel(JettyLevel.DEBUG);
// At least 25k requests to warmup properly (use -XX:+PrintCompilation to verify JIT activity)
int runs = 1;
int iterations = 100;
for (int i = 0; i < runs; ++i)
try
{
run(transport, iterations);
init(transport);
scenario.start(new LoadHandler(), client ->
{
client.setByteBufferPool(new LeakTrackingByteBufferPool(new MappedByteBufferPool.Tagged()));
client.setMaxConnectionsPerDestination(32768);
client.setMaxRequestsQueuedPerDestination(1024 * 1024);
});
scenario.setConnectionIdleTimeout(120000);
scenario.setRequestIdleTimeout(120000);
scenario.client.setIdleTimeout(120000);
// At least 25k requests to warmup properly (use -XX:+PrintCompilation to verify JIT activity)
int runs = 1;
int iterations = 50;
for (int i = 0; i < runs; ++i)
{
run(transport, iterations);
}
// Re-run after warmup
iterations = 100;
for (int i = 0; i < runs; ++i)
{
run(transport, iterations);
}
assertLeaks();
}
// Re-run after warmup
iterations = 250;
for (int i = 0; i < runs; ++i)
finally
{
run(transport, iterations);
logger.setLevel(JettyLevel.INFO);
}
assertLeaks();
}
@ParameterizedTest