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

    Copyright (c) 2015, 2020 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>3.0.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>
