Search in sources :

Example 16 with Determination

use of org.voltdb.probe.MeshProber.Determination in project voltdb by VoltDB.

the class TestHostMessenger method testStaggeredStartsWithFewerCoordinators.

@Test
public void testStaggeredStartsWithFewerCoordinators() throws Exception {
    MeshProber.Builder jcb = MeshProber.builder().coordinators(coordinators(2)).hostCount(3).startAction(StartAction.PROBE).nodeState(NodeState.INITIALIZING).kfactor(1);
    HostMessenger hm1 = createHostMessenger(0, jcb.bare(true).build(), false);
    HostMessenger hm2 = createHostMessenger(1, jcb.bare(true).build(), false);
    HostMessenger hm3 = createHostMessenger(2, jcb.bare(true).build(), false);
    final AtomicReference<Exception> exception = new AtomicReference<Exception>();
    HostMessengerThread hm2Start = new HostMessengerThread(hm2, exception);
    HostMessengerThread hm3Start = new HostMessengerThread(hm3, exception);
    hm2Start.start();
    Thread.sleep(50);
    hm3Start.start();
    Thread.sleep(150);
    hm1.start();
    hm2Start.join();
    hm3Start.join();
    if (exception.get() != null) {
        fail(exception.get().toString());
    }
    Determination dtm = prober(hm1).waitForDetermination();
    assertEquals(StartAction.CREATE, dtm.startAction);
    assertEquals(3, dtm.hostCount);
    assertEquals(dtm, prober(hm2).waitForDetermination());
    assertEquals(dtm, prober(hm3).waitForDetermination());
    List<String> root1 = hm1.getZK().getChildren("/", false);
    List<String> root2 = hm2.getZK().getChildren("/", false);
    List<String> root3 = hm3.getZK().getChildren("/", false);
    assertTrue(root1.equals(root2));
    assertTrue(root2.equals(root3));
    List<String> hostids1 = hm1.getZK().getChildren(CoreZK.hostids, false);
    List<String> hostids2 = hm2.getZK().getChildren(CoreZK.hostids, false);
    List<String> hostids3 = hm3.getZK().getChildren(CoreZK.hostids, false);
    assertTrue(hostids1.equals(hostids2));
    assertTrue(hostids2.equals(hostids3));
}
Also used : AtomicReference(java.util.concurrent.atomic.AtomicReference) MeshProber(org.voltdb.probe.MeshProber) Determination(org.voltdb.probe.MeshProber.Determination) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)16 MeshProber (org.voltdb.probe.MeshProber)16 Determination (org.voltdb.probe.MeshProber.Determination)16 AtomicReference (java.util.concurrent.atomic.AtomicReference)14