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 {