Search in sources :

Example 6 with BBoxDBInstance

use of org.bboxdb.distribution.membership.BBoxDBInstance in project bboxdb by jnidzwetzki.

the class TestDistributedInstanceManager method testRegisterUnregister.

/**
 * test unregister
 */
@Test(timeout = 60000)
public void testRegisterUnregister() throws InterruptedException {
    final BBoxDBInstance instance = new BBoxDBInstance("node1:5050");
    final ZookeeperClient zookeeperClient = getNewZookeeperClient(instance);
    BBoxDBInstanceManager.getInstance().startMembershipObserver(zookeeperClient);
    Assert.assertTrue(zookeeperClient.isConnected());
    Thread.sleep(1000);
    final BBoxDBInstanceManager distributedInstanceManager = BBoxDBInstanceManager.getInstance();
    Assert.assertFalse(distributedInstanceManager.getInstances().isEmpty());
    Assert.assertEquals(1, distributedInstanceManager.getInstances().size());
    Assert.assertEquals(instance.getInetSocketAddress(), distributedInstanceManager.getInstances().get(0).getInetSocketAddress());
    zookeeperClient.shutdown();
    Assert.assertTrue(distributedInstanceManager.getInstances().isEmpty());
}
Also used : ZookeeperClient(org.bboxdb.distribution.zookeeper.ZookeeperClient) BBoxDBInstanceManager(org.bboxdb.distribution.membership.BBoxDBInstanceManager) BBoxDBInstance(org.bboxdb.distribution.membership.BBoxDBInstance) Test(org.junit.Test)

Example 7 with BBoxDBInstance

use of org.bboxdb.distribution.membership.BBoxDBInstance in project bboxdb by jnidzwetzki.

the class TestDistributedInstanceManager method testRegisterInstance2.

/**
 * One instance is known
 */
@Test(timeout = 60000)
public void testRegisterInstance2() throws InterruptedException {
    final BBoxDBInstance instance = new BBoxDBInstance("node1:5050");
    final ZookeeperClient zookeeperClient = getNewZookeeperClient(instance);
    BBoxDBInstanceManager.getInstance().startMembershipObserver(zookeeperClient);
    Assert.assertTrue(zookeeperClient.isConnected());
    Thread.sleep(1000);
    final BBoxDBInstanceManager distributedInstanceManager = BBoxDBInstanceManager.getInstance();
    Assert.assertFalse(distributedInstanceManager.getInstances().isEmpty());
    Assert.assertEquals(1, distributedInstanceManager.getInstances().size());
    Assert.assertEquals(instance.getInetSocketAddress(), distributedInstanceManager.getInstances().get(0).getInetSocketAddress());
    zookeeperClient.shutdown();
}
Also used : ZookeeperClient(org.bboxdb.distribution.zookeeper.ZookeeperClient) BBoxDBInstanceManager(org.bboxdb.distribution.membership.BBoxDBInstanceManager) BBoxDBInstance(org.bboxdb.distribution.membership.BBoxDBInstance) Test(org.junit.Test)

Example 8 with BBoxDBInstance

use of org.bboxdb.distribution.membership.BBoxDBInstance in project bboxdb by jnidzwetzki.

the class TestDistributedInstanceManager method testChangedEventOnChange.

/**
 * Test changed event generation
 * @throws InterruptedException
 * @throws ZookeeperException
 */
