diff --git a/instrumentation/jedis/jedis-1.4/javaagent/jedis-1.4-javaagent.gradle b/instrumentation/jedis/jedis-1.4/javaagent/jedis-1.4-javaagent.gradle index 2e55cbc701..00d362413e 100644 --- a/instrumentation/jedis/jedis-1.4/javaagent/jedis-1.4-javaagent.gradle +++ b/instrumentation/jedis/jedis-1.4/javaagent/jedis-1.4-javaagent.gradle @@ -12,8 +12,6 @@ muzzle { dependencies { library "redis.clients:jedis:1.4.0" - testImplementation "com.github.kstyrc:embedded-redis:0.6" - // Jedis 3.0 has API changes that prevent instrumentation from applying latestDepTestLibrary "redis.clients:jedis:2.+" } diff --git a/instrumentation/jedis/jedis-1.4/javaagent/src/test/groovy/JedisClientTest.groovy b/instrumentation/jedis/jedis-1.4/javaagent/src/test/groovy/JedisClientTest.groovy index bbcac35513..5d299e726f 100644 --- a/instrumentation/jedis/jedis-1.4/javaagent/src/test/groovy/JedisClientTest.groovy +++ b/instrumentation/jedis/jedis-1.4/javaagent/src/test/groovy/JedisClientTest.groovy @@ -6,30 +6,25 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification -import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes +import org.testcontainers.containers.GenericContainer import redis.clients.jedis.Jedis -import redis.embedded.RedisServer import spock.lang.Shared class JedisClientTest extends AgentInstrumentationSpecification { - @Shared - int port = PortUtils.findOpenPort() + private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379) @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind 127.0.0.1") - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + int port + @Shared - Jedis jedis = new Jedis("localhost", port) + Jedis jedis def setupSpec() { - println "Using redis: $redisServer.args" redisServer.start() + port = redisServer.getMappedPort(6379) + jedis = new Jedis("localhost", port) } def cleanupSpec() { diff --git a/instrumentation/jedis/jedis-3.0/javaagent/jedis-3.0-javaagent.gradle b/instrumentation/jedis/jedis-3.0/javaagent/jedis-3.0-javaagent.gradle index de135dd29e..8c426bd0f5 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/jedis-3.0-javaagent.gradle +++ b/instrumentation/jedis/jedis-3.0/javaagent/jedis-3.0-javaagent.gradle @@ -17,7 +17,6 @@ muzzle { dependencies { library "redis.clients:jedis:3.0.0" - testImplementation "com.github.kstyrc:embedded-redis:0.6" // ensures jedis-1.4 instrumentation does not load with jedis 3.0+ by failing // the tests in the event it does. The tests will end up with double spans testInstrumentation project(':instrumentation:jedis:jedis-1.4:javaagent') diff --git a/instrumentation/jedis/jedis-3.0/javaagent/src/test/groovy/Jedis30ClientTest.groovy b/instrumentation/jedis/jedis-3.0/javaagent/src/test/groovy/Jedis30ClientTest.groovy index 2101ccb699..7c659ebd45 100644 --- a/instrumentation/jedis/jedis-3.0/javaagent/src/test/groovy/Jedis30ClientTest.groovy +++ b/instrumentation/jedis/jedis-3.0/javaagent/src/test/groovy/Jedis30ClientTest.groovy @@ -6,30 +6,25 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification -import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes +import org.testcontainers.containers.GenericContainer import redis.clients.jedis.Jedis -import redis.embedded.RedisServer import spock.lang.Shared class Jedis30ClientTest extends AgentInstrumentationSpecification { - @Shared - int port = PortUtils.findOpenPort() + private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379) @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind 127.0.0.1") - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + int port + @Shared - Jedis jedis = new Jedis("localhost", port) + Jedis jedis def setupSpec() { - println "Using redis: $redisServer.args" redisServer.start() + port = redisServer.getMappedPort(6379) + jedis = new Jedis("localhost", port) } def cleanupSpec() { diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle b/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle index 4f3dc6e1d8..8231e91208 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/lettuce-4.0-javaagent.gradle @@ -13,8 +13,6 @@ muzzle { dependencies { library "biz.paluch.redis:lettuce:4.0.Final" - testImplementation "com.github.kstyrc:embedded-redis:0.6" - latestDepTestLibrary "biz.paluch.redis:lettuce:4.+" } diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy index a5ba8b732c..e85fcfc923 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy @@ -25,7 +25,7 @@ import java.util.function.BiConsumer import java.util.function.BiFunction import java.util.function.Consumer import java.util.function.Function -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared import spock.util.concurrent.AsyncConditions @@ -35,6 +35,8 @@ class LettuceAsyncClientTest extends AgentInstrumentationSpecification { // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = new ClientOptions.Builder().autoReconnect(false).build() + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + @Shared int port @Shared @@ -48,9 +50,6 @@ class LettuceAsyncClientTest extends AgentInstrumentationSpecification { @Shared String embeddedDbUri - @Shared - RedisServer redisServer - @Shared Map testHashMap = [ firstname: "John", @@ -71,18 +70,12 @@ class LettuceAsyncClientTest extends AgentInstrumentationSpecification { dbUriNonExistent = "redis://" + dbAddrNonExistent embeddedDbUri = "redis://" + dbAddr - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redisServer = redisServer.withFixedExposedPort(port, 6379) } def setup() { redisClient = RedisClient.create(embeddedDbUri) - println "Using redis: $redisServer.args" redisServer.start() redisClient.setOptions(CLIENT_OPTIONS) diff --git a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy index bb16a72cd3..b3c207da65 100644 --- a/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy +++ b/instrumentation/lettuce/lettuce-4.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy @@ -14,7 +14,7 @@ import com.lambdaworks.redis.api.sync.RedisCommands import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared class LettuceSyncClientTest extends AgentInstrumentationSpecification { @@ -23,6 +23,8 @@ class LettuceSyncClientTest extends AgentInstrumentationSpecification { // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = new ClientOptions.Builder().autoReconnect(false).build() + private static FixedHostPortGenericContainer redis = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + @Shared int port @Shared @@ -36,9 +38,6 @@ class LettuceSyncClientTest extends AgentInstrumentationSpecification { @Shared String embeddedDbUri - @Shared - RedisServer redisServer - @Shared Map testHashMap = [ firstname: "John", @@ -58,18 +57,15 @@ class LettuceSyncClientTest extends AgentInstrumentationSpecification { dbUriNonExistent = "redis://" + dbAddrNonExistent embeddedDbUri = "redis://" + dbAddr - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redis = redis.withFixedExposedPort(port, 6379) } def setup() { + //TODO do not restart server for every test + redis.start() + redisClient = RedisClient.create(embeddedDbUri) - redisServer.start() connection = redisClient.connect() syncCommands = connection.sync() @@ -82,7 +78,7 @@ class LettuceSyncClientTest extends AgentInstrumentationSpecification { def cleanup() { connection.close() - redisServer.stop() + redis.stop() } def "connect"() { diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle b/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle index 7943b6ab7f..491d944e81 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/lettuce-5.0-javaagent.gradle @@ -14,7 +14,6 @@ dependencies { implementation project(':instrumentation:lettuce:lettuce-common:library') - testImplementation "com.github.kstyrc:embedded-redis:0.6" testImplementation "io.lettuce:lettuce-core:5.0.0.RELEASE" testInstrumentation project(':instrumentation:reactor-3.1:javaagent') } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy index 4dd71a912d..db8a9585be 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceAsyncClientTest.groovy @@ -27,7 +27,7 @@ import java.util.function.BiConsumer import java.util.function.BiFunction import java.util.function.Consumer import java.util.function.Function -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared import spock.util.concurrent.AsyncConditions @@ -38,6 +38,8 @@ class LettuceAsyncClientTest extends AgentInstrumentationSpecification { // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = ClientOptions.builder().autoReconnect(false).build() + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + @Shared int port @Shared @@ -51,9 +53,6 @@ class LettuceAsyncClientTest extends AgentInstrumentationSpecification { @Shared String embeddedDbUri - @Shared - RedisServer redisServer - @Shared Map testHashMap = [ firstname: "John", @@ -74,18 +73,12 @@ class LettuceAsyncClientTest extends AgentInstrumentationSpecification { dbUriNonExistent = "redis://" + dbAddrNonExistent embeddedDbUri = "redis://" + dbAddr - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + PEER_NAME) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redisServer = redisServer.withFixedExposedPort(port, 6379) } def setup() { redisClient = RedisClient.create(embeddedDbUri) - println "Using redis: $redisServer.args" redisServer.start() redisClient.setOptions(CLIENT_OPTIONS) diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceReactiveClientTest.groovy b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceReactiveClientTest.groovy index ccbda21762..9fd009b07e 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceReactiveClientTest.groovy +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceReactiveClientTest.groovy @@ -15,8 +15,8 @@ import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import java.util.function.Consumer +import org.testcontainers.containers.FixedHostPortGenericContainer import reactor.core.scheduler.Schedulers -import redis.embedded.RedisServer import spock.lang.Shared import spock.util.concurrent.AsyncConditions @@ -27,11 +27,11 @@ class LettuceReactiveClientTest extends AgentInstrumentationSpecification { // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = ClientOptions.builder().autoReconnect(false).build() + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + @Shared String embeddedDbUri - @Shared - RedisServer redisServer RedisClient redisClient StatefulConnection connection @@ -43,18 +43,12 @@ class LettuceReactiveClientTest extends AgentInstrumentationSpecification { String dbAddr = PEER_HOST + ":" + port + "/" + DB_INDEX embeddedDbUri = "redis://" + dbAddr - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + PEER_HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redisServer = redisServer.withFixedExposedPort(port, 6379) } def setup() { redisClient = RedisClient.create(embeddedDbUri) - println "Using redis: $redisServer.args" redisServer.start() redisClient.setOptions(CLIENT_OPTIONS) @@ -201,7 +195,7 @@ class LettuceReactiveClientTest extends AgentInstrumentationSpecification { attributes { "$SemanticAttributes.DB_SYSTEM.key" "redis" "$SemanticAttributes.DB_STATEMENT.key" "COMMAND" - "lettuce.command.results.count" 157 + "lettuce.command.results.count" { it > 100 } } } } diff --git a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy index 361271ca88..649b83094c 100644 --- a/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy +++ b/instrumentation/lettuce/lettuce-5.0/javaagent/src/test/groovy/LettuceSyncClientTest.groovy @@ -15,7 +15,7 @@ import io.netty.channel.AbstractChannel import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared class LettuceSyncClientTest extends AgentInstrumentationSpecification { @@ -25,6 +25,8 @@ class LettuceSyncClientTest extends AgentInstrumentationSpecification { // Disable autoreconnect so we do not get stray traces popping up on server shutdown public static final ClientOptions CLIENT_OPTIONS = ClientOptions.builder().autoReconnect(false).build() + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + @Shared int port @Shared @@ -38,9 +40,6 @@ class LettuceSyncClientTest extends AgentInstrumentationSpecification { @Shared String embeddedDbUri - @Shared - RedisServer redisServer - @Shared Map testHashMap = [ firstname: "John", @@ -60,12 +59,7 @@ class LettuceSyncClientTest extends AgentInstrumentationSpecification { dbUriNonExistent = "redis://" + dbAddrNonExistent embeddedDbUri = "redis://" + dbAddr - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + PEER_NAME) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redisServer = redisServer.withFixedExposedPort(port, 6379) } def setup() { diff --git a/instrumentation/lettuce/lettuce-5.1/javaagent/lettuce-5.1-javaagent.gradle b/instrumentation/lettuce/lettuce-5.1/javaagent/lettuce-5.1-javaagent.gradle index 87e45b2fec..9f68404a79 100644 --- a/instrumentation/lettuce/lettuce-5.1/javaagent/lettuce-5.1-javaagent.gradle +++ b/instrumentation/lettuce/lettuce-5.1/javaagent/lettuce-5.1-javaagent.gradle @@ -16,7 +16,6 @@ dependencies { testImplementation project(':instrumentation:lettuce:lettuce-5.1:testing') - testImplementation "com.github.kstyrc:embedded-redis:0.6" // Only 5.2+ will have command arguments in the db.statement tag. testLibrary "io.lettuce:lettuce-core:5.2.0.RELEASE" testInstrumentation project(':instrumentation:reactor-3.1:javaagent') diff --git a/instrumentation/lettuce/lettuce-5.1/testing/lettuce-5.1-testing.gradle b/instrumentation/lettuce/lettuce-5.1/testing/lettuce-5.1-testing.gradle index 8845a70c00..bf334a8268 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/lettuce-5.1-testing.gradle +++ b/instrumentation/lettuce/lettuce-5.1/testing/lettuce-5.1-testing.gradle @@ -5,8 +5,7 @@ dependencies { api "io.lettuce:lettuce-core:5.1.0.RELEASE" - api "com.github.kstyrc:embedded-redis:0.6" - + implementation deps.testcontainers implementation deps.guava implementation deps.groovy diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.groovy b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.groovy index 0b9c056835..b28e8807b3 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.groovy +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceAsyncClientTest.groovy @@ -25,7 +25,7 @@ import java.util.function.BiConsumer import java.util.function.BiFunction import java.util.function.Consumer import java.util.function.Function -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared import spock.util.concurrent.AsyncConditions @@ -33,6 +33,8 @@ abstract class AbstractLettuceAsyncClientTest extends InstrumentationSpecificati public static final String HOST = "127.0.0.1" public static final int DB_INDEX = 0 + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + abstract RedisClient createClient(String uri) @Shared @@ -48,9 +50,6 @@ abstract class AbstractLettuceAsyncClientTest extends InstrumentationSpecificati @Shared String embeddedDbUri - @Shared - RedisServer redisServer - @Shared Map testHashMap = [ firstname: "John", @@ -71,18 +70,12 @@ abstract class AbstractLettuceAsyncClientTest extends InstrumentationSpecificati dbUriNonExistent = "redis://" + dbAddrNonExistent embeddedDbUri = "redis://" + dbAddr - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redisServer = redisServer.withFixedExposedPort(port, 6379) } def setup() { redisClient = createClient(embeddedDbUri) - println "Using redis: $redisServer.args" redisServer.start() redisClient.setOptions(LettuceTestUtil.CLIENT_OPTIONS) diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.groovy b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.groovy index 95f085116f..1c975f6f72 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.groovy +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceReactiveClientTest.groovy @@ -17,7 +17,7 @@ import io.opentelemetry.instrumentation.test.InstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import java.util.function.Consumer -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared import spock.util.concurrent.AsyncConditions @@ -25,6 +25,8 @@ abstract class AbstractLettuceReactiveClientTest extends InstrumentationSpecific public static final String HOST = "127.0.0.1" public static final int DB_INDEX = 0 + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + abstract RedisClient createClient(String uri) @Shared @@ -32,9 +34,6 @@ abstract class AbstractLettuceReactiveClientTest extends InstrumentationSpecific @Shared String embeddedDbUri - @Shared - RedisServer redisServer - RedisClient redisClient StatefulConnection connection RedisReactiveCommands reactiveCommands @@ -45,18 +44,12 @@ abstract class AbstractLettuceReactiveClientTest extends InstrumentationSpecific String dbAddr = HOST + ":" + port + "/" + DB_INDEX embeddedDbUri = "redis://" + dbAddr - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redisServer = redisServer.withFixedExposedPort(port, 6379) } def setup() { redisClient = createClient(embeddedDbUri) - println "Using redis: $redisServer.args" redisServer.start() redisClient.setOptions(LettuceTestUtil.CLIENT_OPTIONS) diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.groovy b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.groovy index a5f06761c6..cb2b1ff156 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.groovy +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientAuthTest.groovy @@ -12,13 +12,15 @@ import io.lettuce.core.RedisClient import io.opentelemetry.instrumentation.test.InstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared abstract class AbstractLettuceSyncClientAuthTest extends InstrumentationSpecification { public static final String HOST = "127.0.0.1" public static final int DB_INDEX = 0 + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + abstract RedisClient createClient(String uri) @Shared @@ -30,9 +32,6 @@ abstract class AbstractLettuceSyncClientAuthTest extends InstrumentationSpecific @Shared String embeddedDbUri - @Shared - RedisServer redisServer - RedisClient redisClient def setupSpec() { @@ -41,14 +40,9 @@ abstract class AbstractLettuceSyncClientAuthTest extends InstrumentationSpecific embeddedDbUri = "redis://" + dbAddr password = "password" - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - // Set password - .setting("requirepass " + password) - .port(port).build() + redisServer = redisServer + .withFixedExposedPort(port, 6379) + .withCommand("redis-server", "--requirepass $password") } def setup() { diff --git a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.groovy b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.groovy index 6dd4c29644..0d1653b0e2 100644 --- a/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.groovy +++ b/instrumentation/lettuce/lettuce-5.1/testing/src/main/groovy/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceSyncClientTest.groovy @@ -19,13 +19,15 @@ import io.lettuce.core.api.sync.RedisCommands import io.opentelemetry.instrumentation.test.InstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes -import redis.embedded.RedisServer +import org.testcontainers.containers.FixedHostPortGenericContainer import spock.lang.Shared abstract class AbstractLettuceSyncClientTest extends InstrumentationSpecification { public static final String HOST = "127.0.0.1" public static final int DB_INDEX = 0 + private static FixedHostPortGenericContainer redisServer = new FixedHostPortGenericContainer<>("redis:6.2.3-alpine") + abstract RedisClient createClient(String uri) @Shared @@ -43,9 +45,6 @@ abstract class AbstractLettuceSyncClientTest extends InstrumentationSpecificatio @Shared String embeddedDbLocalhostUri - @Shared - RedisServer redisServer - @Shared Map testHashMap = [ firstname: "John", @@ -66,12 +65,7 @@ abstract class AbstractLettuceSyncClientTest extends InstrumentationSpecificatio embeddedDbUri = "redis://" + dbAddr embeddedDbLocalhostUri = "redis://localhost:" + port + "/" + DB_INDEX - redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind " + HOST) - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + redisServer = redisServer.withFixedExposedPort(port, 6379) } def setup() { diff --git a/instrumentation/rediscala-1.8/javaagent/rediscala-1.8-javaagent.gradle b/instrumentation/rediscala-1.8/javaagent/rediscala-1.8-javaagent.gradle index cf2a71410f..5c3a2a4b5a 100644 --- a/instrumentation/rediscala-1.8/javaagent/rediscala-1.8-javaagent.gradle +++ b/instrumentation/rediscala-1.8/javaagent/rediscala-1.8-javaagent.gradle @@ -46,6 +46,4 @@ muzzle { dependencies { library "com.github.etaty:rediscala_2.11:1.8.0" - - testImplementation "com.github.kstyrc:embedded-redis:0.6" } diff --git a/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy b/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy index 6dd6e5484d..89750f9c6e 100644 --- a/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy +++ b/instrumentation/rediscala-1.8/javaagent/src/test/groovy/RediscalaClientTest.groovy @@ -7,13 +7,12 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT import akka.actor.ActorSystem import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification -import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes +import org.testcontainers.containers.GenericContainer import redis.ByteStringDeserializerDefault import redis.ByteStringSerializerLowPriority import redis.RedisClient import redis.RedisDispatcher -import redis.embedded.RedisServer import scala.Option import scala.concurrent.Await import scala.concurrent.duration.Duration @@ -21,16 +20,10 @@ import spock.lang.Shared class RediscalaClientTest extends AgentInstrumentationSpecification { - @Shared - int port = PortUtils.findOpenPort() + private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379) @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind 127.0.0.1") - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() + int port @Shared ActorSystem system @@ -39,6 +32,8 @@ class RediscalaClientTest extends AgentInstrumentationSpecification { RedisClient redisClient def setupSpec() { + redisServer.start() + port = redisServer.getMappedPort(6379) system = ActorSystem.create() redisClient = new RedisClient("localhost", port, @@ -48,9 +43,6 @@ class RediscalaClientTest extends AgentInstrumentationSpecification { Option.apply(null), system, new RedisDispatcher("rediscala.rediscala-client-worker-dispatcher")) - - println "Using redis: $redisServer.args" - redisServer.start() } def cleanupSpec() { diff --git a/instrumentation/redisson-3.0/javaagent/redisson-3.0-javaagent.gradle b/instrumentation/redisson-3.0/javaagent/redisson-3.0-javaagent.gradle index 890d1e14a9..baad6ff4f1 100644 --- a/instrumentation/redisson-3.0/javaagent/redisson-3.0-javaagent.gradle +++ b/instrumentation/redisson-3.0/javaagent/redisson-3.0-javaagent.gradle @@ -10,7 +10,6 @@ muzzle { dependencies { library "org.redisson:redisson:3.0.0" - testImplementation "com.github.kstyrc:embedded-redis:0.6" } test { diff --git a/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonAsyncClientTest.groovy b/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonAsyncClientTest.groovy index 0104861ee1..6426e0f318 100644 --- a/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonAsyncClientTest.groovy +++ b/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonAsyncClientTest.groovy @@ -6,7 +6,6 @@ import static io.opentelemetry.api.trace.SpanKind.CLIENT import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification -import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import java.util.concurrent.TimeUnit import org.redisson.Redisson @@ -17,33 +16,28 @@ import org.redisson.api.RSet import org.redisson.api.RedissonClient import org.redisson.config.Config import org.redisson.config.SingleServerConfig -import redis.embedded.RedisServer +import org.testcontainers.containers.GenericContainer import spock.lang.Shared class RedissonAsyncClientTest extends AgentInstrumentationSpecification { + private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379) @Shared - int port = PortUtils.findOpenPort() + int port - @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind 127.0.0.1") - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() @Shared RedissonClient redisson @Shared - String address = "localhost:" + port + String address def setupSpec() { + redisServer.start() + port = redisServer.getMappedPort(6379) + address = "localhost:" + port if (Boolean.getBoolean("testLatestDeps")) { // Newer versions of redisson require scheme, older versions forbid it address = "redis://" + address } - println "Using redis: $redisServer.args" - redisServer.start() } def cleanupSpec() { diff --git a/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonClientTest.groovy b/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonClientTest.groovy index 0b81fc268e..305199bcae 100644 --- a/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonClientTest.groovy +++ b/instrumentation/redisson-3.0/javaagent/src/test/groovy/RedissonClientTest.groovy @@ -8,7 +8,6 @@ import static java.util.regex.Pattern.compile import static java.util.regex.Pattern.quote import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification -import io.opentelemetry.instrumentation.test.utils.PortUtils import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import org.redisson.Redisson import org.redisson.api.RAtomicLong @@ -22,33 +21,28 @@ import org.redisson.api.RSet import org.redisson.api.RedissonClient import org.redisson.config.Config import org.redisson.config.SingleServerConfig -import redis.embedded.RedisServer +import org.testcontainers.containers.GenericContainer import spock.lang.Shared class RedissonClientTest extends AgentInstrumentationSpecification { + private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379) @Shared - int port = PortUtils.findOpenPort() + int port - @Shared - RedisServer redisServer = RedisServer.builder() - // bind to localhost to avoid firewall popup - .setting("bind 127.0.0.1") - // set max memory to avoid problems in CI - .setting("maxmemory 128M") - .port(port).build() @Shared RedissonClient redisson @Shared - String address = "localhost:" + port + String address def setupSpec() { + redisServer.start() + port = redisServer.getMappedPort(6379) + address = "localhost:" + port if (Boolean.getBoolean("testLatestDeps")) { // Newer versions of redisson require scheme, older versions forbid it address = "redis://" + address } - println "Using redis: $redisServer.args" - redisServer.start() } def cleanupSpec() {