You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2015/04/22 13:51:00 UTC

svn commit: r1675339 - in /sling/trunk/contrib/launchpad/karaf: org.apache.sling.launchpad.karaf-features/src/main/feature/ org.apache.sling.launchpad.karaf-integration-tests/ org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/...

Author: olli
Date: Wed Apr 22 11:50:59 2015
New Revision: 1675339

URL: http://svn.apache.org/r1675339
Log:
SLING-4411 provide Oak features

* add sling-launchpad-oak-tar and sling-launchpad-oak-mongo

Added:
    sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakMongoIT.java
    sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakTarIT.java
Removed:
    sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakIT.java
Modified:
    sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-features/src/main/feature/feature.xml
    sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/pom.xml

Modified: sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-features/src/main/feature/feature.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-features/src/main/feature/feature.xml?rev=1675339&r1=1675338&r2=1675339&view=diff
==============================================================================
--- sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-features/src/main/feature/feature.xml (original)
+++ sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-features/src/main/feature/feature.xml Wed Apr 22 11:50:59 2015
@@ -195,11 +195,40 @@
     <!-- bundle dependencies -->
     <bundle dependency="true">mvn:org.apache.derby/derby/10.10.2.0</bundle>
   </feature>
-  <feature name="sling-launchpad-oak" version="${project.version}">
+  <feature name="sling-launchpad-oak" version="${project.version}"><!-- hidden="true" -->
     <!-- Sling with Oak Repository and Felix Web Console -->
-    <config name="org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService">
-      name=Default\ NodeStore
-      repository.home=sling/oak/repository
+    <!-- http://jackrabbit.apache.org/oak/docs/osgi_config.html -->
+    <config name="org.apache.felix.jaas.Configuration.factory-GuestLoginModule">
+      jaas.controlFlag=optional
+      jaas.classname=org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule
+      jaas.ranking=I"300"
+    </config>
+    <config name="org.apache.felix.jaas.Configuration.factory-LoginModuleImpl">
+      jaas.controlFlag=required
+      jaas.classname=org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl
+    </config>
+    <config name="org.apache.felix.jaas.Configuration.factory-TokenLoginModule">
+      jaas.controlFlag=sufficient
+      jaas.classname=org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule
+      jaas.ranking=I"200"
+    </config>
+    <config name="org.apache.felix.jaas.ConfigurationSpi">
+      jaas.defaultRealmName=jackrabbit.oak
+      jaas.configProviderName=FelixJaasProvider
+    </config>
+    <config name="org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl">
+      org.apache.jackrabbit.oak.authentication.configSpiName=FelixJaasProvider
+    </config>
+    <config name="org.apache.jackrabbit.oak.security.user.UserConfigurationImpl">
+      groupsPath=/home/groups
+      usersPath=/home/users
+      defaultDepth=1
+      importBehavior=besteffort
+    </config>
+    <config name="org.apache.jackrabbit.oak.spi.security.user.action.DefaultAuthorizableActionProvider">
+      enabledActions=["org.apache.jackrabbit.oak.spi.security.user.action.AccessControlAction"]
+      userPrivilegeNames=["jcr:all"]
+      groupPrivilegeNames=["jcr:read"]
     </config>
     <feature version="${project.version}">infrastructure-sling</feature>
     <feature version="${project.version}">webconsole-sling</feature>
@@ -212,6 +241,22 @@
     <feature version="${project.version}">sling-extension-adapter</feature>
     <feature version="${project.version}">sling-extension-bundleresource</feature>
   </feature>
+  <feature name="sling-launchpad-oak-tar" version="${project.version}">
+    <config name="org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService">
+      name=Default\ NodeStore
+      repository.home=sling/oak/repository
+    </config>
+    <feature version="${project.version}">sling-launchpad-oak</feature>
+  </feature>
+  <feature name="sling-launchpad-oak-mongo" version="${project.version}">
+    <config name="org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService">
+      mongouri=mongodb://localhost:27017
+      db=sling
+    </config>
+    <feature version="${project.version}">sling-launchpad-oak</feature>
+    <!-- bundle dependencies -->
+    <bundle dependency="true">mvn:org.mongodb/mongo-java-driver/2.13.1</bundle>
+  </feature>
   <!-- Apache Sling JCR -->
   <feature name="sling-jcr" version="${project.version}">
     <feature version="${project.version}">sling</feature>

Modified: sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/pom.xml?rev=1675339&r1=1675338&r2=1675339&view=diff
==============================================================================
--- sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/pom.xml (original)
+++ sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/pom.xml Wed Apr 22 11:50:59 2015
@@ -121,6 +121,18 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>de.flapdoodle.embed</groupId>
+      <artifactId>de.flapdoodle.embed.mongo</artifactId>
+      <version>1.47.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>de.flapdoodle.embed</groupId>
+      <artifactId>de.flapdoodle.embed.process</artifactId>
+      <version>1.41.1</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>

