You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2015/01/16 09:03:34 UTC

svn commit: r1652356 [2/2] - in /sling/trunk/contrib/extensions/distribution: core/src/main/java/org/apache/sling/distribution/agent/impl/ core/src/main/java/org/apache/sling/distribution/queue/ core/src/main/java/org/apache/sling/distribution/queue/im...

Added: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java?rev=1652356&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java (added)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/MultipleQueueDistributionTest.java Fri Jan 16 08:03:33 2015
@@ -0,0 +1,146 @@
+/*
+ * 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.it;
+
+import org.apache.sling.commons.json.JSONArray;
+import org.apache.sling.commons.json.JSONObject;
+import org.apache.sling.distribution.DistributionRequestType;
+import org.junit.After;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static junit.framework.Assert.assertEquals;
+import static org.apache.sling.distribution.it.DistributionUtils.assertExists;
+import static org.apache.sling.distribution.it.DistributionUtils.assertPostResourceWithParameters;
+import static org.apache.sling.distribution.it.DistributionUtils.createRandomNode;
+import static org.apache.sling.distribution.it.DistributionUtils.distribute;
+import static org.apache.sling.distribution.it.DistributionUtils.getResource;
+import static org.apache.sling.distribution.it.DistributionUtils.queueUrl;
+
+/**
+ * Integration test for forward distribution
+ */
+public class MultipleQueueDistributionTest extends DistributionIntegrationTestBase {
+
+    final static String DELETE_LIMIT = "100";
+
+    @Test
+    public void testQueues() throws Exception {
+
+        JSONObject json = getResource(author, queueUrl("queue-multiple") + ".infinity");
+
+        JSONArray items = json.getJSONArray("items");
+        assertEquals("endpoint1", items.getString(0));
+        assertEquals("endpoint2", items.getString(1));
+
+        JSONObject endpoint1 = json.getJSONObject("endpoint1");
+        assertEquals(true, endpoint1.getBoolean("empty"));
+
+        JSONObject endpoint2 = json.getJSONObject("endpoint2");
+        assertEquals(true, endpoint2.getBoolean("empty"));
+
+    }
+
+    @Test
+    public void testDistributeQueues() throws Exception {
+
+        String nodePath = createRandomNode(authorClient, "/content/forward_add_" + System.nanoTime());
+        assertExists(authorClient, nodePath);
+
+
+        // Add two items in both queues
+        distribute(author, "queue-multiple", DistributionRequestType.ADD, nodePath);
+        distribute(author, "queue-multiple", DistributionRequestType.DELETE, nodePath);
+
+        JSONObject json = getResource(author, queueUrl("queue-multiple") + ".infinity");
+
+        JSONArray items = json.getJSONArray("items");
+        assertEquals("endpoint1", items.getString(0));
+        assertEquals("endpoint2", items.getString(1));
+
+        JSONObject queue = json.getJSONObject("endpoint1");
+        assertEquals(false, queue.getBoolean("empty"));
+
+        JSONArray queueItems = queue.getJSONArray("items");
+        assertEquals(2, queueItems.length());
+        assertEquals(2, queue.get("itemsCount"));
+        String firstId = queueItems.getString(0);
+        JSONObject queueItem = queue.getJSONObject(firstId);
+        assertEquals("ADD", queueItem.getString("action"));
+
+
+        String secondId = queueItems.getString(1);
+        queueItem = queue.getJSONObject(secondId);
+        assertEquals("DELETE", queueItem.getString("action"));
+
+        queue = json.getJSONObject("endpoint2");
+        queueItems = queue.getJSONArray("items");
+        assertEquals(2, queueItems.length());
+        assertEquals(2, queue.get("itemsCount"));
+
+
+        // Delete second item from endpoint1
+        assertPostResourceWithParameters(author, 200, queueUrl("queue-multiple") + "/endpoint1",
+                "operation", "delete", "id", secondId);
+
+        json = getResource(author, queueUrl("queue-multiple") + ".infinity");
+        queue = json.getJSONObject("endpoint1");
+        queueItems = queue.getJSONArray("items");
+        assertEquals(1, queueItems.length());
+        assertEquals(1, queue.get("itemsCount"));
+
+        String id = queueItems.getString(0);
+        assertEquals(firstId, id);
+
+        queue = json.getJSONObject("endpoint2");
+        queueItems = queue.getJSONArray("items");
+        assertEquals(2, queueItems.length());
+        assertEquals(2, queue.get("itemsCount"));
+
+        // Delete 2 items from endpoint2
+        assertPostResourceWithParameters(author, 200, queueUrl("queue-multiple") + "/endpoint2",
+                "operation", "delete", "limit", "2");
+
+        json = getResource(author, queueUrl("queue-multiple") + ".infinity");
+        queue = json.getJSONObject("endpoint1");
+        queueItems = queue.getJSONArray("items");
+        assertEquals(1, queueItems.length());
+        assertEquals(1, queue.get("itemsCount"));
+
+
+        queue = json.getJSONObject("endpoint2");
+        queueItems = queue.getJSONArray("items");
+        assertEquals(0, queueItems.length());
+        assertEquals(0, queue.get("itemsCount"));
+
+    }
+
+
+    @After
+    public void clean() throws IOException {
+        assertPostResourceWithParameters(author, 200, queueUrl("queue-multiple") + "/endpoint1",
+                "operation", "delete", "limit", DELETE_LIMIT);
+
+        assertPostResourceWithParameters(author, 200, queueUrl("queue-multiple") + "/endpoint2",
+                "operation", "delete", "limit", DELETE_LIMIT);
+
+    }
+
+}

