You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by to...@apache.org on 2016/07/28 14:25:06 UTC

svn commit: r1754417 - in /sling/trunk/contrib/extensions/distribution/core/src: main/java/org/apache/sling/distribution/packaging/impl/ main/java/org/apache/sling/distribution/packaging/impl/importer/ main/java/org/apache/sling/distribution/queue/impl...

Author: tommaso
Date: Thu Jul 28 14:25:06 2016
New Revision: 1754417

URL: http://svn.apache.org/viewvc?rev=1754417&view=rev
Log:
SLING-5695 - minor refactoring and testing

Added:
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/ReferencePackageTest.java   (with props)
    sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/AsyncDeliveryDispatchingStrategyTest.java   (with props)
Modified:
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ReferencePackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SharedDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SimpleDistributionPackage.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackage.java?rev=1754417&r1=1754416&r2=1754417&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackage.java Thu Jul 28 14:25:06 2016
@@ -72,7 +72,7 @@ public class FileDistributionPackage ext
     }
 
     @Override
-    public void acquire(@Nonnull String[] holderNames) {
+    public void acquire(@Nonnull String... holderNames) {
         try {
             DistributionPackageUtils.acquire(getStatusFile(), holderNames);
         } catch (IOException e) {
@@ -81,7 +81,7 @@ public class FileDistributionPackage ext
     }
 
     @Override
-    public void release(@Nonnull String[] holderNames) {
+    public void release(@Nonnull String... holderNames) {
         try {
             boolean doDelete = DistributionPackageUtils.release(getStatusFile(), holderNames);
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ReferencePackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ReferencePackage.java?rev=1754417&r1=1754416&r2=1754417&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ReferencePackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ReferencePackage.java Thu Jul 28 14:25:06 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.distribution.packaging.impl;
 
+import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -30,7 +31,7 @@ import org.apache.sling.distribution.pac
  * by its {@link DistributionPackage#getId()}.
  */
 public class ReferencePackage extends AbstractDistributionPackage {
-    private static final String REFERENCE_PREFIX = "reference-";
+    static final String REFERENCE_PREFIX = "reference-";
     private final DistributionPackage distributionPackage;
     private final String reference;
 
@@ -43,14 +44,14 @@ public class ReferencePackage extends Ab
     }
 
     @Override
-    public void acquire(@Nonnull String[] holderNames) {
+    public void acquire(@Nonnull String... holderNames) {
         if (distributionPackage instanceof AbstractDistributionPackage) {
             ((AbstractDistributionPackage) distributionPackage).acquire(holderNames);
         }
     }
 
     @Override
-    public void release(@Nonnull String[] holderNames) {
+    public void release(@Nonnull String... holderNames) {
         if (distributionPackage instanceof AbstractDistributionPackage) {
             ((AbstractDistributionPackage) distributionPackage).release(holderNames);
         }
@@ -93,9 +94,8 @@ public class ReferencePackage extends Ab
         return string.startsWith(REFERENCE_PREFIX);
     }
 
+    @CheckForNull
     public static String idFromReference(String reference) {
-        return reference.substring(REFERENCE_PREFIX.length());
-
-
+        return isReference(reference) ? reference.substring(REFERENCE_PREFIX.length()) : null;
     }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackage.java?rev=1754417&r1=1754416&r2=1754417&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackage.java Thu Jul 28 14:25:06 2016
@@ -86,7 +86,7 @@ public class ResourceDistributionPackage
     }
 
     @Override
-    public void acquire(@Nonnull String[] holderNames) {
+    public void acquire(@Nonnull String... holderNames) {
         try {
             DistributionPackageUtils.acquire(resource, holderNames);
             if (resourceResolver.hasChanges()) {
@@ -101,7 +101,7 @@ public class ResourceDistributionPackage
     }
 
     @Override
-    public void release(@Nonnull String[] holderNames) {
+    public void release(@Nonnull String... holderNames) {
         try {
             boolean doDelete = DistributionPackageUtils.release(resource, holderNames);
 

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SharedDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SharedDistributionPackage.java?rev=1754417&r1=1754416&r2=1754417&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SharedDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SharedDistributionPackage.java Thu Jul 28 14:25:06 2016
@@ -33,12 +33,12 @@ public interface SharedDistributionPacka
     /**
      * acquire a reference to this package and increase the reference count.
      */
-    void acquire(@Nonnull String[] holderNames);
+    void acquire(@Nonnull String... holderNames);
 
     /**
      * release a reference to this package and decrease the reference count.
      * when no more references are hold the package {@code DistributionPackage#delete} method is called.
      */
-    void release(@Nonnull String[] holderNames);
+    void release(@Nonnull String... holderNames);
 
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SimpleDistributionPackage.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SimpleDistributionPackage.java?rev=1754417&r1=1754416&r2=1754417&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SimpleDistributionPackage.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/SimpleDistributionPackage.java Thu Jul 28 14:25:06 2016
@@ -155,12 +155,12 @@ public class SimpleDistributionPackage e
     }
 
     @Override
-    public void acquire(@Nonnull String[] holderNames) {
+    public void acquire(@Nonnull String... holderNames) {
 
     }
 
     @Override
-    public void release(@Nonnull String[] holderNames) {
+    public void release(@Nonnull String... holderNames) {
 
     }
 }

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java?rev=1754417&r1=1754416&r2=1754417&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/LocalDistributionPackageImporter.java Thu Jul 28 14:25:06 2016
@@ -99,19 +99,23 @@ public class LocalDistributionPackageImp
         if (reference != null) {
             if (ReferencePackage.isReference(reference)) {
                 String actualPackageId = ReferencePackage.idFromReference(reference);
-                log.info("installing from reference {}", actualPackageId);
-                DistributionPackage distributionPackage = packageBuilder.getPackage(resourceResolver, actualPackageId);
-                if (distributionPackage != null) {
-                    if (packageBuilder.installPackage(resourceResolver, distributionPackage)) {
-                        DistributionPackageInfo info = distributionPackage.getInfo();
-                        log.info("package installed {}", info);
-                        eventFactory.generatePackageEvent(DistributionEventTopics.IMPORTER_PACKAGE_IMPORTED, DistributionComponentKind.IMPORTER, name, info);
-                        return info;
+                if (actualPackageId != null) {
+                    log.info("installing from reference {}", actualPackageId);
+                    DistributionPackage distributionPackage = packageBuilder.getPackage(resourceResolver, actualPackageId);
+                    if (distributionPackage != null) {
+                        if (packageBuilder.installPackage(resourceResolver, distributionPackage)) {
+                            DistributionPackageInfo info = distributionPackage.getInfo();
+                            log.info("package installed {}", info);
+                            eventFactory.generatePackageEvent(DistributionEventTopics.IMPORTER_PACKAGE_IMPORTED, DistributionComponentKind.IMPORTER, name, info);
+                            return info;
+                        } else {
+                            throw new DistributionException("could not install package {}" + distributionPackage);
+                        }
                     } else {
-                        throw new DistributionException("could not install package {}" + distributionPackage);
+                        throw new DistributionException("could not install package from reference " + actualPackageId);
                     }
                 } else {
-                    throw new DistributionException("could not install package from reference " + actualPackageId);
+                    throw new DistributionException("could not install package from invalid reference " + reference);
                 }
             } else {
                 try {

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java?rev=1754417&r1=1754416&r2=1754417&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java Thu Jul 28 14:25:06 2016
@@ -119,16 +119,19 @@ public class JobHandlingDistributionQueu
         int actualSkip = skip < 0 ? 0 : skip;
         int actualLimit = limit < 0 ? -1 : actualSkip + limit;
 
-
-        Collection<Job> jobs = jobManager.findJobs(QueryType.ALL, topic, actualLimit);
         List<Job> result = new ArrayList<Job>();
+        try {
+            Collection<Job> jobs = jobManager.findJobs(QueryType.ALL, topic, actualLimit);
 
-        int i = 0;
-        for (Job job : jobs) {
-            if (i >= actualSkip) {
-                result.add(job);
+            int i = 0;
+            for (Job job : jobs) {
+                if (i >= actualSkip) {
+                    result.add(job);
+                }
+                i++;
             }
-            i++;
+        } catch (Exception e) {
+            log.warn("could not get jobs for topic {}", topic, e);
         }
 
         return result;

Added: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/ReferencePackageTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/ReferencePackageTest.java?rev=1754417&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/ReferencePackageTest.java (added)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/ReferencePackageTest.java Thu Jul 28 14:25:06 2016
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.distribution.packaging.impl;
+
+import java.io.InputStream;
+import java.util.HashMap;
+
+import org.apache.sling.distribution.packaging.DistributionPackage;
+import org.apache.sling.distribution.packaging.DistributionPackageInfo;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests for {@link ReferencePackage}
+ */
+public class ReferencePackageTest {
+
+    @Test
+    public void testAcquire() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        referencePackage.acquire("queue1", "queue2");
+    }
+
+    @Test
+    public void testRelease() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        referencePackage.release("queue1", "queue2");
+    }
+
+    @Test
+    public void testCreateInputStream() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        InputStream inputStream = referencePackage.createInputStream();
+        assertNotNull(inputStream);
+    }
+
+    @Test
+    public void testGetSize() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        when(distributionPackage.getSize()).thenReturn(10L);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        long size = referencePackage.getSize();
+        assertTrue(referencePackage.getSize() == size);
+    }
+
+    @Test
+    public void testClose() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        referencePackage.close();
+    }
+
+    @Test
+    public void testDelete() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        referencePackage.delete();
+    }
+
+    @Test
+    public void testGetType() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        assertEquals(type, referencePackage.getType());
+    }
+
+    @Test
+    public void testGetId() throws Exception {
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        String type = "dummy";
+        when(distributionPackage.getType()).thenReturn(type);
+        DistributionPackageInfo info = new DistributionPackageInfo(type, new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+        ReferencePackage referencePackage = new ReferencePackage(distributionPackage);
+        assertNotNull(referencePackage);
+        String id = referencePackage.getId();
+        assertNotNull(id);
+    }
+
+    @Test
+    public void testIsReference() throws Exception {
+        assertFalse(ReferencePackage.isReference("1231231312"));
+        assertTrue(ReferencePackage.isReference(ReferencePackage.REFERENCE_PREFIX + "12312312"));
+    }
+
+    @Test
+    public void testIdFromReference() throws Exception {
+        String reference = "132231231";
+        String id = ReferencePackage.idFromReference(reference);
+        assertNull(id);
+        id = ReferencePackage.idFromReference(ReferencePackage.REFERENCE_PREFIX + reference);
+        assertNotNull(id);
+        assertEquals(reference, id);
+    }
+
+}
\ No newline at end of file

Propchange: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/ReferencePackageTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/AsyncDeliveryDispatchingStrategyTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/AsyncDeliveryDispatchingStrategyTest.java?rev=1754417&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/AsyncDeliveryDispatchingStrategyTest.java (added)
+++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/AsyncDeliveryDispatchingStrategyTest.java Thu Jul 28 14:25:06 2016
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.distribution.queue.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.sling.distribution.common.DistributionException;
+import org.apache.sling.distribution.packaging.DistributionPackage;
+import org.apache.sling.distribution.packaging.DistributionPackageInfo;
+import org.apache.sling.distribution.packaging.impl.SharedDistributionPackage;
+import org.apache.sling.distribution.queue.DistributionQueue;
+import org.apache.sling.distribution.queue.DistributionQueueEntry;
+import org.apache.sling.distribution.queue.DistributionQueueItem;
+import org.apache.sling.distribution.queue.DistributionQueueItemStatus;
+import org.apache.sling.distribution.queue.DistributionQueueProvider;
+import org.apache.sling.distribution.queue.DistributionQueueState;
+import org.apache.sling.distribution.queue.DistributionQueueStatus;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests for {@link AsyncDeliveryDispatchingStrategy}
+ */
+public class AsyncDeliveryDispatchingStrategyTest {
+
+    @Test
+    public void testAddWithNotSharedPackage() throws Exception {
+        Map<String, String> deliveryMappings = new HashMap<String, String>();
+        deliveryMappings.put("queue1", "delivery1");
+        deliveryMappings.put("queue2", "delivery2");
+        AsyncDeliveryDispatchingStrategy asyncDeliveryDispatchingStrategy = new AsyncDeliveryDispatchingStrategy(deliveryMappings);
+        DistributionPackage distributionPackage = mock(DistributionPackage.class);
+        DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
+        try {
+            asyncDeliveryDispatchingStrategy.add(distributionPackage, queueProvider);
+            fail("should not be able to pass not shared packages");
+        } catch (DistributionException e) {
+            // expected
+        }
+    }
+
+    @Test
+    public void testAddWithOneItemInRunningQueues() throws Exception {
+        Map<String, String> deliveryMappings = new HashMap<String, String>();
+        String queue1 = "queue1";
+        deliveryMappings.put(queue1, "delivery1");
+        String queue2 = "queue2";
+        deliveryMappings.put(queue2, "delivery2");
+        AsyncDeliveryDispatchingStrategy asyncDeliveryDispatchingStrategy = new AsyncDeliveryDispatchingStrategy(deliveryMappings);
+
+        // setup package
+        SharedDistributionPackage distributionPackage = mock(SharedDistributionPackage.class);
+        when(distributionPackage.getId()).thenReturn("1221312");
+        DistributionPackageInfo info = new DistributionPackageInfo("dummy", new HashMap<String, Object>());
+        when(distributionPackage.getInfo()).thenReturn(info);
+
+        // setup queues
+        DistributionQueueProvider queueProvider = mock(DistributionQueueProvider.class);
+        DistributionQueue dq1 = mock(DistributionQueue.class);
+        DistributionQueueItemStatus status = mock(DistributionQueueItemStatus.class);
+        DistributionQueueEntry entry = new DistributionQueueEntry("1242112", new DistributionQueueItem(distributionPackage.getId(),
+                new HashMap<String, Object>()), status);
+        when(dq1.add(any(DistributionQueueItem.class))).thenReturn(entry);
+        DistributionQueueStatus status1 = new DistributionQueueStatus(1, DistributionQueueState.RUNNING);
+        when(dq1.getStatus()).thenReturn(status1);
+        when(queueProvider.getQueue(queue1)).thenReturn(dq1);
+        DistributionQueue dq2 = mock(DistributionQueue.class);
+        when(dq2.add(any(DistributionQueueItem.class))).thenReturn(entry);
+        DistributionQueueStatus status2 = new DistributionQueueStatus(1, DistributionQueueState.RUNNING);
+        when(dq2.getStatus()).thenReturn(status2);
+        when(queueProvider.getQueue(queue2)).thenReturn(dq2);
+
+        Iterable<DistributionQueueItemStatus> statuses = asyncDeliveryDispatchingStrategy.add(distributionPackage, queueProvider);
+        assertNotNull(statuses);
+
+    }
+
+    @Test
+    public void testGetQueueNames() throws Exception {
+        Map<String, String> deliveryMappings = new HashMap<String, String>();
+        deliveryMappings.put("queue1", "delivery1");
+        deliveryMappings.put("queue2", "delivery2");
+        AsyncDeliveryDispatchingStrategy asyncDeliveryDispatchingStrategy = new AsyncDeliveryDispatchingStrategy(deliveryMappings);
+        List<String> queueNames = asyncDeliveryDispatchingStrategy.getQueueNames();
+        assertNotNull(queueNames);
+        assertEquals(4, queueNames.size());
+        assertTrue(queueNames.contains("queue1"));
+        assertTrue(queueNames.contains("queue2"));
+        assertTrue(queueNames.contains("delivery1"));
+        assertTrue(queueNames.contains("delivery2"));
+    }
+}
\ No newline at end of file

Propchange: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/queue/impl/AsyncDeliveryDispatchingStrategyTest.java
------------------------------------------------------------------------------
    svn:eol-style = native