
com.redis.testcontainers.junit.RedisTestContext Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testcontainers-redis-junit Show documentation
Show all versions of testcontainers-redis-junit Show documentation
"Testcontainers Redis :: JUnit Jupiter Extension"
package com.redis.testcontainers.junit;
import com.redis.lettucemod.RedisModulesClient;
import com.redis.lettucemod.api.StatefulRedisModulesConnection;
import com.redis.lettucemod.api.async.RedisModulesAsyncCommands;
import com.redis.lettucemod.api.reactive.RedisModulesReactiveCommands;
import com.redis.lettucemod.api.sync.RedisModulesCommands;
import com.redis.lettucemod.cluster.RedisModulesClusterClient;
import com.redis.testcontainers.RedisServer;
import io.lettuce.core.AbstractRedisClient;
import io.lettuce.core.pubsub.StatefulRedisPubSubConnection;
public class RedisTestContext implements AutoCloseable {
private final RedisServer server;
private AbstractRedisClient client;
private StatefulRedisModulesConnection connection;
private StatefulRedisPubSubConnection pubSubConnection;
public RedisTestContext(RedisServer server) {
this.server = server;
}
@Override
public String toString() {
return server.toString();
}
public RedisServer getServer() {
return server;
}
public AbstractRedisClient getClient() {
if (client == null) {
String uri = server.getRedisURI();
client = server.isCluster() ? RedisModulesClusterClient.create(uri) : RedisModulesClient.create(uri);
}
return client;
}
public StatefulRedisModulesConnection getConnection() {
if (connection == null) {
connection = connection();
}
return connection;
}
public StatefulRedisPubSubConnection getPubSubConnection() {
if (pubSubConnection == null) {
pubSubConnection = pubSubConnection();
}
return pubSubConnection;
}
private StatefulRedisModulesConnection connection() {
if (server.isCluster()) {
return ((RedisModulesClusterClient) getClient()).connect();
}
return ((RedisModulesClient) getClient()).connect();
}
private StatefulRedisPubSubConnection pubSubConnection() {
if (server.isCluster()) {
return ((RedisModulesClusterClient) getClient()).connectPubSub();
}
return ((RedisModulesClient) getClient()).connectPubSub();
}
public RedisModulesCommands sync() {
return getConnection().sync();
}
public RedisModulesAsyncCommands async() {
return getConnection().async();
}
public RedisModulesReactiveCommands reactive() {
return getConnection().reactive();
}
@Override
public void close() {
if (pubSubConnection != null) {
pubSubConnection.close();
pubSubConnection = null;
}
if (connection != null) {
connection.close();
connection = null;
}
if (client != null) {
client.shutdown();
client.getResources().shutdown();
client = null;
}
}
public RedisModulesClient getRedisClient() {
return (RedisModulesClient) getClient();
}
public RedisModulesClusterClient getRedisClusterClient() {
return (RedisModulesClusterClient) getClient();
}
public boolean isCluster() {
return server.isCluster();
}
public String getRedisURI() {
return server.getRedisURI();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy