RedisClusterClientSideCacheTest.java

package redis.clients.jedis.csc;

import io.redis.test.annotations.ConditionalOnEnv;
import io.redis.test.annotations.SinceRedisVersion;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Supplier;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.BeforeAll;
import redis.clients.jedis.*;
import redis.clients.jedis.util.EnvCondition;
import redis.clients.jedis.util.RedisVersionCondition;
import redis.clients.jedis.util.TestEnvUtil;

@SinceRedisVersion(value = "7.4.0", message = "Jedis client-side caching is only supported with Redis 7.4 or later.")
@Tag("integration")
@ConditionalOnEnv(value = TestEnvUtil.ENV_OSS_SOURCE, enabled = false)
public class RedisClusterClientSideCacheTest extends UnifiedJedisClientSideCacheTestBase {

  protected static EndpointConfig endpoint;

  private static Set<HostAndPort> hnp;

  private static final Supplier<JedisClientConfig> clientConfig
      = () -> endpoint.getClientConfigBuilder().resp3().build();

  private static final Supplier<GenericObjectPoolConfig<Connection>> singleConnectionPoolConfig
      = () -> {
        ConnectionPoolConfig poolConfig = new ConnectionPoolConfig();
        poolConfig.setMaxTotal(1);
        return poolConfig;
      };

  @RegisterExtension
  public static EnvCondition envCondition = new EnvCondition();

  @RegisterExtension
  public static RedisVersionCondition versionCondition = new RedisVersionCondition(
      () -> Endpoints.getRedisEndpoint("cluster-stable"));

  @BeforeAll
  public static void prepare() {
    endpoint = Endpoints.getRedisEndpoint("cluster-stable");
    hnp = new HashSet<>(endpoint.getHostsAndPorts());
  }

  @Override
  protected RedisClusterClient createRegularJedis() {
    return RedisClusterClient.builder()
        .nodes(hnp)
        .clientConfig(clientConfig.get())
        .build();
  }

  @Override
  protected RedisClusterClient createCachedJedis(CacheConfig cacheConfig) {
    return RedisClusterClient.builder()
        .nodes(hnp)
        .clientConfig(clientConfig.get())
        .cacheConfig(cacheConfig)
        .build();
  }

}