@Override public QueueMetrics load(String tenantId) { int numQueued = Iterators.size(taskQueues.getQueued(tenantId)); int numInProgress = Iterators.size(taskQueues.getBeingConsumed(tenantId)); return new QueueMetrics(numQueued, numInProgress); } });
@Test public void testGetQueueNames() { QueueGroup queues = getQueueGroup(QueueType.PROVISIONER); queues.add("tenant1", new Element("id", "val")); queues.take("tenant2", "consumer.0"); queues.take("tenant3", "consumer.1"); queues.removeAll("tenant4"); queues.getBeingConsumed("tenant5"); queues.getQueued("tenant6"); ImmutableSet<String> expected = ImmutableSet.of("tenant1", "tenant2", "tenant3", "tenant4", "tenant5", "tenant6"); ImmutableSet<String> actual = ImmutableSet.copyOf(queues.getQueueNames()); Assert.assertEquals(expected, actual); }
@Test public void testOneQueueGetQueuedAndConsumed() { QueueGroup queues = getQueueGroup(QueueType.PROVISIONER); String queueName = "tenant1"; queues.add(queueName, new Element("id1", "val")); queues.add(queueName, new Element("id2", "val")); // check being consumed is correct Assert.assertEquals(ImmutableSet.<String>of(), getIds(queues.getBeingConsumed(queueName))); // check queued is correct. Assert.assertEquals(ImmutableSet.of("id1", "id2"), getIds(queues.getQueued(queueName))); // take one element queues.take(queueName, "consumer1"); // check being consumed is correct Assert.assertEquals(ImmutableSet.of("id1"), getIds(queues.getBeingConsumed(queueName))); // check queued is correct. Assert.assertEquals(ImmutableSet.of("id2"), getIds(queues.getQueued(queueName))); // take next element queues.take(queueName, "consumer2"); // check being consumed is correct Assert.assertEquals(ImmutableSet.of("id1", "id2"), getIds(queues.getBeingConsumed(queueName))); // check queued is correct. Assert.assertEquals(ImmutableSet.<String>of(), getIds(queues.getQueued(queueName))); // finish first element queues.recordProgress("consumer1", queueName, "id1", TrackingQueue.ConsumingStatus.FINISHED_SUCCESSFULLY, "result"); // check being consumed is correct Assert.assertEquals(ImmutableSet.of("id2"), getIds(queues.getBeingConsumed(queueName))); // check queued is correct. Assert.assertEquals(ImmutableSet.<String>of(), getIds(queues.getQueued(queueName))); }
@Test public void testOnlyCorrectClustersAreCleaned() throws Exception { long now = System.currentTimeMillis(); for (int i = 0; i < 20; i++) { createCluster(String.valueOf(i), now - 1000, now - 100, Cluster.Status.ACTIVE); } String queueName = account.getTenantId(); ClusterCleanup clusterCleanup = new ClusterCleanup(clusterStore, clusterService, nodeService, taskService, jobQueues, provisionerQueues, -10, 3, 7); Assert.assertEquals(0, Iterators.size(clusterQueues.getQueued(queueName))); clusterCleanup.run(); // clusters 3, 10, and 17 should have been scheduled for deletion Assert.assertEquals(3, Iterators.size(clusterQueues.getQueued(queueName))); Element e1 = clusterQueues.take(queueName, "consumer1"); Element e2 = clusterQueues.take(queueName, "consumer1"); Element e3 = clusterQueues.take(queueName, "consumer1"); Assert.assertEquals(ImmutableSet.of("3", "10", "17"), ImmutableSet.of(e1.getId(), e2.getId(), e3.getId())); Assert.assertEquals(ClusterAction.CLUSTER_DELETE.name(), e1.getValue()); Assert.assertEquals(ClusterAction.CLUSTER_DELETE.name(), e2.getValue()); Assert.assertEquals(ClusterAction.CLUSTER_DELETE.name(), e3.getValue()); }
Assert.assertEquals(0, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(0, Iterators.size(provisionerQueues.getBeingConsumed(queueName))); provisionerQueues.add(queueName, new Element(task4.getTaskId(), "")); Assert.assertEquals(4, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(2, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(1, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(1, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(2, jobQueues.size(queueName));