### Question:
ZKQueueGroup extends AbstractIdleService implements QueueGroup { @Override public ListenableFuture<String> add(String queueName, Element element) { return queueMap.getUnchecked(queueName).add(element); } ZKQueueGroup(final ZKClient zkClient, final QueueType queueType); @Override ListenableFuture<String> add(String queueName, Element element); @Override Iterator<GroupElement> takeIterator(String consumerId); @Override Element take(String queueName, String consumerId); @Override TrackingQueue.PossessionState recordProgress(String consumerId, String queueName, String elementId,
                                                      TrackingQueue.ConsumingStatus status, String result); @Override boolean remove(String queueName, String elementId); @Override boolean removeAll(); @Override boolean removeAll(String queueName); @Override int size(String queueName); @Override Set<String> getQueueNames(); @Override Iterator<QueuedElement> getBeingConsumed(String queueName); @Override Iterator<QueuedElement> getQueued(String queueName);  }### Answer:
@Test public void testInstanceInitializedWithExistingData() throws Exception { QueueGroup instance1 = new ZKQueueGroup(zkClient, QueueType.PROVISIONER); instance1.startAndWait(); instance1.add("tenant1", new Element("val1")); instance1.add("tenant2", new Element("val2")); QueueGroup instance2 = new ZKQueueGroup(zkClient, QueueType.PROVISIONER); instance2.startAndWait(); waitForQueueNames(Sets.newHashSet("tenant1", "tenant2"), instance2); instance1.stop(); instance2.stop(); }