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 2020/11/25 21:11:54 UTC

[sling-org-apache-sling-servlets-annotations-it] branch SLING-9929 created (now 65a06c2)

This is an automated email from the ASF dual-hosted git repository.

olli pushed a change to branch SLING-9929
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-annotations-it.git.


      at 65a06c2  SLING-9929 Use PaxExamServer for HTTP-based integration testing

This branch includes the following new commits:

     new 39a5e33  SLING-9929 - use PaxExamServer for HTTP-driven tests
     new 65a06c2  SLING-9929 Use PaxExamServer for HTTP-based integration testing

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[sling-org-apache-sling-servlets-annotations-it] 02/02: SLING-9929 Use PaxExamServer for HTTP-based integration testing

Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

olli pushed a commit to branch SLING-9929
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-annotations-it.git

commit 65a06c2aaee54f4365745d9045f9604d03950b87
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Wed Nov 25 22:10:44 2020 +0100

    SLING-9929 Use PaxExamServer for HTTP-based integration testing
    
    * Use Sling Bundle Parent 40
    * Use new base configuration for server mode from Testing PaxExam 4.0.0-SNAPSHOT
    * Use Pax Logging for OSGi logging
---
 pom.xml                                            | 21 +++++++++---
 .../annotations/AnnotationsTestSupport.java        | 39 +++++++---------------
 2 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/pom.xml b/pom.xml
index 1faad96..4482c0b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,8 +15,8 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.sling</groupId>
-        <artifactId>sling</artifactId>
-        <version>33</version>
+        <artifactId>sling-bundle-parent</artifactId>
+        <version>40</version>
         <relativePath/>
     </parent>
 
@@ -63,6 +63,7 @@
                     </execution>
                 </executions>
                 <configuration>
+                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
                     <systemPropertyVariables>
                         <bundle.filename>${bundle.filename}</bundle.filename>
                         <pax.vm.options>${pax.vm.options}</pax.vm.options>
@@ -102,7 +103,19 @@
             <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
-
+        <!-- logging -->
+        <dependency>
+            <groupId>org.ops4j.pax.logging</groupId>
+            <artifactId>pax-logging-api</artifactId>
+            <version>2.0.6</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.logging</groupId>
+            <artifactId>pax-logging-logback</artifactId>
+            <version>2.0.6</version>
+            <scope>test</scope>
+        </dependency>
         <!-- testing dependencies -->
         <dependency>
             <groupId>org.apache.sling</groupId>
@@ -152,7 +165,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.testing.paxexam</artifactId>
-            <version>3.1.0</version>
+            <version>4.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java b/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
index f1efd80..d9aeb9d 100644
--- a/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
+++ b/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
@@ -27,9 +27,9 @@ import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExamServer;
 import org.ops4j.pax.exam.options.extra.VMOption;
 
-import static org.apache.sling.testing.paxexam.SlingOptions.logback;
 import static org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
