MaintenanceEventTestSupport.java

package redis.clients.jedis.sch;

import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;

import redis.clients.jedis.ConnectionTestHelper;
import redis.clients.jedis.MaintenanceNotificationsConfig;
import redis.clients.jedis.PushConsumer;

/**
 * Shared helpers for SCH (Smart Client Handoff) abstract test bases. Centralizes config-builder
 * shortcuts and Hamcrest matchers that cross the {@code redis.clients.jedis} package boundary via
 * {@link ConnectionTestHelper}.
 */
public final class MaintenanceEventTestSupport {

  private MaintenanceEventTestSupport() {
  }

  /** Maintenance notifications enabled (AUTO with default window backstop). */
  public static MaintenanceNotificationsConfig enabledMaintConfig() {
    return MaintenanceNotificationsConfig.builder().build();
  }

  /** Matches a {@link redis.clients.jedis.MaintenanceEventConsumer} instance. */
  public static Matcher<? super PushConsumer> isMaintenanceConsumer() {
    return new TypeSafeMatcher<PushConsumer>() {
      @Override
      protected boolean matchesSafely(PushConsumer consumer) {
        return ConnectionTestHelper.isMaintenanceEventConsumer(consumer);
      }

      @Override
      public void describeTo(Description description) {
        description.appendText("a MaintenanceEventConsumer");
      }
    };
  }

  /** Matches the connection's gated pub/sub consumer. */
  public static Matcher<? super PushConsumer> isPubSubConsumer() {
    return new TypeSafeMatcher<PushConsumer>() {
      @Override
      protected boolean matchesSafely(PushConsumer consumer) {
        return ConnectionTestHelper.isPubSubPushConsumer(consumer);
      }

      @Override
      public void describeTo(Description description) {
        description.appendText("a PubSubPushConsumer");
      }
    };
  }
}