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

bdelacretaz pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-junit-core.git

commit 2811d3b8f086a309ff9e79562db26cec53932bb5
Author: Bertrand Delacretaz <[email protected]>
AuthorDate: Mon Mar 15 17:55:57 2021 +0100

    SLING-9980 - fix integration tests for Java 11
---
 src/it/annotations-it/pom.xml                      |  19 +++-
 .../junit/annotations/AnnotationsTestSupport.java  | 111 ++++++++-------------
 .../sling/junit/annotations/ReferenceIT.java       |  17 +++-
 3 files changed, 72 insertions(+), 75 deletions(-)

diff --git a/src/it/annotations-it/pom.xml b/src/it/annotations-it/pom.xml
index 4e08087..c7f194e 100644
--- a/src/it/annotations-it/pom.xml
+++ b/src/it/annotations-it/pom.xml
@@ -61,10 +61,13 @@
           </execution>
         </executions>
         <configuration>
+          <redirectTestOutputToFile>true</redirectTestOutputToFile>
           <systemPropertyVariables>
             <bundle.filename>${bundle.filename}</bundle.filename>
             <pax.vm.options>${pax.vm.options}</pax.vm.options>
           </systemPropertyVariables>
+          <!-- pax exam bug, often times out at exit -->
+          
<forkedProcessExitTimeoutInSeconds>1</forkedProcessExitTimeoutInSeconds>
         </configuration>
       </plugin>
       <plugin>
@@ -148,10 +151,22 @@
       <version>6.0.3</version>
       <scope>test</scope>
     </dependency>
+     <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>
     <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>
@@ -191,4 +206,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git 
a/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/AnnotationsTestSupport.java
 
b/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/AnnotationsTestSupport.java
index 74c813b..e762f35 100644
--- 
a/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/AnnotationsTestSupport.java
+++ 
b/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/AnnotationsTestSupport.java
@@ -17,48 +17,41 @@
 package org.apache.sling.junit.annotations;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.junit.it.impl.MyLameServiceForTestingIT;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
 import org.apache.sling.testing.clients.osgi.OsgiConsoleClient;
-
-import java.net.ServerSocket;
-import java.net.URI;
-
+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 org.apache.sling.testing.paxexam.SlingOptions;
-import static org.apache.sling.testing.paxexam.SlingOptions.logback;
+
+import org.apache.sling.junit.it.impl.MyCoolServiceForTestingIT;
+import org.apache.sling.junit.it.impl.MyLameServiceForTestingIT;
 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.apache.sling.testing.paxexam.SlingOptions.logback;
+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.wrappedBundle;
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
-import static org.ops4j.pax.exam.CoreOptions.when;
-import org.apache.sling.testing.paxexam.TestSupport;
 
