diff --git a/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisAPITestBase.groovy b/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisAPITestBase.groovy index fd5fc3c9247..fbe6eefc841 100644 --- a/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisAPITestBase.groovy +++ b/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisAPITestBase.groovy @@ -1,17 +1,17 @@ import datadog.trace.test.util.Flaky - -import static datadog.trace.agent.test.utils.TraceUtils.basicSpan - import io.vertx.core.AsyncResult import io.vertx.core.Handler import io.vertx.redis.client.RedisAPI import io.vertx.redis.client.Response import spock.lang.AutoCleanup import spock.lang.Shared +import spock.util.concurrent.PollingConditions import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit +import static datadog.trace.agent.test.utils.TraceUtils.basicSpan + abstract class VertxRedisAPITestBase extends VertxRedisTestBase { @AutoCleanup(quiet = true) @@ -154,14 +154,26 @@ class VertxRedisAPIRedisForkedTest extends VertxRedisAPITestBase { class VertxRedisAPIRedisConnectionForkedTest extends VertxRedisAPITestBase { @Override RedisAPI createRedis() { + RedisAPI api = null + + new PollingConditions(delay: 3, timeout: 15).eventually { + (api = connect()) != null + } + + return api + } + + private RedisAPI connect() { def latch = new CountDownLatch(1) - def ret - redis.connect({ar -> + RedisAPI api = null + redis.connect({ ar -> try { - if (!ar.succeeded()) { + if (ar.succeeded()) { + api = RedisAPI.api(ar.result()) + } else { + println "Redis connection failed" ar.cause().printStackTrace(System.out) } - ret = RedisAPI.api(ar.result()) } catch (Throwable t) { t.printStackTrace(System.out) } finally { @@ -169,6 +181,7 @@ class VertxRedisAPIRedisConnectionForkedTest extends VertxRedisAPITestBase { } }) latch.await(10, TimeUnit.SECONDS) - return ret + + return api } } diff --git a/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisTestBase.groovy b/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisTestBase.groovy index 97a1c25959f..d8f5f5330ca 100644 --- a/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisTestBase.groovy +++ b/dd-java-agent/instrumentation/vertx-redis-client-3.9/src/test/groovy/VertxRedisTestBase.groovy @@ -1,9 +1,3 @@ -import org.testcontainers.utility.DockerImageName - -import static datadog.trace.agent.test.utils.TraceUtils.basicSpan -import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan - import com.redis.testcontainers.RedisContainer import datadog.trace.agent.test.asserts.ListWriterAssert import datadog.trace.agent.test.asserts.TraceAssert @@ -21,6 +15,7 @@ import io.vertx.redis.client.Redis import io.vertx.redis.client.Request import io.vertx.redis.client.Response import org.testcontainers.containers.wait.strategy.Wait +import org.testcontainers.utility.DockerImageName import spock.lang.AutoCleanup import spock.lang.Shared @@ -28,6 +23,10 @@ import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit import java.util.function.Function +import static datadog.trace.agent.test.utils.TraceUtils.basicSpan +import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace +import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan + abstract class VertxRedisTestBase extends VersionedNamingTestBase { @Shared @@ -86,11 +85,12 @@ abstract class VertxRedisTestBase extends VersionedNamingTestBase { TEST_WRITER.start() } - public R runWithHandler(final Handler>> redisCommand, - final Function resultFunction = null) { + R runWithHandler(final Handler>> redisCommand, + final Function resultFunction = null) { R result = null CountDownLatch latch = new CountDownLatch(1) - redisCommand.handle({ ar -> + redisCommand.handle({ + ar -> runUnderTrace("handler") { if (resultFunction) { result = resultFunction.apply(ar.result()) @@ -102,8 +102,8 @@ abstract class VertxRedisTestBase extends VersionedNamingTestBase { result } - public R runWithParentAndHandler(final Handler>> redisCommand, - final Function resultFunction = null) { + def R runWithParentAndHandler(final Handler>> redisCommand, + final Function resultFunction = null) { R result = null def parentSpan = runUnderTrace("parent") { result = runWithHandler(redisCommand, resultFunction) @@ -160,8 +160,4 @@ abstract class VertxRedisTestBase extends VersionedNamingTestBase { List responseToStrings(Response r) { r.iterator().collect { it.toString() } } - - public T identity(T t) { - return t - } }