Package net.kuujo.copycat.event

Source Code of net.kuujo.copycat.event.EventHandlersTest

package net.kuujo.copycat.event;

import net.kuujo.copycat.CopycatState;
import net.kuujo.copycat.cluster.Member;
import net.kuujo.copycat.internal.event.DefaultEventHandlers;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.util.Arrays;
import java.util.HashSet;
import java.util.concurrent.atomic.AtomicBoolean;

/**
* Default event handlers test.
*
* @author <a href="http://github.com/kuujo">Jordan Halterman</a>
*/
@Test
public class EventHandlersTest {
  private DefaultEventHandlers handlers;

  @BeforeMethod
  public void beforeMethod() {
    handlers = new DefaultEventHandlers();
  }

  @AfterMethod
  public void afterMethod() {
    handlers = null;
  }

  /**
   * Tests registering and unregistering a start handler by method.
   */
  public void testRegisterAndUnregisterStartHandlerByMethod() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<StartEvent> handler = (event) -> succeeded.set(true);
    handlers.start().registerHandler(handler);
    handlers.start().handle(new StartEvent());
    Assert.assertTrue(succeeded.get());
    handlers.start().unregisterHandler(handler);
    succeeded.set(false);
    handlers.start().handle(new StartEvent());
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a start handler by event.
   */
  public void testRegisterAndUnregisterStartHandlerByEvent() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<StartEvent> handler = (event) -> succeeded.set(true);
    handlers.event(StartEvent.class).registerHandler(handler);
    handlers.event(StartEvent.class).handle(new StartEvent());
    Assert.assertTrue(succeeded.get());
    handlers.event(StartEvent.class).unregisterHandler(handler);
    succeeded.set(false);
    handlers.event(StartEvent.class).handle(new StartEvent());
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a stop handler by method.
   */
  public void testRegisterAndUnregisterStopHandlerByMethod() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<StopEvent> handler = (event) -> succeeded.set(true);
    handlers.stop().registerHandler(handler);
    handlers.stop().handle(new StopEvent());
    Assert.assertTrue(succeeded.get());
    handlers.stop().unregisterHandler(handler);
    succeeded.set(false);
    handlers.stop().handle(new StopEvent());
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a stop handler by event.
   */
  public void testRegisterAndUnregisterStopHandlerByEvent() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<StopEvent> handler = (event) -> succeeded.set(true);
    handlers.event(StopEvent.class).registerHandler(handler);
    handlers.event(StopEvent.class).handle(new StopEvent());
    Assert.assertTrue(succeeded.get());
    handlers.event(StopEvent.class).unregisterHandler(handler);
    succeeded.set(false);
    handlers.event(StopEvent.class).handle(new StopEvent());
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a vote cast handler by method.
   */
  public void testRegisterAndUnregisterVoteCastHandlerByMethod() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<VoteCastEvent> handler = (event) -> succeeded.set(true);
    handlers.voteCast().registerHandler(handler);
    handlers.voteCast().handle(new VoteCastEvent(1, new Member("foo")));
    Assert.assertTrue(succeeded.get());
    handlers.voteCast().unregisterHandler(handler);
    succeeded.set(false);
    handlers.voteCast().handle(new VoteCastEvent(1, new Member("foo")));
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a vote cast handler by event.
   */
  public void testRegisterAndUnregisterVoteCastHandlerByEvent() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<VoteCastEvent> handler = (event) -> succeeded.set(true);
    handlers.event(VoteCastEvent.class).registerHandler(handler);
    handlers.event(VoteCastEvent.class).handle(new VoteCastEvent(1, new Member("foo")));
    Assert.assertTrue(succeeded.get());
    handlers.event(VoteCastEvent.class).unregisterHandler(handler);
    succeeded.set(false);
    handlers.event(VoteCastEvent.class).handle(new VoteCastEvent(1, new Member("foo")));
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a leader elect handler by method.
   */
  public void testRegisterAndUnregisterLeaderElectHandlerByMethod() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<LeaderElectEvent> handler = (event) -> succeeded.set(true);
    handlers.leaderElect().registerHandler(handler);
    handlers.leaderElect().handle(new LeaderElectEvent(1, new Member("foo")));
    Assert.assertTrue(succeeded.get());
    handlers.leaderElect().unregisterHandler(handler);
    succeeded.set(false);
    handlers.leaderElect().handle(new LeaderElectEvent(1, new Member("foo")));
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a leader elect handler by event.
   */
  public void testRegisterAndUnregisterLeaderElectHandlerByEvent() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<LeaderElectEvent> handler = (event) -> succeeded.set(true);
    handlers.event(LeaderElectEvent.class).registerHandler(handler);
    handlers.event(LeaderElectEvent.class).handle(new LeaderElectEvent(1, new Member("foo")));
    Assert.assertTrue(succeeded.get());
    handlers.event(LeaderElectEvent.class).unregisterHandler(handler);
    succeeded.set(false);
    handlers.event(LeaderElectEvent.class).handle(new LeaderElectEvent(1, new Member("foo")));
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a membership change handler by method.
   */
  public void testRegisterAndUnregisterMembershipChangeHandlerByMethod() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<MembershipChangeEvent> handler = (event) -> succeeded.set(true);
    handlers.membershipChange().registerHandler(handler);
    handlers.membershipChange().handle(new MembershipChangeEvent(new HashSet<Member>(Arrays.asList(new Member("foo"), new Member("bar"), new Member("baz")))));
    Assert.assertTrue(succeeded.get());
    handlers.membershipChange().unregisterHandler(handler);
    succeeded.set(false);
    handlers.membershipChange().handle(new MembershipChangeEvent(new HashSet<Member>(Arrays.asList(new Member("foo"), new Member("bar"), new Member("baz")))));
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a membership change handler by event.
   */
  public void testRegisterAndUnregisterMembershipChangeHandlerByEvent() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<MembershipChangeEvent> handler = (event) -> succeeded.set(true);
    handlers.event(MembershipChangeEvent.class).registerHandler(handler);
    handlers.event(MembershipChangeEvent.class).handle(new MembershipChangeEvent(new HashSet<Member>(Arrays.asList(new Member("foo"), new Member("bar"), new Member("baz")))));
    Assert.assertTrue(succeeded.get());
    handlers.event(MembershipChangeEvent.class).unregisterHandler(handler);
    succeeded.set(false);
    handlers.event(MembershipChangeEvent.class).handle(new MembershipChangeEvent(new HashSet<Member>(Arrays.asList(new Member("foo"), new Member("bar"), new Member("baz")))));
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a state change handler by method.
   */
  public void testRegisterAndUnregisterStateChangeHandlerByMethod() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<StateChangeEvent> handler = (event) -> succeeded.set(true);
    handlers.stateChange().registerHandler(handler);
    handlers.stateChange().handle(new StateChangeEvent(CopycatState.LEADER));
    Assert.assertTrue(succeeded.get());
    handlers.stateChange().unregisterHandler(handler);
    succeeded.set(false);
    handlers.stateChange().handle(new StateChangeEvent(CopycatState.LEADER));
    Assert.assertFalse(succeeded.get());
  }

  /**
   * Tests registering and unregistering a state change handler by event.
   */
  public void testRegisterAndUnregisterStateChangeHandlerByEvent() {
    AtomicBoolean succeeded = new AtomicBoolean();
    EventHandler<StateChangeEvent> handler = (event) -> succeeded.set(true);
    handlers.event(StateChangeEvent.class).registerHandler(handler);
    handlers.event(StateChangeEvent.class).handle(new StateChangeEvent(CopycatState.LEADER));
    Assert.assertTrue(succeeded.get());
    handlers.event(StateChangeEvent.class).unregisterHandler(handler);
    succeeded.set(false);
    handlers.event(StateChangeEvent.class).handle(new StateChangeEvent(CopycatState.LEADER));
    Assert.assertFalse(succeeded.get());
  }

}
TOP

Related Classes of net.kuujo.copycat.event.EventHandlersTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.