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 2021/05/25 12:54:39 UTC

[sling-org-apache-sling-starter] branch SLING-10402/also-test-mongo created (now 51317bd)

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

bdelacretaz pushed a change to branch SLING-10402/also-test-mongo
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-starter.git.


      at 51317bd  SLING-10402 - run SmokeIT on both tar and mongo instances

This branch includes the following new commits:

     new 51317bd  SLING-10402 - run SmokeIT on both tar and mongo instances

The 1 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-starter] 01/01: SLING-10402 - run SmokeIT on both tar and mongo instances

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

bdelacretaz pushed a commit to branch SLING-10402/also-test-mongo
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-starter.git

commit 51317bd523e6636670dfe9d41fee2d73487410c8
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Tue May 25 14:52:08 2021 +0200

    SLING-10402 - run SmokeIT on both tar and mongo instances
---
 pom.xml                                            | 79 +++++++++++++++++++++-
 .../java/org/apache/sling/launchpad/SmokeIT.java   | 33 +++++++--
 2 files changed, 104 insertions(+), 8 deletions(-)

diff --git a/pom.xml b/pom.xml
index dd85a2c..05d6128 100644
--- a/pom.xml
+++ b/pom.xml
@@ -199,9 +199,70 @@
                             </portNames>
                         </configuration>
                     </execution>
+                    <execution>
+                        <id>reserve-network-port-mongo</id>
+                        <goals>
+                            <goal>reserve-network-port</goal>
+                        </goals>
+                        <phase>pre-integration-test</phase>
+                        <configuration>
+                            <portNames>
+                                <portName>http.port.mongo</portName>
+                            </portNames>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
-            <!-- launch the oak_tar aggregate for the integration tests -->
+            <!--
+                Start a MongoDB container for the corresponding tests.
+                Must be declared before the feature-launcher-maven-plugin
+                so that the container is up before the corresponding Sling
+                instance starts.
+            -->
+            <plugin>
+                <groupId>io.fabric8</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>0.19.1</version>
+                <configuration>
+                    <images>
+                        <image>
+                            <alias>mongo</alias>
+                            <name>mongo:4.4.6</name>
+                            <run>
+                                <ports>
+                                    <!--
+                                        TODO the local port should by dynamic for tests, but
+                                        currently the oak feature file hardcodes the default port
+                                    -->
+                                    <port>27017:27017</port>
+                                </ports>
+                                <wait>
+                                    <log>CONTROL</log>
+                                    <time>60000</time>
+                                </wait>
+                            </run>
+                        </image>
+                    </images>
+                    <stopMode>kill</stopMode>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>start-mongo</id>
+                        <phase>pre-integration-test</phase>
+                        <goals>
+                            <goal>start</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>stop-mongo</id>
+                        <phase>post-integration-test</phase>
+                        <goals>
+                            <goal>stop</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- launch the Sling instances to test -->
             <plugin>
                 <groupId>org.apache.sling</groupId>
                 <artifactId>feature-launcher-maven-plugin</artifactId>
@@ -223,6 +284,21 @@
                                 </frameworkProperties>
                             </launcherArguments>
                         </launch>
+                        <launch>
+                            <id>sling-12-oak-mongo</id>
+                            <feature>
+                                <groupId>${project.groupId}</groupId>
+                                <artifactId>${project.artifactId}</artifactId>
+                                <version>${project.version}</version>
+                                <classifier>oak_mongo</classifier>
+                                <type>slingosgifeature</type>
+                            </feature>
+                            <launcherArguments>
+                                <frameworkProperties>
+                                    <org.osgi.service.http.port>${http.port.mongo}</org.osgi.service.http.port>
+                                </frameworkProperties>
+                            </launcherArguments>
+                        </launch>
                     </launches>
                 </configuration>
                 <executions>
@@ -248,6 +324,7 @@
                <configuration>
                    <systemPropertyVariables>
                        <starter.http.port>${http.port}</starter.http.port>