+import java.net.URI;
 
 public class AnnotationsTestSupport extends TestSupport {
-    protected static int httpPort;
-    protected static OsgiConsoleClient CLIENT;
+
     private final static int STARTUP_WAIT_SECONDS = 60;
 
+    protected OsgiConsoleClient CLIENT;
+    protected static int httpPort;
+
     @ClassRule
-    public static PaxExamServer serverRule = new PaxExamServer() {
-        @Override
-        protected void before() throws Exception {
-            // Use a different port for each OSGi framework instance
-            // that's started - they can overlap if the previous one
-            // is not fully stopped when the next one starts.
-            setHttpPort();
-            super.before();
-        }
-    };
+    public static PaxExamServer serverRule = new PaxExamServer();
 
     @Configuration
     public Option[] configuration() throws Exception {
-
+        httpPort = findFreePort();
         final String vmOpt = System.getProperty("pax.vm.options");
         VMOption vmOption = null;
         if (StringUtils.isNotEmpty(vmOpt)) {
@@ -71,58 +64,40 @@ public class AnnotationsTestSupport extends TestSupport {
             jacocoCommand = new VMOption(jacocoOpt);
         }
 
-        final String workingDirectory = workingDirectory();
+        return options(
+            when(vmOption != null).useOptions(vmOption),
+            when(jacocoCommand != null).useOptions(jacocoCommand),
 
-        // Need recent commons.johnzon for the osgi.contract=JavaJSONP 
capability
-        SlingOptions.versionResolver.setVersion("org.apache.sling", 
"org.apache.sling.commons.johnzon", "1.2.6");
+            // For some reason, Jetty starts first on port 8080 without this
+            
systemProperty("org.osgi.service.http.port").value(String.valueOf(httpPort)),
 
-        return composite(
-                // TODO not sure why the below list of bundles is different 
from
-                // running tests with PaxExam.class (SLING-9929)
-                //super.baseConfiguration(),
+            serverBaseConfiguration(),
+            slingQuickstartOakTar(workingDirectory(), httpPort),
 
-                when(vmOption != null).useOptions(vmOption),
-                when(jacocoCommand != null).useOptions(jacocoCommand),
+            testBundle("bundle.filename"),
+            
mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.junit.core").versionAsInProject(),
+            
mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.webconsole.plugins.ds").version(versionResolver),
 
-                // 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"),
-                
mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.junit.core").versionAsInProject(),
-
-                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();
+            // logging
+            
mavenBundle().groupId("ch.qos.logback").artifactId("logback-classic").versionAsInProject(),
+            
mavenBundle().groupId("ch.qos.logback").artifactId("logback-core").versionAsInProject(),
+            
mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-api").versionAsInProject(),
+            
mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-logback").versionAsInProject()
+        );
     }
 
-    @BeforeClass
-    public static void waitForSling() throws Exception {
+    @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(MyLameServiceForTestingIT.class.getName(), 10 * 
1000, 500);
-
-        // Verify stable status for a bit
-        for(int i=0; i < 10 ; i++) {
-            
CLIENT.waitComponentRegistered(MyLameServiceForTestingIT.class.getName(), 1000, 
100);
-            Thread.sleep(100);
-        }
-    }
-
-    static void setHttpPort() {
-        try {
-            final ServerSocket serverSocket = new ServerSocket(0);
-            httpPort = serverSocket.getLocalPort();
-            serverSocket.close();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
+        final String [] waitFor = {
+            MyCoolServiceForTestingIT.class.getName(),
+            MyLameServiceForTestingIT.class.getName()
+        };
+        for(String clazz : waitFor) {
+            CLIENT.waitComponentRegistered(clazz, 10 * 1000, 500);
         }
     }
-}
+}
\ No newline at end of file
diff --git 
a/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/ReferenceIT.java
 
b/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/ReferenceIT.java
index 338aaeb..bc23215 100644
--- 
a/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/ReferenceIT.java
+++ 
b/src/it/annotations-it/src/test/java/org/apache/sling/junit/annotations/ReferenceIT.java
@@ -34,13 +34,20 @@ import static org.ops4j.pax.exam.CoreOptions.when;
 public class ReferenceIT extends AnnotationsTestSupport {
     @Test
     public void testReferenceJITest() throws ClientException, 
UnsupportedEncodingException {
-        SlingHttpResponse response = 
CLIENT.doPost("/system/sling/junit/org.apache.sling.junit.it.TestReferenceJITest.html",
+        final SlingHttpResponse response = 
CLIENT.doPost("/system/sling/junit/org.apache.sling.junit.it.TestReferenceJITest.html",
                 new StringEntity("some text"),
                 Collections.emptyList(),
                 200);
-        response.checkContentContains("TEST RUN FINISHED");
-        response.checkContentContains("failures:0");
-        response.checkContentContains("ignored:0");
-        response.checkContentContains("tests:4");
+        final String [] toCheck = {
+            "TEST RUN FINISHED",
+            "failures:0",
+            "ignored:0",
+            "tests:4",
+            "testTargetReferences",
+            "testOsgiReferences",
+        };
+        for(String check : toCheck) {
+            response.checkContentContains(check);
+        }
     }
 }

Reply via email to