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
+}