@Test(timeout = 30000)
public void testChangedEventOnChange() throws InterruptedException, ZookeeperException {
    final BBoxDBInstanceManager distributedInstanceManager = BBoxDBInstanceManager.getInstance();
    final BBoxDBInstance instance1 = new BBoxDBInstance("node6:5050");
    final BBoxDBInstance instance2 = new BBoxDBInstance("node7:5050");
    final ZookeeperClient zookeeperClient1 = getNewZookeeperClient(instance1);
    final ZookeeperBBoxDBInstanceAdapter zookeeperBBoxDBInstanceAdapter1 = new ZookeeperBBoxDBInstanceAdapter(zookeeperClient1);
    BBoxDBInstanceManager.getInstance().startMembershipObserver(zookeeperClient1);
    final ZookeeperClient zookeeperClient2 = getNewZookeeperClient(instance2);
    final ZookeeperBBoxDBInstanceAdapter zookeeperBBoxDBInstanceAdapter2 = new ZookeeperBBoxDBInstanceAdapter(zookeeperClient2);
    zookeeperBBoxDBInstanceAdapter1.updateStateData(instance1, BBoxDBInstanceState.READY);
    zookeeperBBoxDBInstanceAdapter2.updateStateData(instance2, BBoxDBInstanceState.READY);
    Thread.sleep(5000);
    final CountDownLatch changedLatch = new CountDownLatch(1);
    distributedInstanceManager.registerListener(new BiConsumer<DistributedInstanceEvent, BBoxDBInstance>() {

        @Override
        public void accept(final DistributedInstanceEvent event, final BBoxDBInstance instance) {
            if (event == DistributedInstanceEvent.CHANGED) {
                if (instance.socketAddressEquals(instance2)) {
                    Assert.assertTrue(instance.getState() == BBoxDBInstanceState.OUTDATED);
                    changedLatch.countDown();
                }
            } else {
                // Unexpected event
                Assert.assertTrue(false);
            }
        }
    });
    zookeeperBBoxDBInstanceAdapter2.updateStateData(instance2, BBoxDBInstanceState.OUTDATED);
    changedLatch.await();
    distributedInstanceManager.removeAllListener();
    zookeeperClient1.shutdown();
    zookeeperClient2.shutdown();
}
Also used : ZookeeperClient(org.bboxdb.distribution.zookeeper.ZookeeperClient) BBoxDBInstanceManager(org.bboxdb.distribution.membership.BBoxDBInstanceManager) BBoxDBInstance(org.bboxdb.distribution.membership.BBoxDBInstance) ZookeeperBBoxDBInstanceAdapter(org.bboxdb.distribution.membership.ZookeeperBBoxDBInstanceAdapter) DistributedInstanceEvent(org.bboxdb.distribution.membership.DistributedInstanceEvent) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 9 with BBoxDBInstance

use of org.bboxdb.distribution.membership.BBoxDBInstance in project bboxdb by jnidzwetzki.

the class TestDistributedInstanceManager method testReconnect.

/**
 * Test the reconnect
 * @throws ZookeeperException
 */
@Test(timeout = 60000)
public void testReconnect() throws InterruptedException, ZookeeperException {
    final BBoxDBInstanceManager distributedInstanceManager = BBoxDBInstanceManager.getInstance();
    final BBoxDBInstance instance = new BBoxDBInstance("node1:5050");
    final ZookeeperClient zookeeperClient = getNewZookeeperClient(instance);
    BBoxDBInstanceManager.getInstance().startMembershipObserver(zookeeperClient);
    Assert.assertTrue(zookeeperClient.isConnected());
    Assert.assertEquals(1, distributedInstanceManager.getInstances().size());
    Thread.sleep(1000);
    // Disconnect
    zookeeperClient.shutdown();
    Assert.assertEquals(0, distributedInstanceManager.getInstances().size());
    // Reconnect
    Assert.assertFalse(zookeeperClient.isConnected());
    zookeeperClient.init();
    Assert.assertTrue(zookeeperClient.isConnected());
    // Wait for instances read
    Thread.sleep(1000);
    Assert.assertEquals(1, distributedInstanceManager.getInstances().size());
}
Also used : ZookeeperClient(org.bboxdb.distribution.zookeeper.ZookeeperClient) BBoxDBInstanceManager(org.bboxdb.distribution.membership.BBoxDBInstanceManager) BBoxDBInstance(org.bboxdb.distribution.membership.BBoxDBInstance) Test(org.junit.Test)

Example 10 with BBoxDBInstance

use of org.bboxdb.distribution.membership.BBoxDBInstance in project bboxdb by jnidzwetzki.

the class TestDistributedInstanceManager method testRegisterInstance4.

/**
 * Two instances are known and changing
 * @throws ZookeeperException
 */