Added: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/queue-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-queue-multiple.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/queue-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-queue-multiple.json?rev=1652356&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/queue-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-queue-multiple.json (added)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/queue-multiple/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-queue-multiple.json Fri Jan 16 08:03:33 2015
@@ -0,0 +1,20 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+
+    "name": "queue-multiple",
+
+    "serviceName" : "distributionService",
+
+    "requestAuthorizationStrategy.target" : "(name=privilegeRead)",
+
+    "packageBuilder.target": "(name=vlt)",
+
+    "transportSecretProvider.target" : "(name=publishAdmin)",
+
+    "useMultipleQueues" : true,
+
+    "packageImporter.endpoints" : [
+        "endpoint1=http://localhost:1/libs/sling/distribution/services/importers/bad1",
+        "endpoint2=http://localhost:2/libs/sling/distribution/services/importers/bad2"
+    ]
+}
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-agents.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-agents.json?rev=1652356&r1=1652355&r2=1652356&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-agents.json (original)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-agents.json Fri Jan 16 08:03:33 2015
@@ -1,11 +1,5 @@
 {
     "jcr:primaryType": "sling:OsgiConfig",
     "provider.roots": [ "/libs/sling/distribution/services/agents" ],
-    "kind" : "agent",
-    "resourceProperties": [
-        "sling:resourceType=sling/distribution/service/agent",
-        "sling:resourceSuperType=sling/distribution/service",
-
-        "queue/sling:resourceType=sling/distribution/service/agent/queue"
-    ]
+    "kind" : "agent"
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-exporters.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-exporters.json?rev=1652356&r1=1652355&r2=1652356&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-exporters.json (original)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-exporters.json Fri Jan 16 08:03:33 2015
@@ -1,9 +1,5 @@
 {
     "jcr:primaryType": "sling:OsgiConfig",
     "provider.roots": [ "/libs/sling/distribution/services/exporters" ],
-    "kind" : "exporter",
-    "resourceProperties": [
-        "sling:resourceType=sling/distribution/service/exporter",
-        "sling:resourceSuperType=sling/distribution/service"
-    ]
+    "kind" : "exporter"
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-importers.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-importers.json?rev=1652356&r1=1652355&r2=1652356&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-importers.json (original)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-importers.json Fri Jan 16 08:03:33 2015
@@ -1,10 +1,5 @@
 {
     "jcr:primaryType": "sling:OsgiConfig",
-    "name": "distributionImporters",
     "provider.roots": [ "/libs/sling/distribution/services/importers" ],
-    "kind" : "importer",
-    "resourceProperties": [
-        "sling:resourceType=sling/distribution/service/importer",
-        "sling:resourceSuperType=sling/distribution/service"
-    ]
+    "kind" : "importer"
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-triggers.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-triggers.json?rev=1652356&r1=1652355&r2=1652356&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-triggers.json (original)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/services/org.apache.sling.distribution.resources.impl.DistributionServiceResourceProviderFactory-triggers.json Fri Jan 16 08:03:33 2015
@@ -1,9 +1,5 @@
 {
     "jcr:primaryType": "sling:OsgiConfig",
     "provider.roots": [ "/libs/sling/distribution/services/triggers" ],
-    "kind" : "trigger",
-    "resourceProperties": [
-        "sling:resourceType=sling/distribution/service/trigger",
-        "sling:resourceSuperType=sling/distribution/service"
-    ]
+    "kind" : "trigger"
 }
\ No newline at end of file

Modified: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/settings/org.apache.sling.distribution.resources.impl.DistributionConfigurationResourceProviderFactory-agents.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/settings/org.apache.sling.distribution.resources.impl.DistributionConfigurationResourceProviderFactory-agents.json?rev=1652356&r1=1652355&r2=1652356&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/settings/org.apache.sling.distribution.resources.impl.DistributionConfigurationResourceProviderFactory-agents.json (original)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/resources/settings/org.apache.sling.distribution.resources.impl.DistributionConfigurationResourceProviderFactory-agents.json Fri Jan 16 08:03:33 2015
@@ -1,9 +1,5 @@
 {
     "jcr:primaryType": "sling:OsgiConfig",
     "provider.roots": [ "/libs/sling/distribution/settings/agents" ],
-    "kind" : "agent",
-    "resourceProperties": [
-        "sling:resourceType=sling/distribution/setting/agent",
-        "sling:resourceSuperType=sling/distribution/setting"
-    ]
+    "kind" : "agent"
 }
\ No newline at end of file