<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright (c) 2009, 2019 Xored Software Inc and others.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v2.0
    which accompanies this distribution, and is available at
    https://www.eclipse.org/legal/epl-v20.html
     
    Contributors:
    	Xored Software Inc - initial API and implementation and/or initial documentation
 -->

<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>
  <artifactId>tests</artifactId>
  <packaging>rcpttTest</packaging>
  <parent>
    <groupId>org.eclipse.rcptt.tests</groupId>
    <artifactId>base</artifactId>
    <version>2.5.1-SNAPSHOT</version>
    <relativePath>./pom-base.xml</relativePath>
  </parent>
  <dependencies>
		<dependency>
			<groupId>org.jboss.byteman</groupId>
			<artifactId>byteman</artifactId>
			<version>4.0.4</version>
			<type>jar</type>
		</dependency>
  </dependencies>
  <build>
    <plugins>
    		<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<configuration>
					<overWriteReleases>true</overWriteReleases>
					<overWriteSnapshots>true</overWriteSnapshots>
				</configuration>
				<executions>
					<execution>
						<id>byteman</id>
						<phase>generate-resources</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<includeArtifactIds>byteman</includeArtifactIds>
							<stripVersion>true</stripVersion>
						</configuration>
					</execution>
				</executions>
			</plugin>
    
      <plugin>
        <groupId>${rcptt-maven-group}</groupId>
        <artifactId>${rcptt-maven-plugin}</artifactId>
        <version>${rcptt-maven-version}</version>
        <extensions>true</extensions>
        <configuration>
          <aut>
            <explicit>${rcpttPath}</explicit>
            <args>
              <arg>-nosplash</arg>
              <arg>-consoleLog</arg>
              <arg>-debug</arg>
	      <arg>${basedir}/debug.options</arg>
            </args>
		<vmArgs>
			<!--vmArg>-javaagent:${project.build.directory}/dependency/byteman.jar=boot:${project.build.directory}/dependency/byteman.jar,script:${basedir}/trace.btm</vmArg>
			<vmArg>-Dorg.jboss.byteman.transform.all</vmArg>
			<vmArg>-Dorg.jboss.byteman.debug</vmArg-->
			<vmArg>-XX:+HeapDumpOnOutOfMemoryError</vmArg>
			<!-- "Not supported in OpenJDK" <vmArg>-XX:+UnlockCommercialFeatures</vmArg>
			<vmArg>-XX:+FlightRecorder</vmArg>
			<vmArg>-XX:StartFlightRecording=name=aut,delay=60s,filename=aut.jfr,dumponexit=true</vmArg>-->
		</vmArgs>
          </aut>
          <runner>
            <version>${runner-version}</version>
          </runner>
          <skipTags>
            <tag>skipExecution</tag>
            <!--tag>Browser</tag--> <!--// Needs a web browser installed in test environment -->
          </skipTags>
          <!--suites>
            <suite>2019-03_regression</suite>
          </suites-->
          <testOptions>
            <execTimeout>28800</execTimeout>
          </testOptions>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>linux</id>
      <activation>
        <os>
          <family>unix</family>
        </os>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>${rcptt-maven-group}</groupId>
            <artifactId>${rcptt-maven-plugin}</artifactId>
            <version>${rcptt-maven-version}</version>
            <extensions>true</extensions>
            <configuration>
              <skipTags combine.children="append">
                <tag>skipLinux</tag>
              </skipTags>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <activation>
        <property>
          <name>explicitRunner</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>${rcptt-maven-group}</groupId>
            <artifactId>${rcptt-maven-plugin}</artifactId>
            <version>${rcptt-maven-version}</version>
            <extensions>true</extensions>
            <configuration>
              <runner>
                <explicit>${explicitRunner}</explicit>
              </runner>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
