Search in sources :

Example 6 with OrbTrackerMemberData

use of org.goldenorb.client.OrbTrackerMemberData in project goldenorb by jzachr.

the class TestLeaderGroupMemberMonitor method testMulitpleChanges.

/**
   * Test multiple changes to a single member node
   * 
   * @throws OrbZKFailure
   * @throws InterruptedException
   */
public void testMulitpleChanges() throws OrbZKFailure, InterruptedException {
    CountDownLatch cdlatch = new CountDownLatch(1);
    TServer server = new TServer(cdlatch);
    OrbTrackerMember otm = new OrbTrackerMember();
    otm.setAvailablePartitions(1);
    otm.setHostname("TEST");
    otm.setInUsePartitions(1);
    otm.setLeader(true);
    otm.setPartitionCapacity(1);
    otm.setPort(1);
    otm.setReservedPartitions(1);
    String path = ZookeeperUtils.tryToCreateNode(zk, leaderGroupPath + "/member", otm, CreateMode.EPHEMERAL_SEQUENTIAL);
    new LeaderGroupMemberMonitor(path, zk, path.split("/")[3], server);
    cdlatch.await();
    Map<String, OrbTrackerMemberData> map = server.getMemberData();
    assertTrue(map.size() == 1);
    Set<String> keys = map.keySet();
    assertTrue(keys.size() == 1);
    String nodeName = "";
    for (String key : keys) {
        nodeName = key;
    }
    assertTrue(nodeName.equals(path.split("/")[3]));
    assertTrue(map.get(nodeName).getAvailablePartitions() == otm.getAvailablePartitions());
    assertTrue(map.get(nodeName).getPort() == otm.getPort());
    otm.setAvailablePartitions(9);
    cdlatch = new CountDownLatch(1);
    server.setLatcher(cdlatch);
    ZookeeperUtils.setNodeData(zk, path, otm);
    cdlatch.await();
    map = server.getMemberData();
    assertTrue(map.size() == 1);
    keys = map.keySet();
    assertTrue(keys.size() == 1);
    nodeName = "";
    for (String key : keys) {
        nodeName = key;
    }
    assertTrue(nodeName.equals(path.split("/")[3]));
    assertTrue(map.get(nodeName).getAvailablePartitions() == otm.getAvailablePartitions());
    cdlatch = new CountDownLatch(1);
    server.setLatcher(cdlatch);
    otm.setHostname("Hostname");
    ZookeeperUtils.setNodeData(zk, path, otm);
    cdlatch.await();
    map = server.getMemberData();
    assertTrue(map.size() == 1);
    keys = map.keySet();
    assertTrue(keys.size() == 1);
    nodeName = "";
    for (String key : keys) {
        nodeName = key;
    }
    assertTrue(nodeName.equals(path.split("/")[3]));
    assertTrue(map.get(nodeName).getHostname() == otm.getHostname());
    cdlatch = new CountDownLatch(1);
    server.setLatcher(cdlatch);
    otm.setHostname("Host");
    ZookeeperUtils.setNodeData(zk, path, otm);
    cdlatch.await();
    map = server.getMemberData();
    assertTrue(map.size() == 1);
    keys = map.keySet();
    assertTrue(keys.size() == 1);
    nodeName = "";
    for (String key : keys) {
        nodeName = key;
    }
    assertTrue(nodeName.equals(path.split("/")[3]));
    assertTrue(map.get(nodeName).getHostname() == otm.getHostname());
}
Also used : OrbTrackerMemberData(org.goldenorb.client.OrbTrackerMemberData) OrbTrackerMember(org.goldenorb.jet.OrbTrackerMember) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 7 with OrbTrackerMemberData

use of org.goldenorb.client.OrbTrackerMemberData in project goldenorb by jzachr.

the class TestLeaderGroupMonitor method testDeleteAndAdd.

