<?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.
-->
<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>26</version>
        <relativePath />
    </parent>

    <artifactId>org.apache.sling.distribution.it</artifactId>
    <version>0.1.3-SNAPSHOT</version>
    <packaging>bundle</packaging>

    <name>Apache Sling Distribution Integration Tests</name>
    <description>
        Project tests functionality for org.apache.sling.distribution bundle
    </description>

    <!--
    To keep the instance under test running and run individual tests
    against it, use:

        mvn clean verify -DkeepJarRunning=true -Dhttp.port=8080

    optionally using jar.executor.vm.options to enable remote debugging,
    and in another console:

        mvn -o verify -Dtests.to.run=**/**Test.java -Dtest.server.url=http://localhost:8080

    optionally using -Dmaven.surefire.debug to enable debugging.
    -->
    <properties>
        <sling.java.version>8</sling.java.version>
        <!-- Set this to run tests against an existing server instance -->
        <keepJarRunning>false</keepJarRunning>

        <!-- URL of a server against which to run tests -->
        <test.server.url />

        <!-- Set this to run tests against a specific hostname, if test.server.url is not set-->
        <test.server.hostname />

        <!-- Set this to use a different username for remote execution of sling junit tests -->
        <test.server.username />

        <!-- Set this to use a different password for remote execution of sling junit tests -->
        <test.server.password />

        <!-- Options for the VM that executes our runnable jar -->
        <jar.executor.vm.options>-Xmx2048m</jar.executor.vm.options>

        <!-- Change this to use longer or shorter timeouts for testing -->
        <sling.testing.timeout.multiplier>1.0</sling.testing.timeout.multiplier>

		<author.jar.executor.work.folder>${project.build.directory}/author</author.jar.executor.work.folder>
        <!-- Options for the jar to execute. $JAREXEC_SERVER_PORT$ is replaced by the
        selected port number -->
        <author.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=author,notshared
        </author.jar.executor.jar.options>
	
		<publish.jar.executor.work.folder>${project.build.directory}/publish</publish.jar.executor.work.folder>
        <publish.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=publish,notshared
        </publish.jar.executor.jar.options>
		
		<author-shared.jar.executor.work.folder>${project.build.directory}/author-shared</author-shared.jar.executor.work.folder>
        <author-shared.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=author,shared -Dsling.fileinstall.dir=sling/install
        </author-shared.jar.executor.jar.options>
		
		
		<publish-shared.jar.executor.work.folder>${project.build.directory}/publish-shared</publish-shared.jar.executor.work.folder>
        <publish-shared.jar.executor.jar.options>-p $JAREXEC_SERVER_PORT$ -Dsling.run.modes=publish,shared -Dsling.fileinstall.dir=sling/install
        </publish-shared.jar.executor.jar.options>
        
        <!-- Change this to run selected tests only -->
        <tests.to.run>**/**Test.java</tests.to.run>
    </properties>

    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-it.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-it.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=sling-org-apache-sling-distribution-it.git</url>
    </scm>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.sling</groupId>
                <artifactId>maven-sling-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>org.apache.sling.distribution.it</Bundle-SymbolicName>
                        <Sling-Initial-Content>SLING-CONTENT/content/test;path:=/content/test;overwrite:=true,
                            SLING-CONTENT/libs/test;path:=/libs/test;overwrite:=true
                        </Sling-Initial-Content>
                        <Export-Package>
                            org.apache.sling.distribution.it
                        </Export-Package>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>derby.log</exclude>
                        <exclude>**/sling.properties</exclude>
                        <exclude>**/cache.lock</exclude>
                        <exclude>src/main/resources/**/*.*</exclude>
                        <exclude>src/test/resources/**/*.*</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>createFolders</id>
                        <phase>process-resources</phase>
                        <configuration>
                            <tasks>
                                <mkdir dir="${project.build.directory}/author" />
                                <mkdir dir="${project.build.directory}/publish" />
                                
                                <mkdir dir="${project.build.directory}/author-shared/sling/install" />
                                <mkdir dir="${project.build.directory}/publish-shared/sling/install" />
                                
                                
                                <!-- Author FileDataStore configuration -->
                                 <copy todir="${project.build.directory}/author-shared/sling/install">
								    <fileset dir="${project.build.directory}/classes/install">
								        <include name="**/*.cfg"/>
								    </fileset>
								</copy>
								
								<!-- Publish FileDataStore configuration -->
								<copy todir="${project.build.directory}/publish-shared/sling/install">
								    <fileset dir="${project.build.directory}/classes/install">
								        <include name="**/*.cfg"/>
								    </fileset>
								</copy>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-runnable-jar</id>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <phase>process-resources</phase>
                        <configuration>
                            <includeArtifactIds>org.apache.sling.launchpad</includeArtifactIds>
                            <excludeTransitive>true</excludeTransitive>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                        </configuration>
                    </execution>
                    <execution>
                        <!--
                        Consider all dependencies as candidates to be installed
                        as additional bundles. We use system properties to define
                        which bundles to install in which order.
                        -->
                        <id>copy-additional-bundles</id>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <phase>process-resources</phase>
                        <configuration>
                            <outputDirectory>${project.build.directory}/sling/additional-bundles</outputDirectory>
                            <excludeTransitive>true</excludeTransitive>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                        </configuration>
                    </execution>
                </executions>
            </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>process-resources</phase>
                        <configuration>
                            <portNames>
                                <portName>author.http.port</portName>
                                <portName>publish.http.port</portName>
                                
                                <portName>author-shared.http.port</portName>
                                <portName>publish-shared.http.port</portName>
                            </portNames>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <!-- We run all tests in the integration-tests phase -->
                    <excludes>
                        <exclude>**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>verify</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <debugForkedProcess>${maven.surefire.debug}</debugForkedProcess>
                    <includes>
                        <include>${tests.to.run}</include>
                    </includes>
                    <systemPropertyVariables>
                        <test.server.url>${test.server.url}</test.server.url>
                        <test.server.hostname>${test.server.hostname}</test.server.hostname>
                        <test.server.username>${test.server.username}</test.server.username>
                        <test.server.password>${test.server.password}</test.server.password>
                        <author.jar.executor.server.port>${author.http.port}</author.jar.executor.server.port>
                        <publish.jar.executor.server.port>${publish.http.port}</publish.jar.executor.server.port>
                        <author-shared.jar.executor.server.port>${author-shared.http.port}</author-shared.jar.executor.server.port>
                        <publish-shared.jar.executor.server.port>${publish-shared.http.port}</publish-shared.jar.executor.server.port>
                        <jar.executor.vm.options>${jar.executor.vm.options}</jar.executor.vm.options>
                        <jar.executor.jar.folder>${project.basedir}/target/dependency</jar.executor.jar.folder>
                        <jar.executor.jar.name.regexp>org.apache.sling.launchpad.*jar$</jar.executor.jar.name.regexp>
                        <jar.executor.work.folder>${jar.executor.work.folder}</jar.executor.work.folder>

                        <author.jar.executor.jar.options>${author.jar.executor.jar.options}
                        </author.jar.executor.jar.options>
                        <publish.jar.executor.jar.options>${publish.jar.executor.jar.options}
                        </publish.jar.executor.jar.options>
                        
                        <author-shared.jar.executor.jar.options>${author-shared.jar.executor.jar.options}
                        </author-shared.jar.executor.jar.options>
                        <publish-shared.jar.executor.jar.options>${publish-shared.jar.executor.jar.options}
                        </publish-shared.jar.executor.jar.options>
                        
						<author.jar.executor.work.folder>${author.jar.executor.work.folder}</author.jar.executor.work.folder>
						<publish.jar.executor.work.folder>${publish.jar.executor.work.folder}</publish.jar.executor.work.folder>
                        
                        <author-shared.jar.executor.work.folder>${author-shared.jar.executor.work.folder}</author-shared.jar.executor.work.folder>
						<publish-shared.jar.executor.work.folder>${publish-shared.jar.executor.work.folder}</publish-shared.jar.executor.work.folder>
                        
                        <additional.bundles.path>
                            ${project.build.directory},${project.build.directory}/sling/additional-bundles
                        </additional.bundles.path>
                        <keepJarRunning>${keepJarRunning}</keepJarRunning>
                        <server.ready.timeout.seconds>360</server.ready.timeout.seconds>
                        <sling.testing.timeout.multiplier>${sling.testing.timeout.multiplier}
                        </sling.testing.timeout.multiplier>
                        <server.ready.path.1>/:script src="system/sling.js"</server.ready.path.1>
                        <server.ready.path.2>/.explorer.html:href="/libs/sling/explorer/css/explorer.css"</server.ready.path.2>
                        <server.ready.path.3>/sling-test/sling/sling-test.html:Sling client library tests</server.ready.path.3>
                        <start.bundles.timeout.seconds>30</start.bundles.timeout.seconds>
                        <bundle.install.timeout.seconds>20</bundle.install.timeout.seconds>

                        <!--
                        Define additional bundles to install by specifying the beginning of their artifact name.
                        The bundles are installed in lexical order of these property names.
                        All bundles must be listed as dependencies in this pom, or they won't be installed.
                        -->

                        <sling.additional.bundle.1>httpcore-osgi</sling.additional.bundle.1>
                        <sling.additional.bundle.2>httpclient-osgi</sling.additional.bundle.2>
                        <sling.additional.bundle.3>org.apache.sling.event</sling.additional.bundle.3>
                        <sling.additional.bundle.4>org.apache.sling.hc.core</sling.additional.bundle.4>
                        <sling.additional.bundle.5>org.apache.jackrabbit.vault</sling.additional.bundle.5>
                        <sling.additional.bundle.6>org.apache.sling.distribution.api</sling.additional.bundle.6>
                        <sling.additional.bundle.7>org.apache.sling.distribution.core</sling.additional.bundle.7>
                        <sling.additional.bundle.8>org.apache.sling.distribution.sample</sling.additional.bundle.8>
                        <sling.additional.bundle.9>${project.build.finalName}.jar</sling.additional.bundle.9>
                        <sling.additional.bundle.10>org.apache.sling.commons.johnzon</sling.additional.bundle.10>
                        <sling.additional.bundle.11>commons-collections</sling.additional.bundle.11>
                    </systemPropertyVariables>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!-- Additional bundles needed by the Sling instance under test -->

        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.testing.tools</artifactId>
            <version>1.0.17-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.hc.core</artifactId>
            <version>1.0.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.osgi</artifactId>
            <version>2.2.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- FILEVAULT -->
        <dependency>
            <groupId>org.apache.jackrabbit.vault</groupId>
            <artifactId>org.apache.jackrabbit.vault</artifactId>
            <version>3.1.42</version>
            <scope>provided</scope>
        </dependency>
        <!-- HTTP -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore-osgi</artifactId>
            <version>4.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient-osgi</artifactId>
            <version>4.3.2</version>
        </dependency>
        <!-- COMMONS -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.2</version>
            <scope>provided</scope>
        </dependency>

        <!-- actual dependencies -->
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.johnzon</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.launchpad</artifactId>
            <version>8</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.11</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.5.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.api</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-api</artifactId>
            <version>2.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-jcr-commons</artifactId>
            <version>2.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.serviceusermapper</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.event</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>javax.jcr</groupId>
            <artifactId>jcr</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.distribution.api</artifactId>
            <version>0.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.distribution.core</artifactId>
            <version>0.4.5-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.distribution.sample</artifactId>
            <version>0.1.7-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
