Package org.prevayler.cluster

Source Code of org.prevayler.cluster.NodeTest

package org.prevayler.cluster;

import junit.framework.TestCase;
import org.prevayler.cluster.ClusterListener;
import org.prevayler.cluster.Node;

import java.util.ArrayList;
import java.util.List;

public class NodeTest extends TestCase {
  private Node node;
  private List receivedMessages = new ArrayList();

  protected void setUp() throws Exception {
    super.setUp();
    node = new Node();
    receivedMessages = new ArrayList();
  }

  protected void tearDown() throws Exception {
    super.tearDown();
    node.shutdown();
  }

  public void testFindNodes() throws Exception {
    assertEquals(1, node.getNumberOfNodesInCluster());
    Node node2 = createNodeAndWait();
    assertEquals(2, node.getNumberOfNodesInCluster());
    node2.shutdown();
    assertEquals(1, node.getNumberOfNodesInCluster());
  }

  public void testAssignMaster() throws Exception {
    assertEquals(node.getAddress(), node.getMasterAddress());
    Node node2 = createNodeAndWait();
    assertEquals(node.getAddress(), node2.getMasterAddress());
    assertFalse(node.getAddress().equals(node2.getAddress()));
    node.shutdown();
    assertEquals(node2.getAddress(), node2.getMasterAddress());
    node2.shutdown();
  }

  public void testMultipleNodes() throws Exception {
    Node node2 = createNodeAndWait();
    assertEquals(node.getAddress(), node.getMasterAddress());
    assertEquals(node.getAddress(), node2.getMasterAddress());
    node2.shutdown();
  }

  public void testBroadCast() throws Exception {
    Node node2 = createNodeAndWait();
    node2.setListener(createListAddListener());
    String message = "Hello World";
    node.broadcast(message);
    assertEquals(1, receivedMessages.size());
    assertEquals(message, receivedMessages.get(0));
    node2.shutdown();
  }

  public void testMultipleMessages() throws Exception {
    Node node2 = createNodeAndWait();
    node.setListener(createListAddListener());
    int numberOfMessages = 100;
    for (int i = 0; i < numberOfMessages; i++) {
      if (numberOfMessages % 2 == 0) {
        node.broadcast(new Integer(i));
      } else {
        node2.broadcast(new Integer(i));
      }
    }
    node2.shutdown();
    assertEquals(100, receivedMessages.size());
    for (int i = 0; i < numberOfMessages; i++) {
      assertEquals(new Integer(i), receivedMessages.get(i));
    }
  }

  private ClusterListener createListAddListener() {
    return new ClusterListener() {
      public Object receive(Object message) {
        receivedMessages.add(message);
        return null;
      }

      public Object getState() {
        return null;
      }

      public void setState(Object state) {
      }
    };
  }

  private Node createNodeAndWait() throws InterruptedException {
    Node node = new Node();
    node.waitForConnection();
    return node;
  }
}
TOP

Related Classes of org.prevayler.cluster.NodeTest

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.