<!--
    Copyright (c) 2009, 2016 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>
    <groupId>com.xored.q7</groupId>
    <artifactId>q7tests_server_self_aut</artifactId>
    <version>2.2.0-SNAPSHOT</version>
    <packaging>rcpttTest</packaging>
    <properties>
        <q7Server>http://192.168.2.64:8090</q7Server>
        <clientId>komaz</clientId>
        <clientSecret>05fe7461c607c33229772d402505601016a7d0ea</clientSecret>
        <organization>xored</organization>
    </properties>
    <parent>
        <groupId>com.xored.q7</groupId>
        <artifactId>q7tests-base</artifactId>
        <version>2.2.0-SNAPSHOT</version>
        <relativePath>./pom-base.xml</relativePath>
    </parent>
    <!--dependencies><dependency><groupId>com.xored.q7</groupId><artifactId>com.xored.q7.pro</artifactId><version>2.2.0-SNAPSHOT</version></dependency></dependencies -->
    <build>
        <plugins>
            <plugin>
                <groupId>${ci-maven-group}</groupId>
                <artifactId>${ci-server-maven-plugin}</artifactId>
                <version>${ci-maven-version}</version>
                <extensions>true</extensions>
                <configuration>
                    <classifiers>
                        <classifier>win32.win32.x86</classifier>
                        <!-- <classifier>linux.gtk.x86</classifier>-->
                    </classifiers>
                    <aut>
                        <locations>
                            <location>
                                <classifier>win32.win32.x86</classifier>
                                <path>${basedir}/../modules/repository/target/products/com.xored.q7.professional.product-win32.win32.x86.zip</path>
                            </location>
                        </locations>
                        <ignoreOtherInjections>true</ignoreOtherInjections>
                        <injections>
                            <injection>
                                <site>${q7URL}/artifact/shared/runtime-site</site>
                            </injection>
                        </injections>
                        <args>
                            <arg>-licenseUrl</arg>
                            <arg>http://192.168.2.64:9999</arg>
                        </args>
                        <vmArgs>
                            <vmArg>-Xmx768m</vmArg>
                            <vmArg>-XX:MaxPermSize=256m</vmArg>
                        </vmArgs>
                    </aut>
                    <suites>
                        <suite>SetupAUTContextTests</suite>
                    </suites>
                    <q7server>${q7Server}</q7server>
                    <q7client>
                        <version>${q7-cloud-version}</version>
                        <clientId>${clientId}</clientId>
                        <clientSecret>${clientSecret}</clientSecret>
                        <organization>${organization}</organization>
                    </q7client>
                    <testOptions>
                        <execTimeout>7200</execTimeout>
                        <autStartupTimeout>300</autStartupTimeout>
                        <launchingKillAutOnConnectError>true</launchingKillAutOnConnectError>
                        <restartAUTOnFailure>true</restartAUTOnFailure>
                    </testOptions>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <pluginRepositories>
        <pluginRepository>
            <snapshots>
                <updatePolicy>always</updatePolicy>
            </snapshots>
            <id>xored</id>
            <name>Xored Maven repository</name>
            <url>http://maven.xored.com/nexus/content/repositories/ci4rcptt-snapshots/</url>
        </pluginRepository>
        <pluginRepository>
            <id>xored-releases</id>
            <name>Xored Maven repository</name>
            <url>http://maven.xored.com/nexus/content/repositories/ci4rcptt-releases/</url>
        </pluginRepository>
    </pluginRepositories>
    <repositories>
        <repository>
            <id>xored</id>
            <name>Xored Maven repository</name>
            <url>http://maven.xored.com/nexus/content/repositories/releases/</url>
        </repository>
        <repository>
            <id>thirdparty</id>
            <name>Maven repo with eclipses</name>
            <url>http://maven.xored.com/nexus/content/repositories/thirdparty/</url>
        </repository>
    </repositories>
</project>