<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.glassfish.jersey.tests</groupId>
        <artifactId>project</artifactId>
        <version>2.32.0-SNAPSHOT</version>
    </parent>

    <groupId>org.glassfish.jersey.tests.memleaks</groupId>
    <artifactId>project</artifactId>
    <packaging>pom</packaging>
    <name>jersey-tests-memleak</name>

    <description>
        Memory leaks test maven parent module.

        This module aggregates maven based configuration for all memory leak related modules.

        Note that the majority of plugin execution in maven sub-modules is bound to phase none by default. The reason is that
        memory leak tests are executed only if one of memory leak maven profiles are activated.
    </description>

    <properties>

        <memleak.tmpdir>/tmp</memleak.tmpdir>

        <memleak.jvm.maxheap>512m</memleak.jvm.maxheap>
        <memleak.jvm.heapdumpdir>${project.build.directory}</memleak.jvm.heapdumpdir>

        <external.container.factory>org.glassfish.jersey.test.external.ExternalTestContainerFactory</external.container.factory>
        <external.container.port>${external.container.port.dynamic}</external.container.port>
        <external.container.contextRoot>${project.artifactId}-${project.version}</external.container.contextRoot>
        <external.container.warPath>${project.build.directory}/${project.build.finalName}.${project.packaging}
        </external.container.warPath>
        <external.container.logFile>${project.build.directory}/container.log</external.container.logFile>

        <maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
        <memleak.timestamp>${maven.build.timestamp}</memleak.timestamp>

        <memleak.glassfish.zip>${memleak.tmpdir}/memleak-test-glassfish-${memleak.timestamp}.zip</memleak.glassfish.zip>
        <memleak.glassfish.adminPort>${memleak.glassfish.adminPort.dynamic}</memleak.glassfish.adminPort>
        <memleak.glassfish.url>${jersey.runner.distUrl}</memleak.glassfish.url>
        <memleak.glassfish.maxheap>${memleak.jvm.maxheap}</memleak.glassfish.maxheap>

        <memleak.wls.jar>${memleak.tmpdir}/memleak-test-wls-${memleak.timestamp}.jar</memleak.wls.jar>
        <memleak.wls.url>${jersey.runner.distUrl}</memleak.wls.url>
        <memleak.wls.maxheap>${memleak.jvm.maxheap}</memleak.wls.maxheap>

        <memleak.tomcat.version>8.0.23</memleak.tomcat.version>
        <memleak.tomcat.url>
            http://archive.apache.org/dist/tomcat/tomcat-8/v${memleak.tomcat.version}/bin/apache-tomcat-${memleak.tomcat.version}.zip
        </memleak.tomcat.url>
        <memleak.tomcat.zip>${memleak.tmpdir}/memleak-test-tomcat-${memleak.tomcat.version}-${memleak.timestamp}.zip
        </memleak.tomcat.zip>
        <memleak.tomcat.maxheap>${memleak.jvm.maxheap}</memleak.tomcat.maxheap>

        <!-- by default, all common executions are bound to the pahse 'none' so that they're not executed -->
        <phase.common.pre-integration-test>none</phase.common.pre-integration-test>
        <phase.common.post-integration-test>none</phase.common.post-integration-test>

        <!-- by default, redeployment executions are bound to the phase 'none' so that they're not executed -->
        <phase.redeployment.pre-integration-test>none</phase.redeployment.pre-integration-test>
        <phase.redeployment.integration-test>none</phase.redeployment.integration-test>
        <phase.redeployment.post-integration-test>none</phase.redeployment.post-integration-test>

        <!-- by default, test-cases executions are bound to the phase 'none' so that they're not executed -->
        <phase.tests.test>none</phase.tests.test>
        <phase.tests.pre-integration-test>none</phase.tests.pre-integration-test>
        <phase.tests.integration-test>none</phase.tests.integration-test>
        <phase.tests.post-integration-test>none</phase.tests.post-integration-test>
        <phase.tests.verify>none</phase.tests.verify>
    </properties>

    <modules>
        <module>redeployment</module>
        <module>test-cases</module>
    </modules>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>reserve-network-ports</id>
                            <goals>
                                <goal>reserve-network-port</goal>
                            </goals>
                            <phase>${phase.common.pre-integration-test}</phase>
                            <configuration>
                                <portNames>
                                    <portName>external.container.port.dynamic</portName>
                                </portNames>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.glassfish.jersey.test-framework.maven</groupId>
                    <artifactId>container-runner-maven-plugin</artifactId>
                    <version>${project.version}</version>
                    <configuration>
                        <warPath>${external.container.warPath}</warPath>
                        <contextRoot>${external.container.contextRoot}</contextRoot>
                        <port>${external.container.port}</port>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

    </build>

    <profiles>
        <profile>
            <id>gf4</id>
            <properties>
                <external.container.logFile>
                    ${project.build.directory}/glassfish4/glassfish/domains/memleak_test_domain/logs/server.log
                </external.container.logFile>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>build-helper-maven-plugin</artifactId>
                            <configuration>
                                <portNames combine.children="append">
                                    <portName>memleak.glassfish.adminPort.dynamic</portName>
                                </portNames>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.glassfish.jersey.test-framework.maven</groupId>
                            <artifactId>container-runner-maven-plugin</artifactId>
                            <version>${project.version}</version>
                            <configuration>
                                <adminPort>${memleak.glassfish.adminPort}</adminPort>
                                <distUrl>${memleak.glassfish.url}</distUrl>
                                <distTargetLocation>${memleak.glassfish.zip}</distTargetLocation>
                                <distSubdir>glassfish4</distSubdir>
                                <maxHeap>${memleak.glassfish.maxheap}</maxHeap>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>gf4-download</id>
                                    <goals>
                                        <goal>downloadGf4</goal>
                                    </goals>
                                    <phase>${phase.common.pre-integration-test}</phase>
                                </execution>
                                <execution>
                                    <id>gf4-start-and-deploy</id>
                                    <goals>
                                        <goal>startAndDeployGf4</goal>
                                    </goals>
                                    <phase>${phase.common.pre-integration-test}</phase>
                                </execution>
                                <execution>
                                    <id>gf4-undeploy-and-stop</id>
                                    <goals>
                                        <goal>stopGf4</goal>
                                    </goals>
                                    <phase>${phase.common.post-integration-test}</phase>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>wls</id>
            <properties>
                <external.container.logFile>
                    ${project.build.directory}/wls12210/memleak_test_domain/wls.log
                </external.container.logFile>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.glassfish.jersey.test-framework.maven</groupId>
                            <artifactId>container-runner-maven-plugin</artifactId>
                            <configuration>
                                <distUrl>${memleak.wls.url}</distUrl>
                                <distTargetLocation>${memleak.wls.jar}</distTargetLocation>
                                <distSubdir>wls12210</distSubdir>
                                <maxHeap>${memleak.wls.maxheap}</maxHeap>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>wls-download</id>
                                    <goals>
                                        <goal>downloadWls</goal>
                                    </goals>
                                    <phase>${phase.common.pre-integration-test}</phase>
                                </execution>
                                <execution>
                                    <id>wls-deploy</id>
                                    <goals>
                                        <goal>startAndDeployWls</goal>
                                    </goals>
                                    <phase>${phase.common.pre-integration-test}</phase>
                                </execution>
                                <execution>
                                    <id>wls-stop</id>
                                    <goals>
                                        <goal>stopWls</goal>
                                    </goals>
                                    <phase>${phase.common.post-integration-test}</phase>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>tomcat</id>
            <properties>
                <external.container.logFile>
                    ${project.build.directory}/apache-tomcat-${memleak.tomcat.version}/logs/catalina.out
                </external.container.logFile>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.glassfish.jersey.test-framework.maven</groupId>
                            <artifactId>container-runner-maven-plugin</artifactId>
                            <configuration>
                                <distUrl>${memleak.tomcat.url}</distUrl>
                                <distTargetLocation>${memleak.tomcat.zip}</distTargetLocation>
                                <distSubdir>apache-tomcat-${memleak.tomcat.version}</distSubdir>
                                <maxHeap>${memleak.tomcat.maxheap}</maxHeap>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>tomcat-download</id>
                                    <goals>
                                        <goal>downloadTomcat</goal>
                                    </goals>
                                    <phase>${phase.common.pre-integration-test}</phase>
                                </execution>
                                <execution>
                                    <id>tomcat-deploy</id>
                                    <goals>
                                        <goal>startAndDeployTomcat</goal>
                                    </goals>
                                    <phase>${phase.common.pre-integration-test}</phase>
                                </execution>
                                <execution>
                                    <id>tomcat-stop</id>
                                    <goals>
                                        <goal>stopTomcat</goal>
                                    </goals>
                                    <phase>${phase.common.post-integration-test}</phase>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>


        <!-- profiles that help set ${memleak.tmpdir} based on environment -->
        <profile>
            <id>memleak-env-tmpdir</id>
            <activation>
                <property>
                    <name>env.TMPDIR</name>
                </property>
            </activation>
            <properties>
                <memleak.tmpdir>${env.TMPDIR}</memleak.tmpdir>
            </properties>
        </profile>
        <profile>
            <id>memleak-env-tmp</id>
            <activation>
                <property>
                    <name>env.TMP</name>
                </property>
            </activation>
            <properties>
                <memleak.tmpdir>${env.TMP}</memleak.tmpdir>
            </properties>
        </profile>

    </profiles>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jersey.test-framework</groupId>
                <artifactId>memleak-test-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
