@Test
public void testHosts() throws Exception {
final ZkRing ring = ZkRing.create(getZk(), coordinator, ring_group_root, 1, null, null);
assertEquals(0, ring.getHosts().size());
Host host = ring.addHost(LOCALHOST, Collections.emptyList());
assertEquals(LOCALHOST, host.getAddress());
WaitUntil.orDie(() -> !ring.getHosts().isEmpty());
assertEquals(Collections.singleton(host), ring.getHosts());
assertEquals(LOCALHOST, ring.getHostByAddress(LOCALHOST).getAddress());
ring.close();
final ZkRing sameRing = new ZkRing(getZk(), ring_root, null, coordinator, null);
assertEquals(1, sameRing.getHosts().size());
assertEquals(Collections.singleton(host), sameRing.getHosts());
assertEquals(LOCALHOST, sameRing.getHostByAddress(LOCALHOST).getAddress());
sameRing.getHostByAddress(LOCALHOST).setAddress(LOCALHOST2);
WaitUntil.orDie(() -> sameRing.getHostByAddress(LOCALHOST2) != null &&
LOCALHOST2.equals(sameRing.getHostByAddress(LOCALHOST2).getAddress()));
assertEquals(LOCALHOST2, sameRing.getHostByAddress(LOCALHOST2).getAddress());
assertNull(sameRing.getHostByAddress(LOCALHOST));
assertTrue(sameRing.removeHost(LOCALHOST2));
assertNull(sameRing.getHostByAddress(LOCALHOST2));
assertFalse(sameRing.removeHost(LOCALHOST2));
ring.close();
}