-import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.apache.sling.testing.paxexam.SlingOptions.versionResolver;
+import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.when;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
@@ -38,7 +38,7 @@ import java.net.URI;
 
 public class AnnotationsTestSupport extends TestSupport {
 
-    private final static int STARTUP_WAIT_SECONDS = 30;
+    private final static int STARTUP_WAIT_SECONDS = 60;
 
     protected OsgiConsoleClient CLIENT;
     protected static int httpPort;
@@ -46,16 +46,9 @@ public class AnnotationsTestSupport extends TestSupport {
     @ClassRule
     public static PaxExamServer serverRule = new PaxExamServer();
 
-    public AnnotationsTestSupport() {
-        if(httpPort == 0) {
-            // findFreePort should probably be a static method
-            httpPort = findFreePort();
-        }
-    }
-
     @Configuration
     public Option[] configuration() throws Exception {
-
+        httpPort = findFreePort();
         final String vmOpt = System.getProperty("pax.vm.options");
         VMOption vmOption = null;
         if (StringUtils.isNotEmpty(vmOpt)) {
@@ -68,29 +61,21 @@ public class AnnotationsTestSupport extends TestSupport {
             jacocoCommand = new VMOption(jacocoOpt);
         }
 
-        final String workingDirectory = workingDirectory();
-
-        return composite(
-            // TODO not sure why the below list of bundles is different from
-            // running tests with PaxExam.class - but this setup works
-            //super.baseConfiguration(),
-
+        return options(
             when(vmOption != null).useOptions(vmOption),
             when(jacocoCommand != null).useOptions(jacocoCommand),
 
             // For some reason, Jetty starts first on port 8080 without this
             systemProperty("org.osgi.service.http.port").value(String.valueOf(httpPort)),
 
-            slingQuickstartOakTar(workingDirectory, httpPort),
+            serverBaseConfiguration(),
+            slingQuickstartOakTar(workingDirectory(), httpPort),
             testBundle("bundle.filename"),
-
-            logback(),
-            mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.log").version("1.2.4"),
-            mavenBundle().groupId("log4j").artifactId("log4j").version("1.2.17"),
-            mavenBundle().groupId("org.apache.aries.spifly").artifactId("org.apache.aries.spifly.dynamic.framework.extension").version("1.3.2"),
-            mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.webconsole.plugins.ds").version("2.1.0")
-            
-        ).getOptions();
+            mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.webconsole.plugins.ds").version(versionResolver),
+            // logging
+            mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-api").versionAsInProject(),
+            mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-logback").versionAsInProject()
+        );
     }
 
     @Before


[sling-org-apache-sling-servlets-annotations-it] 01/02: SLING-9929 - use PaxExamServer for HTTP-driven tests

Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

olli pushed a commit to branch SLING-9929
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-annotations-it.git

commit 39a5e3393a4d67b67cff4ebce0f98e2b2f4dee7b
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Tue Nov 24 10:33:46 2020 +0100

    SLING-9929 - use PaxExamServer for HTTP-driven tests
---
 pom.xml                                            | 142 +++++++++------------
 .../annotations/AnnotationsTestSupport.java        | 103 +++++++++++++++
 .../servlets/annotations/ServicePropertiesIT.java  |   2 +-
 .../annotations/ServletRegistrationIT.java         |  10 +-
 .../sling/servlets/annotations/TestSupport.java    |  69 ----------
 src/test/resources/logback.xml                     |  32 +++++
 6 files changed, 199 insertions(+), 159 deletions(-)

diff --git a/pom.xml b/pom.xml
index ece21f7..1faad96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,9 +38,10 @@
     <!-- compile with java 7 -->
     <properties>
         <sling.java.version>8</sling.java.version>
-        <http.host>localhost</http.host>
-        <!-- start with -DkeepITServerRunning=true to allow to rerun ITs or inspect the server after the ITs have been executed there -->
-        <keepITServerRunning>false</keepITServerRunning>
+        <org.ops4j.pax.exam.version>4.13.3</org.ops4j.pax.exam.version>
+        <!-- additional options that can be passed to Pax before executing the tests -->
+        <pax.vm.options />
+        <bundle.filename>${basedir}/target/${project.build.finalName}.jar</bundle.filename>
     </properties>
 
     <build>
@@ -51,85 +52,6 @@
                 <version>5.0.0</version>
             </plugin>
             <plugin>
-                <!-- Find free ports to run our server -->
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>reserve-server-port</id>
-                        <goals>
-                            <goal>reserve-network-port</goal>
-                        </goals>
-                        <phase>pre-integration-test</phase>
-                        <configuration>
-                            <portNames>
-                                <!-- used port name must be stored in property because it must be used for the base url -->
-                                <portName>http.port</portName>
-                            </portNames>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <!-- the Sling instance is provisioned from the model in src/main/provisioning/it-model.txt -->
-                <groupId>org.apache.sling</groupId>
-                <artifactId>slingstart-maven-plugin</artifactId>
-                <!-- for https://issues.apache.org/jira/browse/SLING-7662 -->
-                <version>1.8.2</version>
-                <extensions>true</extensions>
-                <executions>
-                    <execution>
-                        <id>customise-starter</id>
-                        <goals>
-                            <goal>prepare-package</goal>
-                        </goals>
-                        <configuration>
-                            <modelDirectory>${project.basedir}/src/test/provisioning</modelDirectory>
-                            <usePomDependencies>true</usePomDependencies>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>package-starter</id>
-                        <goals>
-                            <goal>package</goal>
-                        </goals>
-                        <configuration>
-                            <attachArtifact>false</attachArtifact>
-                            <modelDirectory>${project.basedir}/src/test/provisioning</modelDirectory>
-                            <usePomDependencies>true</usePomDependencies>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>start-container-before-IT</id>
-                        <goals>
-                            <goal>start</goal>
-                        </goals>
-                    </execution>
-                    <execution>
-                        <id>stop-container-after-IT</id>
-                        <goals>
-                            <goal>stop</goal>
-                        </goals>
-                        <configuration>
-                            <shouldBlockUntilKeyIsPressed>${keepITServerRunning}</shouldBlockUntilKeyIsPressed>
-                        </configuration>
-                    </execution>
-                </executions>
-                <configuration>
-                    <servers>
-                        <!-- this configuration applies to both 'start' and 'stop' -->
-                        <server>
-                            <id>singleinstance</id>
-                            <port>${http.port}</port>
-                            <vmOpts>${sling.vm.options}</vmOpts>
-                            <stdOutFile>sling/logs/stdout.log</stdOutFile>
-                        </server>
-                    </servers>
-                    <!-- this configuration only applies to 'prepare-package' and 'package' -->
-                    <disableExtendingMavenClasspath>true</disableExtendingMavenClasspath>
-                </configuration>
-            </plugin>
-            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
                 <executions>
@@ -142,11 +64,15 @@
                 </executions>
                 <configuration>
                     <systemPropertyVariables>
-                        <baseUrl>http://${http.host}:${http.port}/</baseUrl>
-                        <bundleFile>${project.build.directory}/${project.build.finalName}.jar</bundleFile>
+                        <bundle.filename>${bundle.filename}</bundle.filename>
+                        <pax.vm.options>${pax.vm.options}</pax.vm.options>
                     </systemPropertyVariables>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.servicemix.tooling</groupId>
+                <artifactId>depends-maven-plugin</artifactId>
+            </plugin>
         </plugins>
     </build>
 
@@ -217,6 +143,54 @@
             <artifactId>osgi.core</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>6.0.3</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.testing.paxexam</artifactId>
+            <version>3.1.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-cm</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-container-forked</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-junit4</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-link-mvn</artifactId>
+            <version>${org.ops4j.pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.url</groupId>
+            <artifactId>pax-url-wrap</artifactId>
+            <version>2.3.0</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java b/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
new file mode 100644
index 0000000..f1efd80
--- /dev/null
+++ b/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
@@ -0,0 +1,103 @@
+/*
+ * 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.servlets.annotations;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.sling.servlets.annotations.services.PathBoundService;
+import org.apache.sling.testing.clients.osgi.OsgiConsoleClient;
+import org.apache.sling.testing.paxexam.TestSupport;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExamServer;
+import org.ops4j.pax.exam.options.extra.VMOption;
+
+import static org.apache.sling.testing.paxexam.SlingOptions.logback;
+import static org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.when;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+
+import java.net.URI;
+
+public class AnnotationsTestSupport extends TestSupport {
+
+    private final static int STARTUP_WAIT_SECONDS = 30;
+
+    protected OsgiConsoleClient CLIENT;
+    protected static int httpPort;
+
+    @ClassRule
+    public static PaxExamServer serverRule = new PaxExamServer();
+
+    public AnnotationsTestSupport() {
+        if(httpPort == 0) {
+            // findFreePort should probably be a static method
+            httpPort = findFreePort();
+        }
+    }
+
+    @Configuration
+    public Option[] configuration() throws Exception {
+
+        final String vmOpt = System.getProperty("pax.vm.options");
+        VMOption vmOption = null;
+        if (StringUtils.isNotEmpty(vmOpt)) {
+            vmOption = new VMOption(vmOpt);
+        }
+
+        final String jacocoOpt = System.getProperty("jacoco.command");
+        VMOption jacocoCommand = null;
+        if (StringUtils.isNotEmpty(jacocoOpt)) {
+            jacocoCommand = new VMOption(jacocoOpt);
+        }
+
+        final String workingDirectory = workingDirectory();
+
+        return composite(
+            // TODO not sure why the below list of bundles is different from
+            // running tests with PaxExam.class - but this setup works
+            //super.baseConfiguration(),
+
+            when(vmOption != null).useOptions(vmOption),
+            when(jacocoCommand != null).useOptions(jacocoCommand),
+
+            // For some reason, Jetty starts first on port 8080 without this
+            systemProperty("org.osgi.service.http.port").value(String.valueOf(httpPort)),
+
+            slingQuickstartOakTar(workingDirectory, httpPort),
+            testBundle("bundle.filename"),
+
+            logback(),
+            mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.log").version("1.2.4"),
+            mavenBundle().groupId("log4j").artifactId("log4j").version("1.2.17"),
+            mavenBundle().groupId("org.apache.aries.spifly").artifactId("org.apache.aries.spifly.dynamic.framework.extension").version("1.3.2"),
+            mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.webconsole.plugins.ds").version("2.1.0")
+            
+        ).getOptions();
+    }
+
+    @Before
+    public void waitForSling() throws Exception {
+        final URI url = new URI(String.format("http://localhost:%d", httpPort));
+        CLIENT = new OsgiConsoleClient(url, "admin", "admin");
+        CLIENT.waitExists("/", STARTUP_WAIT_SECONDS * 1000, 500);
+        CLIENT.waitComponentRegistered(PathBoundService.class.getName(), 10 * 1000, 500);
+    }
+}
diff --git a/src/test/java/org/apache/sling/servlets/annotations/ServicePropertiesIT.java b/src/test/java/org/apache/sling/servlets/annotations/ServicePropertiesIT.java
index 4ddbb31..70171a1 100644
--- a/src/test/java/org/apache/sling/servlets/annotations/ServicePropertiesIT.java
+++ b/src/test/java/org/apache/sling/servlets/annotations/ServicePropertiesIT.java
@@ -35,7 +35,7 @@ import org.junit.Test;
  *  are set by our annotations - this is what this class does for some of
  *  our test services.
  */
-public class ServicePropertiesIT extends TestSupport {
+public class ServicePropertiesIT extends AnnotationsTestSupport {
     
     private static String componentPath(Object nameOrId) {
         return "/system/console/components/" + nameOrId + ".json";
diff --git a/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java b/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
index 297f599..ccdf406 100644
--- a/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
+++ b/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
@@ -27,7 +27,7 @@ import org.junit.Test;
  *  some of the servlet resolver tests, see also {@link ServicePropertiesIT}
  *  for another testing method.
  */
-public class ServletRegistrationIT extends TestSupport {
+public class ServletRegistrationIT extends AnnotationsTestSupport {
     
     @Test
     public void testPathBoundServlet() throws ClientException, UnsupportedEncodingException {
@@ -56,7 +56,7 @@ public class ServletRegistrationIT extends TestSupport {
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServlet.html", 560);
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServlet.json", 560);
         // only GET and HEAD are supposed to be working
-        CLIENT.doPut("/content/servlettest/resourceTypeBoundServlet.json", new StringEntity("some text"), Collections.emptyList(), 201);
+        CLIENT.doPut("/content/servlettest/resourceTypeBoundServlet.json", new StringEntity("some text"), Collections.emptyList(), 405);
     }
 
     @Test
@@ -65,7 +65,7 @@ public class ServletRegistrationIT extends TestSupport {
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServletWithPrefix.html", 590);
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServletWithPrefix.json", 590);
         // only GET and HEAD are supposed to be working
-        CLIENT.doPut("/content/servlettest/resourceTypeBoundServletWithPrefix.json", new StringEntity("some text"), Collections.emptyList(), 201);
+        CLIENT.doPut("/content/servlettest/resourceTypeBoundServletWithPrefix.json", new StringEntity("some text"), Collections.emptyList(), 405);
     }
 
     @Test
@@ -76,7 +76,7 @@ public class ServletRegistrationIT extends TestSupport {
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServletWithExtension.ext2", 570);
         CLIENT.doPut("/content/servlettest/resourceTypeBoundServletWithExtension.ext2", new StringEntity("some text"), Collections.emptyList(), 571);
         // extension is considered for all methods!
-        CLIENT.doPut("/content/servlettest/resourceTypeBoundServletWithExtension.someotherext", new StringEntity("some text"), Collections.emptyList(), 201); // DEFAULT servlet
+        CLIENT.doPut("/content/servlettest/resourceTypeBoundServletWithExtension.someotherext", new StringEntity("some text"), Collections.emptyList(), 405); // DEFAULT servlet
     }
 
     @Test
@@ -90,7 +90,7 @@ public class ServletRegistrationIT extends TestSupport {
         // some non-registered selector as last selector
         CLIENT.doGet("/content/servlettest/resourceTypeBoundServletWithSelectors.selector1.selector2.someotherselector.someext", 600);
         // only GET and HEAD are supposed to be working
-        CLIENT.doPut("/content/servlettest/resourceTypeBoundServletWithSelectors.selector3.someext", new StringEntity("some text"), Collections.emptyList(), 201);
+        CLIENT.doPut("/content/servlettest/resourceTypeBoundServletWithSelectors.selector3.someext", new StringEntity("some text"), Collections.emptyList(), 405);
     }
 
     @Test
diff --git a/src/test/java/org/apache/sling/servlets/annotations/TestSupport.java b/src/test/java/org/apache/sling/servlets/annotations/TestSupport.java
deleted file mode 100644
index 6973804..0000000
--- a/src/test/java/org/apache/sling/servlets/annotations/TestSupport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.servlets.annotations;
-
-import java.io.File;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.sling.testing.clients.ClientException;
-import org.apache.sling.testing.clients.osgi.OsgiConsoleClient;
-import org.junit.BeforeClass;
-
-public class TestSupport {
-    
-    static OsgiConsoleClient CLIENT;
-    
-    private static final String BUNDLE_SYMBOLICNAME = "org.apache.sling.servlets.annotations.it";
-    private static final long BUNDLE_START_TIMEOUT = TimeUnit.SECONDS.toMillis(10);
-    private static final long SERVICE_START_TIMEOUT = TimeUnit.SECONDS.toMillis(60);
-    
-    @BeforeClass
-    public static synchronized void setupOnce() throws ClientException, InterruptedException, TimeoutException, URISyntaxException {
-        if(CLIENT != null) {
-            return;
-        }
-
-        String baseUrl = System.getProperty("baseUrl");
-        if (baseUrl == null) {
-            throw new IllegalArgumentException("IT must be started with environment variable 'baseUrl' set");
-        }
-        URI url = new URI(baseUrl);
-        CLIENT = new OsgiConsoleClient(url, "admin", "admin");
-        
-        String bundleFile = System.getProperty("bundleFile");
-        if (bundleFile == null) {
-            throw new IllegalArgumentException("IT must be started with environment variable 'bundleFile' set");
-        }
-        // deploy bundle to server
-        File file = new File(bundleFile);
-        if (!file.exists()) {
-            throw new IllegalArgumentException("Test bundle file in " + file + " does not exist!");
-        }
-        // wait until the server is fully started
-        CLIENT.waitExists("/starter/index.html", SERVICE_START_TIMEOUT, 500);
-
-        CLIENT.waitInstallBundle(file, true, -1, BUNDLE_START_TIMEOUT, 500);
-        
-        // the following method somehow fails sometimes
-        CLIENT.waitServiceRegistered("javax.servlet.Servlet", BUNDLE_SYMBOLICNAME, SERVICE_START_TIMEOUT, 500);
-        CLIENT.waitComponentRegistered("org.apache.sling.servlets.annotations.testservlets.PathBoundServlet", SERVICE_START_TIMEOUT, 500);
-        CLIENT.waitComponentRegistered("org.apache.sling.servlets.annotations.testservletfilters.SimpleServletFilter", SERVICE_START_TIMEOUT, 500);
-    }
-}
diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml
new file mode 100644
index 0000000..a603c15
--- /dev/null
+++ b/src/test/resources/logback.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<configuration>
+  <appender name="file" class="ch.qos.logback.core.FileAppender">
+    <file>target/test.log</file>
+    <append>true</append>
+    <encoder>
+      <pattern>%date level=%level thread=%thread logger=%logger sourcefile=%file line=%line %mdc message=%msg%n</pattern>
+    </encoder>
+  </appender>
+  
+  <root level="info">
+    <appender-ref ref="file"/>
+  </root>
+</configuration>