Skip to content

Commit f1d359b

Browse files
authored
Test http server requests in parallel (#8222)
* Test http server requests in parallel * use executor service * exclude some parallel
1 parent 679f9e2 commit f1d359b

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

dd-java-agent/instrumentation/servlet/request-3/src/test/groovy/JettyServlet3Test.groovy

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,11 @@ class JettyServlet3TestSyncDispatchOnAsyncTimeout extends JettyServlet3Test {
438438
true
439439
}
440440

441+
@Override
442+
boolean testParallelRequest() {
443+
false
444+
}
445+
441446
@Override
442447
void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) {
443448
dispatchSpan(trace, endpoint)
@@ -474,6 +479,11 @@ class JettyServlet3TestAsyncDispatchOnAsyncTimeout extends JettyServlet3Test {
474479
true
475480
}
476481

482+
@Override
483+
boolean testParallelRequest() {
484+
false
485+
}
486+
477487
@Override
478488
void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) {
479489
dispatchSpan(trace, endpoint)
@@ -532,6 +542,11 @@ class JettyServlet3ServeFromAsyncTimeout extends JettyServlet3Test {
532542
boolean testException() {
533543
false
534544
}
545+
546+
@Override
547+
boolean testParallelRequest() {
548+
false
549+
}
535550
}
536551

537552
class IastJettyServlet3ForkedTest extends JettyServlet3TestSync {

dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ import org.slf4j.Logger
4747
import org.slf4j.LoggerFactory
4848

4949
import javax.annotation.Nonnull
50+
import java.util.concurrent.ExecutorCompletionService
51+
import java.util.concurrent.Executors
5052
import java.util.function.BiFunction
5153
import java.util.function.Function
5254
import java.util.function.Supplier
@@ -382,6 +384,10 @@ abstract class HttpServerTest<SERVER> extends WithHttpServer<SERVER> {
382384
false // not all servers support session ids
383385
}
384386

387+
boolean testParallelRequest() {
388+
true
389+
}
390+
385391
@Override
386392
int version() {
387393
return 0
@@ -528,10 +534,21 @@ abstract class HttpServerTest<SERVER> extends WithHttpServer<SERVER> {
528534
@Flaky(value = "https://github.com/DataDog/dd-trace-java/issues/4690", suites = ["MuleHttpServerForkedTest"])
529535
def "test success with #count requests"() {
530536
setup:
537+
def responses
531538
def request = request(SUCCESS, method, body).build()
532-
List<Response> responses = (1..count).collect {
533-
return client.newCall(request).execute()
539+
if (testParallelRequest()) {
540+
def executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())
541+
def completionService = new ExecutorCompletionService(executor)
542+
(1..count).each {
543+
completionService.submit {
544+
client.newCall(request).execute()
545+
}
546+
}
547+
responses = (1..count).collect { completionService.take().get() }
548+
} else {
549+
responses = (1..count).collect {client.newCall(request).execute()}
534550
}
551+
535552
if (isDataStreamsEnabled()) {
536553
TEST_DATA_STREAMS_WRITER.waitForGroups(1)
537554
}

0 commit comments

Comments
 (0)