@Test
public void testChangesSeenAcrossInstances() throws Exception {
QueueGroup instance1 = new ZKQueueGroup(zkClient, QueueType.PROVISIONER);
QueueGroup instance2 = new ZKQueueGroup(zkClient, QueueType.PROVISIONER);
instance1.startAndWait();
instance2.startAndWait();
String tenant = "tenantX";
Set<String> expectedQueueNames = Sets.newHashSet(tenant);
instance1.add(tenant, new Element("id3-1", "val1"));
instance1.add(tenant, new Element("id3-2", "val2"));
Assert.assertEquals(expectedQueueNames, instance1.getQueueNames());
waitForQueueNames(expectedQueueNames, instance2);
Iterator<GroupElement> queuesIter1 = instance1.takeIterator("consumer1");
Iterator<GroupElement> queuesIter2 = instance1.takeIterator("consumer2");
GroupElement gelement = queuesIter1.next();
Assert.assertEquals(tenant, gelement.getQueueName());
Assert.assertEquals("id3-1", gelement.getElement().getId());
Assert.assertEquals("val1", gelement.getElement().getValue());
gelement = queuesIter2.next();
Assert.assertEquals(tenant, gelement.getQueueName());
Assert.assertEquals("id3-2", gelement.getElement().getId());
Assert.assertEquals("val2", gelement.getElement().getValue());
Assert.assertFalse(queuesIter1.hasNext());
Assert.assertFalse(queuesIter2.hasNext());
instance1.stop();
instance2.stop();
}