You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2013/05/27 18:33:41 UTC
svn commit: r1486660 - in
/sling/whiteboard/bdelacretaz/sling-junit-launchpad: ./ src/ src/main/
src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/sling/ src/main/java/org/apache/sling/junit/
src/main/java/org/apache/...
Author: bdelacretaz
Date: Mon May 27 16:33:41 2013
New Revision: 1486660
URL: http://svn.apache.org/r1486660
Log:
sling-junit-launchpad prototype
Added:
sling/whiteboard/bdelacretaz/sling-junit-launchpad/ (with props)
sling/whiteboard/bdelacretaz/sling-junit-launchpad/pom.xml
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/launchpad/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/launchpad/rules/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/launchpad/rules/SlingLaunchpadRule.java
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/launchpad/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/launchpad/rules/
sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/launchpad/rules/SimplestSlingTestEverTest.java
Propchange: sling/whiteboard/bdelacretaz/sling-junit-launchpad/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon May 27 16:33:41 2013
@@ -0,0 +1,13 @@
+target
+bin
+*.iml
+*.ipr
+*.iws
+.settings
+.project
+.classpath
+.externalToolBuilders
+maven-eclipse.xml
+derby.log
+jackrabbit
+sling
Added: sling/whiteboard/bdelacretaz/sling-junit-launchpad/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/sling-junit-launchpad/pom.xml?rev=1486660&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/sling-junit-launchpad/pom.xml (added)
+++ sling/whiteboard/bdelacretaz/sling-junit-launchpad/pom.xml Mon May 27 16:33:41 2013
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling</artifactId>
+ <version>16</version>
+ </parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.junit.launchpad</artifactId>
+ <version>0.9.9-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>Apache Sling Launchpad Rule for JUnit</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.launchpad</artifactId>
+ <version>7-SNAPSHOT</version>
+ <classifier>standalone</classifier>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.testing.tools</artifactId>
+ <version>1.0.6</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/launchpad/rules/SlingLaunchpadRule.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/launchpad/rules/SlingLaunchpadRule.java?rev=1486660&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/launchpad/rules/SlingLaunchpadRule.java (added)
+++ sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/main/java/org/apache/sling/junit/launchpad/rules/SlingLaunchpadRule.java Mon May 27 16:33:41 2013
@@ -0,0 +1,76 @@
+/*
+ * 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.junit.launchpad.rules;
+
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.sling.launchpad.app.Main;
+import org.apache.sling.testing.tools.http.RequestBuilder;
+import org.apache.sling.testing.tools.http.RequestExecutor;
+import org.junit.rules.ExternalResource;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+public class SlingLaunchpadRule extends ExternalResource {
+
+ private final int port;
+
+ // TODO this makes the Rule dependent on the Sling testing tools -
+ // we might want to move this to a sub-rule to avoid requiring them
+ private static RequestBuilder requestBuilder;
+ private static RequestExecutor requestExecutor;
+ public static final String ADMIN = "admin";
+
+ public SlingLaunchpadRule() {
+ // TODO use dynamic free port
+ this.port = 9362;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ @Override
+ public Statement apply(Statement base, Description description) {
+ // Could take config options from description.getTestClass...
+ return super.apply(base, description);
+ }
+
+ @Override
+ protected void before() throws Throwable {
+ // TODO for now we start Sling only once per VM, should be configurable.
+ // TODO cleanup remains of old Sling instances?
+ if(requestBuilder == null) {
+ final String [] args = { "-p", String.valueOf(port) };
+ Main.main(args);
+ requestExecutor = new RequestExecutor(new DefaultHttpClient());
+ requestBuilder = new RequestBuilder("http://127.0.0.1:" + port);
+ }
+ }
+
+ @Override
+ protected void after() {
+ // Nothing to do, Sling is stopped by a shutdown hook
+ }
+
+ public RequestBuilder builder() {
+ return requestBuilder;
+ }
+
+ public RequestExecutor executor() {
+ return requestExecutor;
+ }
+}
Added: sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/launchpad/rules/SimplestSlingTestEverTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/launchpad/rules/SimplestSlingTestEverTest.java?rev=1486660&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/launchpad/rules/SimplestSlingTestEverTest.java (added)
+++ sling/whiteboard/bdelacretaz/sling-junit-launchpad/src/test/java/org/apache/sling/junit/launchpad/rules/SimplestSlingTestEverTest.java Mon May 27 16:33:41 2013
@@ -0,0 +1,61 @@
+/*
+ * 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.junit.launchpad.rules;
+
+import static org.apache.sling.junit.launchpad.rules.SlingLaunchpadRule.ADMIN;
+import org.junit.Rule;
+import org.junit.Test;
+
+/** Run some Sling tests via its HTTP interface - a full Sling launchpad
+ * instance is setup transparently using a JUnit Rule.
+ */
+public class SimplestSlingTestEverTest {
+
+ @Rule
+ public final SlingLaunchpadRule sling = new SlingLaunchpadRule();
+
+ @Test
+ public void testOsgiConsole() throws Exception {
+ final String [] subpaths = {
+ "bundles",
+ "components",
+ "configMgr",
+ "config",
+ "licenses",
+ "logs",
+ "memoryusage",
+ "services"
+ };
+
+ for(String subpath : subpaths) {
+ final String path = "/system/console/" + subpath;
+ sling.executor().execute(
+ sling.builder().buildGetRequest(path)
+ .withCredentials(ADMIN, ADMIN)
+ ).assertStatus(200);
+ }
+ }
+
+ @Test
+ public void testRootContent() throws Exception {
+ sling.executor().execute(
+ sling.builder().buildGetRequest("/")
+ .withCredentials(ADMIN, ADMIN)
+ ).assertStatus(200)
+ .assertContentRegexp("[Ss]ling [Ll]aunchpad");
+ }
+}
\ No newline at end of file