@Test(timeout = 60000)
public void testRegisterInstance4() throws InterruptedException, ZookeeperException {
    final BBoxDBInstanceManager distributedInstanceManager = BBoxDBInstanceManager.getInstance();
    final BBoxDBInstance instance1 = new BBoxDBInstance("node1:5050");
    final BBoxDBInstance instance2 = new BBoxDBInstance("node2:5050");
    final ZookeeperClient zookeeperClient1 = getNewZookeeperClient(instance1);
    final ZookeeperBBoxDBInstanceAdapter zookeeperBBoxDBInstanceAdapter1 = new ZookeeperBBoxDBInstanceAdapter(zookeeperClient1);
    final ZookeeperClient zookeeperClient2 = getNewZookeeperClient(instance2);
    final ZookeeperBBoxDBInstanceAdapter zookeeperBBoxDBInstanceAdapter2 = new ZookeeperBBoxDBInstanceAdapter(zookeeperClient2);
    BBoxDBInstanceManager.getInstance().startMembershipObserver(zookeeperClient1);
    Thread.sleep(1000);
    Assert.assertEquals(2, distributedInstanceManager.getInstances().size());
    Assert.assertTrue(BBoxDBInstanceState.FAILED == distributedInstanceManager.getInstances().get(0).getState());
    Assert.assertTrue(BBoxDBInstanceState.FAILED == distributedInstanceManager.getInstances().get(1).getState());
    // Change instance 1
    zookeeperBBoxDBInstanceAdapter1.updateStateData(instance1, BBoxDBInstanceState.OUTDATED);
    Thread.sleep(1000);
    for (final BBoxDBInstance instance : distributedInstanceManager.getInstances()) {
        if (instance.socketAddressEquals(instance1)) {
            Assert.assertTrue(instance.getState() == BBoxDBInstanceState.OUTDATED);
        } else {
            Assert.assertTrue(instance.getState() == BBoxDBInstanceState.FAILED);
        }
    }
    // Change instance 2
    zookeeperBBoxDBInstanceAdapter2.updateStateData(instance2, BBoxDBInstanceState.READY);
    Thread.sleep(2000);
    for (final BBoxDBInstance instance : distributedInstanceManager.getInstances()) {
        if (instance.socketAddressEquals(instance1)) {
            Assert.assertTrue(instance.getState() == BBoxDBInstanceState.OUTDATED);
        } else {
            Assert.assertTrue(instance.getState() == BBoxDBInstanceState.READY);
        }
    }
    zookeeperClient1.shutdown();
    zookeeperClient2.shutdown();
}
Also used : ZookeeperClient(org.bboxdb.distribution.zookeeper.ZookeeperClient) BBoxDBInstanceManager(org.bboxdb.distribution.membership.BBoxDBInstanceManager) BBoxDBInstance(org.bboxdb.distribution.membership.BBoxDBInstance) ZookeeperBBoxDBInstanceAdapter(org.bboxdb.distribution.membership.ZookeeperBBoxDBInstanceAdapter) Test(org.junit.Test)

Aggregations

BBoxDBInstance (org.bboxdb.distribution.membership.BBoxDBInstance)78 Test (org.junit.Test)36 ArrayList (java.util.ArrayList)28 DistributionRegion (org.bboxdb.distribution.region.DistributionRegion)25 BBoxDBException (org.bboxdb.misc.BBoxDBException)16 ZookeeperClient (org.bboxdb.distribution.zookeeper.ZookeeperClient)14 List (java.util.List)13 RoutingHop (org.bboxdb.network.routing.RoutingHop)13 BBoxDBInstanceManager (org.bboxdb.distribution.membership.BBoxDBInstanceManager)11 ZookeeperException (org.bboxdb.distribution.zookeeper.ZookeeperException)11 RoutingHeader (org.bboxdb.network.routing.RoutingHeader)11 BoundingBox (org.bboxdb.commons.math.BoundingBox)9 NetworkOperationFuture (org.bboxdb.network.client.future.NetworkOperationFuture)8 Map (java.util.Map)7 HashMap (java.util.HashMap)6 ZookeeperBBoxDBInstanceAdapter (org.bboxdb.distribution.membership.ZookeeperBBoxDBInstanceAdapter)6 ZookeeperNotFoundException (org.bboxdb.distribution.zookeeper.ZookeeperNotFoundException)6 JoinedTupleListFuture (org.bboxdb.network.client.future.JoinedTupleListFuture)6 TupleListFuture (org.bboxdb.network.client.future.TupleListFuture)6 OptionalDouble (java.util.OptionalDouble)4