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 2016/02/22 10:17:38 UTC
svn commit: r1731606 - in /sling/trunk/contrib/extensions/distribution: it/
it/src/main/resources/install/
it/src/test/java/org/apache/sling/distribution/it/
sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.notshared/
sample/src/...
Author: mpetria
Date: Mon Feb 22 09:17:37 2016
New Revision: 1731606
URL: http://svn.apache.org/viewvc?rev=1731606&view=rev
Log:
SLING-5530: integration test for binaryless distribution
Added:
sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/
sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg
sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.cfg
sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.notshared/
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.notshared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.shared/
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.shared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json
Removed:
sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json
Modified:
sling/trunk/contrib/extensions/distribution/it/pom.xml
sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java
Modified: sling/trunk/contrib/extensions/distribution/it/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/pom.xml?rev=1731606&r1=1731605&r2=1731606&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/it/pom.xml Mon Feb 22 09:17:37 2016
@@ -75,13 +75,22 @@
<author.jar.executor.work.folder>${project.build.directory}/author</author.jar.executor.work.folder>
<!-- Options for the jar to execute. $JAREXEC_SERVER_PORT$ is replaced by the
selected port number -->
- <author.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=author
+ <author.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=author,notshared
</author.jar.executor.jar.options>
<publish.jar.executor.work.folder>${project.build.directory}/publish</publish.jar.executor.work.folder>
- <publish.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=publish
+ <publish.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=publish,notshared
</publish.jar.executor.jar.options>
-
+
+ <author-shared.jar.executor.work.folder>${project.build.directory}/author-shared</author-shared.jar.executor.work.folder>
+ <author-shared.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=author,shared -Dsling.fileinstall.dir=sling/install
+ </author-shared.jar.executor.jar.options>
+
+
+ <publish-shared.jar.executor.work.folder>${project.build.directory}/publish-shared</publish-shared.jar.executor.work.folder>
+ <publish-shared.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=publish,shared -Dsling.fileinstall.dir=sling/install
+ </publish-shared.jar.executor.jar.options>
+
<!-- Change this to run selected tests only -->
<tests.to.run>**/**Test.java</tests.to.run>
</properties>
@@ -124,7 +133,8 @@
<configuration>
<excludes>
<exclude>derby.log</exclude>
- <exclude>src/main/resources/SLING-CONTENT/libs/test/install.author/*.json</exclude>
+ <exclude>src/main/resources/**/*.*</exclude>
+ <exclude>src/test/resources/**/*.*</exclude>
</excludes>
</configuration>
</plugin>
@@ -143,6 +153,24 @@
<tasks>
<mkdir dir="${project.build.directory}/author" />
<mkdir dir="${project.build.directory}/publish" />
+
+ <mkdir dir="${project.build.directory}/author-shared/sling/install" />
+ <mkdir dir="${project.build.directory}/publish-shared/sling/install" />
+
+
+ <!-- Author FileDataStore configuration -->
+ <copy todir="${project.build.directory}/author-shared/sling/install">
+ <fileset dir="${project.build.directory}/classes/install">
+ <include name="**/*.cfg"/>
+ </fileset>
+ </copy>
+
+ <!-- Publish FileDataStore configuration -->
+ <copy todir="${project.build.directory}/publish-shared/sling/install">
+ <fileset dir="${project.build.directory}/classes/install">
+ <include name="**/*.cfg"/>
+ </fileset>
+ </copy>
</tasks>
</configuration>
<goals>
@@ -204,6 +232,9 @@
<portNames>
<portName>author.http.port</portName>
<portName>publish.http.port</portName>
+
+ <portName>author-shared.http.port</portName>
+ <portName>publish-shared.http.port</portName>
</portNames>
</configuration>
</execution>
@@ -248,6 +279,8 @@
<test.server.password>${test.server.password}</test.server.password>
<author.jar.executor.server.port>${author.http.port}</author.jar.executor.server.port>
<publish.jar.executor.server.port>${publish.http.port}</publish.jar.executor.server.port>
+ <author-shared.jar.executor.server.port>${author-shared.http.port}</author-shared.jar.executor.server.port>
+ <publish-shared.jar.executor.server.port>${publish-shared.http.port}</publish-shared.jar.executor.server.port>
<jar.executor.vm.options>${jar.executor.vm.options}</jar.executor.vm.options>
<jar.executor.jar.folder>${project.basedir}/target/dependency</jar.executor.jar.folder>
<jar.executor.jar.name.regexp>org.apache.sling.launchpad.*jar$</jar.executor.jar.name.regexp>
@@ -258,9 +291,17 @@
<publish.jar.executor.jar.options>${publish.jar.executor.jar.options}
</publish.jar.executor.jar.options>
+ <author-shared.jar.executor.jar.options>${author-shared.jar.executor.jar.options}
+ </author-shared.jar.executor.jar.options>
+ <publish-shared.jar.executor.jar.options>${publish-shared.jar.executor.jar.options}
+ </publish-shared.jar.executor.jar.options>
+
<author.jar.executor.work.folder>${author.jar.executor.work.folder}</author.jar.executor.work.folder>
<publish.jar.executor.work.folder>${publish.jar.executor.work.folder}</publish.jar.executor.work.folder>
+ <author-shared.jar.executor.work.folder>${author-shared.jar.executor.work.folder}</author-shared.jar.executor.work.folder>
+ <publish-shared.jar.executor.work.folder>${publish-shared.jar.executor.work.folder}</publish-shared.jar.executor.work.folder>
+
<additional.bundles.path>
${project.build.directory},${project.build.directory}/sling/additional-bundles
</additional.bundles.path>
@@ -353,7 +394,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad</artifactId>
- <version>8</version>
+ <version>9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
Added: sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg?rev=1731606&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg (added)
+++ sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg Mon Feb 22 09:17:37 2016
@@ -0,0 +1,2 @@
+minRecordLength=4096
+path=../datastore
Added: sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.cfg
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.cfg?rev=1731606&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.cfg (added)
+++ sling/trunk/contrib/extensions/distribution/it/src/main/resources/install/org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.cfg Mon Feb 22 09:17:37 2016
@@ -0,0 +1 @@
+customBlobStore=true
Modified: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java?rev=1731606&r1=1731605&r2=1731606&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java (original)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/DistributionIntegrationTestBase.java Mon Feb 22 09:17:37 2016
@@ -26,6 +26,7 @@ import org.apache.sling.commons.json.JSO
import org.apache.sling.testing.tools.sling.SlingClient;
import org.apache.sling.testing.tools.sling.SlingInstance;
import org.apache.sling.testing.tools.sling.SlingInstanceManager;
+import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -45,16 +46,43 @@ import static org.junit.Assert.assertFal
*/
public abstract class DistributionIntegrationTestBase {
- protected static SlingInstance author;
- protected static SlingInstance publish;
+ protected SlingInstance author;
+ protected SlingInstance publish;
- protected static SlingClient authorClient;
- protected static SlingClient publishClient;
+ protected SlingClient authorClient;
+ protected SlingClient publishClient;
- static {
- SlingInstanceManager slingInstances = new SlingInstanceManager("author", "publish");
- author = slingInstances.getInstance("author");
- publish = slingInstances.getInstance("publish");
+ static SlingInstanceManager slingInstancesManager = null;
+ static SlingInstanceManager sharedSlingInstancesManager = null;
+
+ protected DistributionIntegrationTestBase() {
+ this(false);
+ }
+
+ protected DistributionIntegrationTestBase(boolean useShared) {
+ init(useShared);
+ }
+
+
+ synchronized void init(boolean useShared) {
+
+ if (useShared) {
+ if (sharedSlingInstancesManager == null) {
+ sharedSlingInstancesManager = new SlingInstanceManager("author-shared", "publish-shared") ;
+
+ }
+ author = sharedSlingInstancesManager.getInstance("author-shared");
+ publish = sharedSlingInstancesManager.getInstance("publish-shared");
+
+ } else {
+ if (slingInstancesManager == null) {
+ slingInstancesManager = new SlingInstanceManager("author", "publish");
+
+ }
+
+ author = slingInstancesManager.getInstance("author");
+ publish = slingInstancesManager.getInstance("publish");
+ }
authorClient = new SlingClient(author.getServerBaseUrl(), author.getServerUsername(), author.getServerPassword());
publishClient = new SlingClient(publish.getServerBaseUrl(), publish.getServerUsername(), publish.getServerPassword());
@@ -103,8 +131,8 @@ public abstract class DistributionIntegr
}
- @AfterClass
- public static void checkNoPackagesLeft() throws IOException, JSONException {
+ @After
+ public void checkNoPackagesLeft() throws IOException, JSONException {
assertEmptyFolder(author, authorClient, "/var/sling/distribution/packages/default/shared");
@@ -116,7 +144,7 @@ public abstract class DistributionIntegr
assertEmptyFolder(publish, publishClient, "/etc/packages/sling/distribution");
}
- public static void registerPublish(String publishAgent, String remoteImporter) throws Exception {
+ public void registerPublish(String publishAgent, String remoteImporter) throws Exception {
String remoteImporterUrl = publish.getServerBaseUrl() + importerUrl(remoteImporter);
@@ -132,7 +160,7 @@ public abstract class DistributionIntegr
assertExists(publishClient, importerUrl(remoteImporter));
}
- public static void registerReverse(String reverseAgent, String remoteExporter) throws Exception {
+ public void registerReverse(String reverseAgent, String remoteExporter) throws Exception {
String remoteExporterUrl = publish.getServerBaseUrl() + exporterUrl(remoteExporter);
assertExists(authorClient, authorAgentConfigUrl(reverseAgent));
Added: sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java?rev=1731606&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java (added)
+++ sling/trunk/contrib/extensions/distribution/it/src/test/java/org/apache/sling/distribution/it/ForwardBinaryDistributionTest.java Mon Feb 22 09:17:37 2016
@@ -0,0 +1,65 @@
+/*
+ * 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 static org.apache.sling.distribution.it.DistributionUtils.assertExists;
+import static org.apache.sling.distribution.it.DistributionUtils.distribute;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Random;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.sling.distribution.DistributionRequestType;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class ForwardBinaryDistributionTest extends DistributionIntegrationTestBase {
+
+ @Parameterized.Parameters
+ public static Collection<Object[]> generateData() {
+ return Arrays.asList(new Object[][] {
+ { true },
+ { false },
+ });
+ }
+
+ public ForwardBinaryDistributionTest(boolean useSharedDatastore) {
+ // use instances with shared datastore
+ super(useSharedDatastore);
+ }
+
+ @Test
+ public void testBinaryDistribution() throws Exception {
+ byte[] bytes = new byte[6000];
+ new Random().nextBytes(bytes);
+ InputStream data = new ByteArrayInputStream(bytes);
+ String nodePath = "/content/asset.txt";
+ authorClient.upload(nodePath, data, -1, true);
+
+ assertExists(authorClient, nodePath);
+ distribute(author, "publish", DistributionRequestType.ADD, nodePath);
+ assertExists(publishClient, nodePath);
+ //TODO: also inspect the package size in binaryless case
+ }
+}
Added: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.notshared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.notshared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json?rev=1731606&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.notshared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json (added)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.notshared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json Mon Feb 22 09:17:37 2016
@@ -0,0 +1,6 @@
+{
+ "jcr:primaryType": "sling:OsgiConfig",
+ "name": "default",
+ "type": "jcrvlt",
+ "package.filters": ["/content|-.*/excluded"]
+}
\ No newline at end of file
Added: sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.shared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.shared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json?rev=1731606&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.shared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json (added)
+++ sling/trunk/contrib/extensions/distribution/sample/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.shared/org.apache.sling.distribution.serialization.impl.vlt.VaultDistributionPackageBuilderFactory-default.json Mon Feb 22 09:17:37 2016
@@ -0,0 +1,7 @@
+{
+ "jcr:primaryType": "sling:OsgiConfig",
+ "name": "default",
+ "type": "jcrvlt",
+ "package.filters": ["/content|-.*/excluded"],
+ "useBinaryReferences": true
+}