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