+                       <starter.http.port.mongo>${http.port.mongo}</starter.http.port.mongo>
                        <starter.min.bundles.count>${starter.min.bundles.count}</starter.min.bundles.count>
                    </systemPropertyVariables>
                </configuration>
diff --git a/src/test/java/org/apache/sling/launchpad/SmokeIT.java b/src/test/java/org/apache/sling/launchpad/SmokeIT.java
index 26381fc..c3e5d0e 100644
--- a/src/test/java/org/apache/sling/launchpad/SmokeIT.java
+++ b/src/test/java/org/apache/sling/launchpad/SmokeIT.java
@@ -21,6 +21,8 @@ import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
@@ -44,31 +46,48 @@ import org.apache.http.impl.client.HttpClientBuilder;
 import org.hamcrest.CoreMatchers;
 import org.junit.Before;
 import org.junit.ClassRule;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
+@RunWith(Parameterized.class)
 public class SmokeIT {
 
-    private static final int STARTER_HTTP_PORT = Integer.getInteger("starter.http.port", 8080);
+    private final int slingHttpPort;
     private static final int STARTER_MIN_BUNDLES_COUNT = Integer.getInteger("starter.min.bundles.count", Integer.MAX_VALUE);
 
-    @ClassRule
-    public static StarterReadyRule LAUNCHPAD = new StarterReadyRule(STARTER_HTTP_PORT);
+    @Rule
+    public final StarterReadyRule launchpadRule;
     private HttpClientContext httpClientContext;
 
+    @Parameterized.Parameters(name = "{0}")
+    public static Collection<Object[]> data() {
+        return Arrays.asList(new Object[][] {
+            {"starter.http.port", 8080},
+            {"starter.http.port.mongo", 8081}
+        });
+    }
+
+    public SmokeIT(String propName, int defaultPort) {
+        slingHttpPort = Integer.getInteger(propName, defaultPort);
+        launchpadRule = new StarterReadyRule(slingHttpPort);
+    }
+
     @Before
     public void prepareHttpContext() {
 
         CredentialsProvider credsProvider = new BasicCredentialsProvider();
         UsernamePasswordCredentials creds = new UsernamePasswordCredentials("admin", "admin");
-        credsProvider.setCredentials(new AuthScope("localhost", STARTER_HTTP_PORT), creds);
+        credsProvider.setCredentials(new AuthScope("localhost", slingHttpPort), creds);
 
         BasicAuthCache authCache = new BasicAuthCache();
         BasicScheme basicAuth = new BasicScheme();
-        authCache.put(new HttpHost("localhost", STARTER_HTTP_PORT, "http"), basicAuth);
+        authCache.put(new HttpHost("localhost", slingHttpPort, "http"), basicAuth);
 
         httpClientContext = HttpClientContext.create();
         httpClientContext.setCredentialsProvider(credsProvider);
@@ -87,7 +106,7 @@ public class SmokeIT {
 
         try ( CloseableHttpClient client = newClient() ) {
 
-            HttpGet get = new HttpGet("http://localhost:" + STARTER_HTTP_PORT + "/system/console/bundles.json");
+            HttpGet get = new HttpGet("http://localhost:" + slingHttpPort + "/system/console/bundles.json");
 
             // pass the context to ensure preemptive basic auth is used
             // https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html
@@ -148,7 +167,7 @@ public class SmokeIT {
     public void ensureRepositoryIsStarted() throws Exception {
         try ( CloseableHttpClient client = newClient() ) {
 
-            HttpGet get = new HttpGet("http://localhost:" + STARTER_HTTP_PORT + "/server/default/jcr:root/content");
+            HttpGet get = new HttpGet("http://localhost:" + slingHttpPort + "/server/default/jcr:root/content");
 
             try ( CloseableHttpResponse response = client.execute(get) ) {