@Test public void testInCluster() throws Exception { final int PARTICIPANT_QTY = 3; List<ClientAndLatch> clients = Lists.newArrayList(); Timing timing = new Timing(); TestingCluster cluster = new TestingCluster(PARTICIPANT_QTY); try { cluster.start(); List<InstanceSpec> instances = Lists.newArrayList(cluster.getInstances()); for (int i = 0; i < PARTICIPANT_QTY; ++i) { CuratorFramework client = CuratorFrameworkFactory.newClient( instances.get(i).getConnectString(), timing.session(), timing.connection(), new RetryOneTime(1)); LeaderLatch latch = new LeaderLatch(client, "/latch"); clients.add(new ClientAndLatch(client, latch, i)); client.start(); latch.start(); } ClientAndLatch leader = waitForALeader(clients, timing); Assert.assertNotNull(leader); cluster.killServer(instances.get(leader.index)); Thread.sleep(timing.multiple(2).session()); leader = waitForALeader(clients, timing); Assert.assertNotNull(leader); Assert.assertEquals(getLeaders(clients).size(), 1); } finally { for (ClientAndLatch client : clients) { Closeables.close(client.latch, true); Closeables.close(client.client, true); } Closeables.close(cluster, true); } }