DefaultValuesTest.java

package redis.clients.jedis.mcf;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

import java.time.Duration;

import org.junit.jupiter.api.Test;
import redis.clients.jedis.DefaultJedisClientConfig;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisClientConfig;
import redis.clients.jedis.MultiDbConfig;

public class DefaultValuesTest {

  HostAndPort fakeEndpoint = new HostAndPort("fake", 6379);
  JedisClientConfig config = DefaultJedisClientConfig.builder().build();

  @Test
  void testDefaultValuesInConfig() {

    MultiDbConfig.DatabaseConfig databaseConfig = MultiDbConfig.DatabaseConfig
        .builder(fakeEndpoint, config).build();
    MultiDbConfig multiConfig = new MultiDbConfig.Builder(
        new MultiDbConfig.DatabaseConfig[] { databaseConfig }).build();

    // check for grace period
    assertEquals(60000, multiConfig.getGracePeriod());

    // check for database config
    assertEquals(databaseConfig, multiConfig.getDatabaseConfigs()[0]);

    // check healthchecks enabled
    assertNotNull(databaseConfig.getHealthCheckStrategySupplier());

    // check default healthcheck strategy is PingStrategy
    assertEquals(PingStrategy.DEFAULT, databaseConfig.getHealthCheckStrategySupplier());

    // check number of probes
    assertEquals(3,
      databaseConfig.getHealthCheckStrategySupplier().get(fakeEndpoint, config).getNumProbes());

    assertEquals(500, databaseConfig.getHealthCheckStrategySupplier().get(fakeEndpoint, config)
        .getDelayInBetweenProbes());

    assertEquals(ProbingPolicy.BuiltIn.ALL_SUCCESS,
      databaseConfig.getHealthCheckStrategySupplier().get(fakeEndpoint, config).getPolicy());

    // check health check interval
    assertEquals(5000,
      databaseConfig.getHealthCheckStrategySupplier().get(fakeEndpoint, config).getInterval());

    // check lag aware tolerance
    LagAwareStrategy.Config lagAwareConfig = LagAwareStrategy.Config
        .builder(fakeEndpoint, config.getCredentialsProvider()).build();
    assertEquals(Duration.ofMillis(5000), lagAwareConfig.getAvailabilityLagTolerance());

    // check CB failure rate threshold
    assertEquals(10, multiConfig.getFailureDetector().getFailureRateThreshold());

    // check CB sliding window size
    assertEquals(2, multiConfig.getFailureDetector().getSlidingWindowSize());

    // check CB number of failures threshold
    assertEquals(1000, multiConfig.getFailureDetector().getMinNumOfFailures());

    // check failback check interval
    assertEquals(120000, multiConfig.getFailbackCheckInterval());

    // check failover max attempts before give up
    assertEquals(10, multiConfig.getMaxNumFailoverAttempts());

    // check delay between failover attempts
    assertEquals(12000, multiConfig.getDelayInBetweenFailoverAttempts());

  }
}