ElementsTrackingQueue queue = new ElementsTrackingQueue(new ZKElementsTracking(zkClient, queueName)); try { if (CMD_LIST.equals(command)) { if (queue.remove(elementId)) { System.out.println("element " + elementId + " was removed successfully"); } else { if (queue.toHighestPriority(elementId)) { System.out.println("element " + elementId + " was promoted to the top of the queue successfully"); } else { if (queue.removeAll()) { System.out.println("Successfully removed all elements from the queue"); } else {
private void printQueueElements(ElementsTrackingQueue queue) { System.out.println("Queued: "); int count = Iterators.size(queue.getQueued()); System.out.println("# of queued: " + count); Iterator<QueuedElement> beingConsumed = queue.getBeingConsumed(); System.out.println("Being Consumed:"); while (beingConsumed.hasNext()) { QueuedElement entry = beingConsumed.next(); System.out.println(entry.getConsumerId() + ": " + entry.getElement().toString()); } System.out.println("# of being consumed: " + Iterators.size(beingConsumed)); } }
@Override public ListenableFuture<String> add(Element element) { Preconditions.checkArgument(element != null, "element to add must not be null"); SettableFuture<String> result = addConsumingResultToWaitFor(element.getId()); if (!elementsTracking.addToQueue(element)) { result.setException(new RuntimeException("failed to add element to a queue " + element.toString())); stopWaitingForConsumingResult(element.getId()); } return result; }
ListenableFuture<String> workResult1 = queue.add(new Element("work1", "data1")); queue.add(new Element("work2", "data2")); Assert.assertEquals(0, Iterators.size(queue.getBeingConsumed())); Iterator<QueuedElement> elems = queue.getQueued(); Element taken1 = queue.take("worker1"); Assert.assertEquals(taken1.getId(), "work1"); Assert.assertEquals(1, getQueuedCount(queue)); Assert.assertEquals(1, Iterators.size(queue.getBeingConsumed())); Assert.assertEquals(1, Iterators.size(queue.getBeingConsumed())); Assert.assertEquals("work1", queue.getBeingConsumed().next().getElement().getId()); Element taken2 = queue.take("worker2"); Assert.assertEquals(0, getQueuedCount(queue)); Assert.assertEquals(2, Iterators.size(queue.getBeingConsumed())); Assert.assertNull(queue.take("worker3")); queue.recordProgress("worker1", taken1.getId(), TrackingQueue.ConsumingStatus.IN_PROGRESS, null)); Assert.assertEquals(TrackingQueue.PossessionState.POSSESSES, queue.recordProgress("worker2", taken2.getId(), TrackingQueue.ConsumingStatus.IN_PROGRESS, null)); Assert.assertEquals(TrackingQueue.PossessionState.NOT_POSSESSES, queue.recordProgress("worker3", taken1.getId(), TrackingQueue.ConsumingStatus.IN_PROGRESS, null)); Assert.assertEquals(TrackingQueue.PossessionState.NOT_POSSESSES,
@Test public void testBasics() throws Exception { // "list" command executed below primarily for eye-balling ;) queue.add(new Element("elem1", "data1")); queue.add(new Element("elem2", "data2")); queue.add(new Element("elem3", "data3")); queue.take("consumer1"); Assert.assertEquals(2, getQueuedCount(queue)); Assert.assertEquals(1, Iterators.size(queue.getBeingConsumed())); String qOpts = " --zk-connection " + zkServer.getConnectionStr() + " --queue-name " + queueName; ElementsTrackingQueueCliTool.main(("list" + qOpts).split(" ")); ElementsTrackingQueueCliTool.main(("remove --element elem1" + qOpts).split(" ")); Assert.assertEquals(2, getQueuedCount(queue)); Assert.assertEquals(0, Iterators.size(queue.getBeingConsumed())); ElementsTrackingQueueCliTool.main(("list " + qOpts).split(" ")); // moving elem3 to top of the queue Assert.assertEquals("elem2", queue.getQueued().next().getElement().getId()); ElementsTrackingQueueCliTool.main(("promote --element elem3" + qOpts).split(" ")); Assert.assertEquals("elem3", queue.getQueued().next().getElement().getId()); ElementsTrackingQueueCliTool.main(("list " + qOpts).split(" ")); ElementsTrackingQueueCliTool.main(("remove --element elem2" + qOpts).split(" ")); Assert.assertEquals(1, getQueuedCount(queue)); Assert.assertEquals(0, Iterators.size(queue.getBeingConsumed())); ElementsTrackingQueueCliTool.main(("list " + qOpts).split(" ")); ElementsTrackingQueueCliTool.main(("remove_all" + qOpts).split(" ")); Assert.assertEquals(0, getQueuedCount(queue)); Assert.assertEquals(0, Iterators.size(queue.getBeingConsumed())); ElementsTrackingQueueCliTool.main(("list " + qOpts).split(" ")); }
private synchronized TrackingQueue getQueue() { if (queue == null) { queue = new ElementsTrackingQueue(new ZKElementsTracking(zkClient, zkQueuePath)); } return queue; }
Assert.assertEquals(0, Iterators.size(queue.getBeingConsumed())); Assert.assertTrue(producedCount > 0); Assert.assertTrue(producedSum > 0);
setConsumingResult(elementId, result); return PossessionState.POSSESSES; } else {
@Override protected ElementsTrackingQueue getQueue() throws Exception { String queueName = "/tracking-queue"; System.out.println("queue name: " + queueName); queue = new ElementsTrackingQueue(new ZKElementsTracking(zkClient, queueName)); return queue; } }
protected ElementsTrackingQueue getQueue() { queue = new ElementsTrackingQueue(new InMemoryElementsTracking()); return queue; } }
@Before public void beforeCliTest() throws Exception { queueName = "/tracking-queue"; queue = new ElementsTrackingQueue(new ZKElementsTracking(zkClient, queueName)); }