SLING-9044 - Use traversal to count items in resource based distribution queue
* Add unit test for the count utility
diff --git a/src/main/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueProvider.java b/src/main/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueProvider.java
index f35f2ce..a244fe1 100644
--- a/src/main/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueProvider.java
+++ b/src/main/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueProvider.java
@@ -45,7 +45,7 @@
public class ResourceQueueProvider implements DistributionQueueProvider {
public static final String TYPE = "resource";
- private final static String QUEUES_ROOT = "/var/sling/distribution/queues/";
+ public final static String QUEUES_ROOT = "/var/sling/distribution/queues/";
private final Logger log = LoggerFactory.getLogger(getClass());
diff --git a/src/test/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueUtilsTest.java b/src/test/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueUtilsTest.java
index af04a81..a007ed3 100644
--- a/src/test/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueUtilsTest.java
+++ b/src/test/java/org/apache/sling/distribution/queue/impl/resource/ResourceQueueUtilsTest.java
@@ -18,16 +18,34 @@
*/
package org.apache.sling.distribution.queue.impl.resource;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.distribution.queue.DistributionQueueItem;
+import org.apache.sling.distribution.queue.spi.DistributionQueue;
+import org.apache.sling.testing.resourceresolver.MockResourceResolverFactory;
+import org.junit.Before;
import org.junit.Test;
import java.util.GregorianCalendar;
+import static java.util.Collections.emptyMap;
+import static java.util.UUID.randomUUID;
+import static org.apache.sling.distribution.queue.impl.resource.ResourceQueueProvider.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class ResourceQueueUtilsTest {
+ private MockResourceResolverFactory rrf;
+
+ private static final String QUEUE_NAME = "test-queue";
+
+ @Before
+ public void setUp() throws Exception {
+ rrf = new MockResourceResolverFactory();
+ }
+
@Test
public void testTimePath() throws Exception {
@@ -43,6 +61,29 @@
ResourceQueueUtils.getTimePath(new GregorianCalendar(2018, 11, 31, 23, 59)));
}
+ @Test
+ public void testResourceCountEmpty() throws Exception {
+ String agentPath = QUEUES_ROOT + QUEUE_NAME;
+ DistributionQueue queue = new ResourceQueue(rrf, "test", QUEUE_NAME, agentPath);
+ assertTrue(queue.getStatus().isEmpty());
+ }
+
+ @Test
+ public void testResourceCountNonEmpty() throws Exception {
+ String agentPath = QUEUES_ROOT + QUEUE_NAME;
+ DistributionQueue queue = new ResourceQueue(rrf, "test", QUEUE_NAME, agentPath);
+
+ queue.add(new DistributionQueueItem(randomUUID().toString(), emptyMap()));
+ queue.add(new DistributionQueueItem(randomUUID().toString(), emptyMap()));
+ queue.add(new DistributionQueueItem(randomUUID().toString(), emptyMap()));
+
+ assertFalse(queue.getStatus().isEmpty());
+
+ ResourceResolver rr = rrf.getResourceResolver(null);
+ Resource root = ResourceQueueUtils.getRootResource(rr, agentPath);
+ assertEquals(3, ResourceQueueUtils.getResourceCount(root));
+ }
+
@Test
public void testIsSafeToDelete() throws Exception {