@Test
public void testDeleteAndAdd() throws OrbZKFailure, InterruptedException, KeeperException {
    int num_created = 10;
    int num_deleted = 7;
    CountDownLatch latch = new CountDownLatch(num_created);
    TServer server = new TServer(latch);
    Map<String, OrbTrackerMemberData> map = server.getMemberData();
    assertTrue(map.size() == 0);
    new LeaderGroupMonitor(leaderGroupPath, server, zk);
    for (int i = 0; i < num_created; i++) {
        OrbTrackerMember otm = new OrbTrackerMember();
        otm.setAvailablePartitions(1);
        otm.setHostname("abc");
        otm.setInUsePartitions(1);
        otm.setLeader(false);
        otm.setPartitionCapacity(1);
        otm.setPort(1);
        otm.setReservedPartitions(1);
        ZookeeperUtils.tryToCreateNode(zk, leaderGroupPath + "/member", otm, CreateMode.EPHEMERAL_SEQUENTIAL);
    }
    latch.await();
    map = server.getMemberData();
    assertTrue(map.size() == num_created);
    latch = new CountDownLatch(num_deleted);
    server.setLatcher(latch);
    List<String> children = zk.getChildren(leaderGroupPath, false);
    int i = 0;
    for (String child : children) {
        if (i < num_deleted) {
            ZookeeperUtils.deleteNodeIfEmpty(zk, leaderGroupPath + "/" + child);
        }
        i++;
    }
    latch.await();
    map = server.getMemberData();
    assertEquals(num_created - num_deleted, map.size());
}
Also used : OrbTrackerMemberData(org.goldenorb.client.OrbTrackerMemberData) OrbTrackerMember(org.goldenorb.jet.OrbTrackerMember) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 8 with OrbTrackerMemberData

use of org.goldenorb.client.OrbTrackerMemberData in project goldenorb by jzachr.

the class TestOrbTrackerMemberDataServiceImpl method testGetOrbTrackerMemberData.

@Test
public void testGetOrbTrackerMemberData() throws OrbZKFailure, ZooKeeperConnectionException, WatcherException, NodeDoesNotExistException, InterruptedException, KeeperException {
    int num_nodes = 10;
    OrbTrackerMember[] members = new OrbTrackerMember[num_nodes];
    for (int i = 0; i < num_nodes; i++) {
        members[i] = new OrbTrackerMember();
        members[i].setAvailablePartitions(i);
        members[i].setHostname("host");
        members[i].setInUsePartitions(i);
        members[i].setLeader(false);
        members[i].setPartitionCapacity(i);
        members[i].setPort(i);
        members[i].setReservedPartitions(i);
        ZookeeperUtils.tryToCreateNode(zk, leaderGroupPath + "/member", members[i], CreateMode.EPHEMERAL_SEQUENTIAL);
    }
    OrbTrackerMemberDataServiceImpl server = new OrbTrackerMemberDataServiceImpl();
    CountDownLatch jobs = new CountDownLatch(1);
    CountDownLatch update = new CountDownLatch(num_nodes);
    CountDownLatch remove = new CountDownLatch(3);
    server.enterTestingMode(jobs, remove, update);
    OrbTrackerMemberData[] memberData = server.getOrbTrackerMemberData();
    update.await();
    List<String> nodes = zk.getChildren(leaderGroupPath, false);
    assertEquals(nodes.size(), memberData.length);
    update = new CountDownLatch(2);
    server.setUpdateLatch(update);
    for (int i = 0; i < 2; i++) {
        members[i] = new OrbTrackerMember();
        members[i].setAvailablePartitions(i);
        members[i].setHostname("host");
        members[i].setInUsePartitions(i);
        members[i].setLeader(false);
        members[i].setPartitionCapacity(i);
        members[i].setPort(i);
        members[i].setReservedPartitions(i);
        ZookeeperUtils.tryToCreateNode(zk, leaderGroupPath + "/member", members[i], CreateMode.EPHEMERAL_SEQUENTIAL);
    }
    update.await();
    memberData = server.getOrbTrackerMemberData();
    nodes = zk.getChildren(leaderGroupPath, false);
    assertEquals(nodes.size(), memberData.length);
    remove = new CountDownLatch(4);
    server.setRemoveLatch(remove);
    int i = 0;
    for (String node : nodes) {
        if (i < 4) {
            ZookeeperUtils.deleteNodeIfEmpty(zk, leaderGroupPath + "/" + node);
        }
        i++;
    }
    remove.await();
    memberData = server.getOrbTrackerMemberData();
    nodes = zk.getChildren(leaderGroupPath, false);
    assertEquals(nodes.size(), memberData.length);
}
Also used : OrbTrackerMemberData(org.goldenorb.client.OrbTrackerMemberData) OrbTrackerMember(org.goldenorb.jet.OrbTrackerMember) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Aggregations

OrbTrackerMemberData (org.goldenorb.client.OrbTrackerMemberData)8 CountDownLatch (java.util.concurrent.CountDownLatch)7 OrbTrackerMember (org.goldenorb.jet.OrbTrackerMember)6 Test (org.junit.Test)6 IOException (java.io.IOException)1 NodeDoesNotExistException (org.goldenorb.client.NodeDoesNotExistException)1 WatcherException (org.goldenorb.client.WatcherException)1 ZooKeeperConnectionException (org.goldenorb.client.ZooKeeperConnectionException)1 OrbZKFailure (org.goldenorb.zookeeper.OrbZKFailure)1