@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); } });
LOG.debug("Task fail time = {}", taskFailTime); Iterator<QueuedElement> beingConsumed = provisionerQueues.getBeingConsumed(queueName);
@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 testQueuedTaskMissingFromStoreIsRemovedFromQueue() { ClusterCleanup clusterCleanup = new ClusterCleanup(clusterStore, clusterService, nodeService, taskService, jobQueues, provisionerQueues, -10, 1, 1); String queueName = account.getTenantId(); ClusterTask task = new ClusterTask(ProvisionerAction.CREATE, TaskId.fromString("3-1-1"), "node1", "service", ClusterAction.CLUSTER_CREATE, "test", account); task.setStatus(ClusterTask.Status.IN_PROGRESS); Cluster cluster = Entities.ClusterExample.createCluster(); TaskConfig taskConfig = TaskConfig.from(cluster, Entities.ClusterExample.NODE1, Entities.ServiceExample.NAMENODE, cluster.getConfig(), ProvisionerAction.START, null); SchedulableTask schedulableTask = new SchedulableTask(task, taskConfig); // add a task to the queue without storing it.x provisionerQueues.add(queueName, new Element(task.getTaskId(), gson.toJson(schedulableTask))); provisionerQueues.takeIterator("0").next(); clusterCleanup.run(); Assert.assertEquals(0, Iterators.size(provisionerQueues.getBeingConsumed(queueName))); }
Assert.assertEquals(0, Iterators.size(provisionerQueues.getBeingConsumed(queueName))); Assert.assertEquals(2, Iterators.size(provisionerQueues.getBeingConsumed(queueName))); Assert.assertEquals(2, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(3, Iterators.size(provisionerQueues.getBeingConsumed(queueName))); Assert.assertEquals(1, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(1, Iterators.size(provisionerQueues.getBeingConsumed(queueName))); Assert.assertEquals(1, Iterators.size(provisionerQueues.getQueued(queueName))); Assert.assertEquals(2, jobQueues.size(queueName));