<?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 v1.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v10.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.4.4-SNAPSHOT</version>
    <relativePath>./pom-base.xml</relativePath>
  </parent>
  <properties>
    <rcpttRepo>http://download.eclipse.org/rcptt/nightly/2.4.4/latest/repository</rcpttRepo>
  </properties>
  <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>
