package com.lambdaworks.redis.cluster; import static org.assertj.core.api.Assertions.assertThat; import java.util.concurrent.TimeUnit; import org.junit.Test; import com.lambdaworks.redis.cluster.ClusterTopologyRefreshOptions.RefreshTrigger; /** * @author Mark Paluch */ public class ClusterTopologyRefreshOptionsTest { @Test public void testBuilder() throws Exception { ClusterTopologyRefreshOptions options = ClusterTopologyRefreshOptions.builder()// .enablePeriodicRefresh(true).refreshPeriod(10, TimeUnit.MINUTES)// .dynamicRefreshSources(false) // .enableAdaptiveRefreshTrigger(RefreshTrigger.MOVED_REDIRECT)// .adaptiveRefreshTriggersTimeout(15, TimeUnit.MILLISECONDS)// .closeStaleConnections(false)// .refreshTriggersReconnectAttempts(2)// .build(); assertThat(options.getRefreshPeriod()).isEqualTo(10); assertThat(options.getRefreshPeriodUnit()).isEqualTo(TimeUnit.MINUTES); assertThat(options.isCloseStaleConnections()).isEqualTo(false); assertThat(options.isPeriodicRefreshEnabled()).isTrue(); assertThat(options.useDynamicRefreshSources()).isFalse(); assertThat(options.getAdaptiveRefreshTimeout()).isEqualTo(15); assertThat(options.getAdaptiveRefreshTimeoutUnit()).isEqualTo(TimeUnit.MILLISECONDS); assertThat(options.getAdaptiveRefreshTriggers()).containsOnly(RefreshTrigger.MOVED_REDIRECT); assertThat(options.getRefreshTriggersReconnectAttempts()).isEqualTo(2); } @Test public void testCopy() throws Exception { ClusterTopologyRefreshOptions master = ClusterTopologyRefreshOptions.builder()// .enablePeriodicRefresh(true).refreshPeriod(10, TimeUnit.MINUTES)// .dynamicRefreshSources(false) // .enableAdaptiveRefreshTrigger(RefreshTrigger.MOVED_REDIRECT)// .adaptiveRefreshTriggersTimeout(15, TimeUnit.MILLISECONDS)// .closeStaleConnections(false)// .refreshTriggersReconnectAttempts(2)// .build(); ClusterTopologyRefreshOptions options = ClusterTopologyRefreshOptions.copyOf(master); assertThat(options.getRefreshPeriod()).isEqualTo(10); assertThat(options.getRefreshPeriodUnit()).isEqualTo(TimeUnit.MINUTES); assertThat(options.isCloseStaleConnections()).isEqualTo(false); assertThat(options.isPeriodicRefreshEnabled()).isTrue(); assertThat(options.useDynamicRefreshSources()).isFalse(); assertThat(options.getAdaptiveRefreshTimeout()).isEqualTo(15); assertThat(options.getAdaptiveRefreshTimeoutUnit()).isEqualTo(TimeUnit.MILLISECONDS); assertThat(options.getAdaptiveRefreshTriggers()).containsOnly(RefreshTrigger.MOVED_REDIRECT); assertThat(options.getRefreshTriggersReconnectAttempts()).isEqualTo(2); } @Test public void testDefault() throws Exception { ClusterTopologyRefreshOptions options = ClusterTopologyRefreshOptions.create(); assertThat(options.getRefreshPeriod()).isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD); assertThat(options.getRefreshPeriodUnit()).isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD_UNIT); assertThat(options.isCloseStaleConnections()).isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_CLOSE_STALE_CONNECTIONS); assertThat(options.isPeriodicRefreshEnabled()).isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_PERIODIC_REFRESH_ENABLED).isFalse(); assertThat(options.useDynamicRefreshSources()).isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_DYNAMIC_REFRESH_SOURCES) .isTrue(); assertThat(options.getAdaptiveRefreshTimeout()) .isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_ADAPTIVE_REFRESH_TIMEOUT); assertThat(options.getAdaptiveRefreshTimeoutUnit()) .isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_ADAPTIVE_REFRESH_TIMEOUT_UNIT); assertThat(options.getAdaptiveRefreshTriggers()) .isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_ADAPTIVE_REFRESH_TRIGGERS); assertThat(options.getRefreshTriggersReconnectAttempts()) .isEqualTo(ClusterTopologyRefreshOptions.DEFAULT_REFRESH_TRIGGERS_RECONNECT_ATTEMPTS); } @Test public void testEnabled() throws Exception { ClusterTopologyRefreshOptions options = ClusterTopologyRefreshOptions.enabled(); assertThat(options.isPeriodicRefreshEnabled()).isTrue(); assertThat(options.useDynamicRefreshSources()).isTrue(); assertThat(options.getAdaptiveRefreshTriggers()).contains(RefreshTrigger.ASK_REDIRECT, RefreshTrigger.MOVED_REDIRECT, RefreshTrigger.PERSISTENT_RECONNECTS); } }