Added: sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakMongoIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakMongoIT.java?rev=1675339&view=auto
==============================================================================
--- sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakMongoIT.java (added)
+++ sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakMongoIT.java Wed Apr 22 11:50:59 2015
@@ -0,0 +1,117 @@
+/*
+ * 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.launchpad.karaf.tests.bootstrap;
+
+import java.io.IOException;
+
+import javax.inject.Inject;
+import javax.jcr.Session;
+
+import de.flapdoodle.embed.mongo.MongodExecutable;
+import de.flapdoodle.embed.mongo.MongodProcess;
+import de.flapdoodle.embed.mongo.MongodStarter;
+import de.flapdoodle.embed.mongo.config.IMongodConfig;
+import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
+import de.flapdoodle.embed.mongo.config.Net;
+import de.flapdoodle.embed.mongo.distribution.Version;
+import de.flapdoodle.embed.process.runtime.Network;
+import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.launchpad.karaf.testing.KarafTestSupport;
+import org.junit.AfterClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.OptionUtils;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.ops4j.pax.exam.util.Filter;
+import org.osgi.framework.Bundle;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class SlingLaunchpadOakMongoIT extends KarafTestSupport {
+
+    @Inject
+    @Filter(timeout = 300000)
+    public SlingRepository slingRepository;
+
+    private static MongodExecutable executable;
+
+    private static MongodProcess process;
+
+    protected void startMongo(final int port) throws IOException {
+        final MongodStarter starter = MongodStarter.getDefaultInstance();
+        final Net net = new Net(port, Network.localhostIsIPv6());
+        final IMongodConfig mongodConfig = new MongodConfigBuilder().version(Version.Main.PRODUCTION).net(net).build();
+        executable = starter.prepare(mongodConfig);
+        process = executable.start();
+    }
+
+    @AfterClass // TODO does it work?
+    public static void stopMongo() throws Exception {
+        if (executable != null) {
+            executable.stop();
+        }
+    }
+
+    @Configuration
+    public Option[] configuration() throws IOException {
+        final int port = Network.getFreeServerPort();
+        startMongo(port);
+        final String mongoUri = String.format("mongodb://localhost:%s", port);
+        return OptionUtils.combine(baseConfiguration(),
+            editConfigurationFilePut("etc/org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.cfg", "mongouri", mongoUri),
+            wrappedBundle(mavenBundle().groupId("de.flapdoodle.embed").artifactId("de.flapdoodle.embed.mongo").version("1.47.2")),
+            wrappedBundle(mavenBundle().groupId("de.flapdoodle.embed").artifactId("de.flapdoodle.embed.process").version("1.41.1")),
+            wrappedBundle(mavenBundle().groupId("net.java.dev.jna").artifactId("jna").version("4.1.0")),
+            wrappedBundle(mavenBundle().groupId("net.java.dev.jna").artifactId("jna-platform").version("4.1.0")),
+            mavenBundle().groupId("org.apache.commons").artifactId("commons-compress").version("1.9"),
+            mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").version("3.4"),
+            addBootFeature("sling-launchpad-oak-mongo")
+        );
+    }
+
+    @Test
+    public void testOrgMongodbMongoJavaDriver() {
+        final Bundle bundle = findBundle("org.mongodb.mongo-java-driver");
+        assertNotNull(bundle);
+        assertEquals(Bundle.ACTIVE, bundle.getState());
+    }
+
+    @Test
+    public void testSlingRepository() throws Exception {
+        assertNotNull(slingRepository);
+    }
+
+    @Test
+    public void testVarSlingExists() throws Exception {
+        final Session session = slingRepository.loginAdministrative(null);
+        session.getRootNode().getNode("var/sling");
+        session.logout();
+    }
+
+}

Added: sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakTarIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakTarIT.java?rev=1675339&view=auto
==============================================================================
--- sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakTarIT.java (added)
+++ sling/trunk/contrib/launchpad/karaf/org.apache.sling.launchpad.karaf-integration-tests/src/test/java/org/apache/sling/launchpad/karaf/tests/bootstrap/SlingLaunchpadOakTarIT.java Wed Apr 22 11:50:59 2015
@@ -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.launchpad.karaf.tests.bootstrap;
+
+import javax.inject.Inject;
+import javax.jcr.Session;
+
+import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.launchpad.karaf.testing.KarafTestSupport;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.OptionUtils;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.ops4j.pax.exam.util.Filter;
+
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class SlingLaunchpadOakTarIT extends KarafTestSupport {
+
+    @Inject
+    @Filter(timeout = 300000)
+    public SlingRepository slingRepository;
+
+    @Configuration
+    public Option[] configuration() {
+        return OptionUtils.combine(baseConfiguration(),
+            addBootFeature("sling-launchpad-oak-tar")
+        );
+    }
+
+    @Test
+    public void testSlingRepository() throws Exception {
+        assertNotNull(slingRepository);
+    }
+
+    @Test
+    public void testVarSlingExists() throws Exception {
+        final Session session = slingRepository.loginAdministrative(null);
+        session.getRootNode().getNode("var/sling");
+        session.logout();
+    }
+
+}