<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->

<!--
    This build file is used to run the JPA TCK. It assumes that you have
    the TCK zip file located at:

        For JPA 1.0 -
            ${user.home}/.m2/privaterepos/jpa-1_0b-tck.zip
        For JPA 2.0 -
            ${user.home}/.m2/privaterepos/jpatck-2.0_15-Jun-2010.zip

    If you have that file in a different location, it can be specified with
    the "tck.zip" system property.

    The TCK will only be run if you have one of the following profiles enabled:

        For JPA 1.0 -
            -Ptck-profile
        For JPA 2.0 -
            -Ptck2-profile

    For the JPA 2.0 TCK, the default level used will be the latest available,
    but you can also test against prior levels by setting:
        -Dtck2.level=20091209

    To set the TCK run time limit, use the "jpatck.run.tmo" system property to
    specify the timeout value in milliseconds. Default to 7200000 (2 hours).

    To run a specific package of tests, use the "jpatck.pkg.dir" system
    property to specify the parent directory of the tests you want to run.
    E.g.:

        mvn integration-test -Ptck2-profile -Djpatck.pkg.dir=com/sun/ts/tests/ejb30/persistence/inheritance/mappedsc/descriptors

    You can also run using another database (e.g., oracle) using command
    line properties. For example:

        mvn integration-test -Ddb.name=oracle -Ddb.driver=oracle.jdbc.driver.OracleDriver -Ddb.url=jdbc:oracle:thin:@dbhost:1526:dbname -Ddb.username=scott -Ddb.password=tiger -Ddb.jar=/tmp/oracle-jdbc.jar -Dtest=false -Ptck-profile -Djpatck.pkg.dir=com/sun/ts/tests/ejb30/persistence/query/apitests -Djpatck.test=queryAPITest15

    The TCK running process will do the following:

    1. Find the TCK zip file and extract it
    2. Create an openjpa-provier.properties file with the OpenJPA config
    3. Modify the TCK's main configuration file (ts.jte) to use OpenJPA
    4. Run the database initialization script
    5. Run the TCK script
    6. Parse the TCK result log to determine whether to fail the build or not
-->
<!--
    Please keep the project tag on one line to avoid confusing
    the release plugin.
-->
<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.openjpa</groupId>
        <artifactId>openjpa-integration</artifactId>
        <version>2.4.1</version>
    </parent>

    <groupId>org.apache.openjpa</groupId>
    <artifactId>openjpa-integration-tck</artifactId>
    <packaging>pom</packaging>
    <name>OpenJPA Integration Tests - JPA TCK</name>
    <description>OpenJPA Integration Tests - JPA TCK</description>

    <properties>
        <tck2.level>20110815</tck2.level>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <!-- Don't publish these artifacts to central -->
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
      <profile>
        <!-- vvvvvvvvvvvvvvvvvvv -->
        <!-- JPA 2.0 TCK Profile -->
        <!-- vvvvvvvvvvvvvvvvvvv -->

        <id>tck2-profile</id>
        <build>
          <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>[1.6,)</version>
                                </requireJavaVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-antrun-plugin</artifactId>
              <executions>
                <execution>
                  <id>tckinit</id>
                  <phase>pre-integration-test</phase>
                  <configuration>
                    <tasks>
                        <echo>Running Sun JPA 2.0 TCK Init</echo>
                        <property name="tck.base" value="${basedir}/target/tck" />
                        <property name="tck.dir" value="${tck.base}/jpatck" />
                        <property name="LOCAL_M2_REPO" value="${settings.localRepository}" />
                        <ant antfile="${basedir}/tck2-${tck2.level}.xml">
                            <target name="init" />
                        </ant>
                    </tasks>
                  </configuration>
                  <goals>
                    <goal>run</goal>
                  </goals>
                </execution>
                <execution>
                  <id>run-tck</id>
                  <phase>integration-test</phase>
                  <configuration>
                    <tasks>
                        <echo>Running Sun JPA 2.0 TCK</echo>

                        <property name="tck.base" value="${basedir}/target/tck" />
                        <property name="tck.dir" value="${tck.base}/jpatck" />
                        <property name="tck.reports" value="${tck.dir}/reports" />
                        <property name="tck.work" value="${tck.dir}/work" />

                        <!--
                            Setup jpa.classes to only use the Maven artifacts
                            that we specified as dependencies
                        -->
                        <path id="cp.openjpa">
                            <path refid="maven.compile.classpath" />
                        </path>
                        <pathconvert property="OPENJPA_CLASSPATH" refid="cp.openjpa" />

                        <!--
                            Setup jpa.classes to use the Maven artifacts AND
                            the toplink provider required for pluggability tests
                        -->
                        <path id="cp.toplink">
                            <path refid="maven.compile.classpath" />
                            <!-- need to include the toplink jars for pluggability tests -->
                            <fileset dir="${tck.dir}/lib">
                                <include name="**/*toplink*.jar" />
                            </fileset>
                        </path>
                        <pathconvert property="TOPLINK_CLASSPATH" refid="cp.toplink" />

                        <path id="cp">
                            <path refid="maven.compile.classpath" />
                        </path>
                        <path id="cp.test">
                            <pathelement location="${basedir}/../../target/classes" />
                            <path refid="maven.test.classpath" />
                        </path>
                        <pathconvert property="cp.test.classpath" refid="cp.test" />
                        
                        <!-- create missing directory for maven compile classpath -->
                        <mkdir dir="${basedir}/target/classes" />
                        
                        <ant antfile="${basedir}/tck2-${tck2.level}.xml" inheritRefs="true">
                            <target name="run-tck" />
                            <property name="tck.db.name" value="${tck.db.name}" />
                            <property name="connection.driver.name" value="${connection.driver.name}" />
                            <property name="connection.url" value="${connection.url}" />
                            <property name="connection.username" value="${connection.username}" />
                            <property name="connection.password" value="${connection.password}" />
                        </ant>
                    </tasks>
                  </configuration>
                  <goals>
                    <goal>run</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>
        <!-- Just pull in openjpa-all, which will include all required deps -->
        <dependencies>
          <dependency>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-all</artifactId>
            <version>${project.version}</version>
          </dependency>
          <!-- The slf4j dependency is for bval 0.3-incubating -->
          <!-- This can be removed if we move to bval 0.5, where the slf4j dependency is removed -->
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>${slf4jVersion}</version>
          </dependency>
        </dependencies>
        
        <!-- ^^^^^^^^^^^^^^^^^^^ -->
        <!-- JPA 2.0 TCK Profile -->
        <!-- ^^^^^^^^^^^^^^^^^^^ -->
      </profile>
      

      <profile>
        <!-- vvvvvvvvvvvvvvvvvvvv -->
        <!-- JPA 1.0b TCK Profile -->
        <!-- vvvvvvvvvvvvvvvvvvvv -->
        
        <id>tck-profile</id>
        <build>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-antrun-plugin</artifactId>
              <executions>
                <execution>
                  <id>run-tck</id>
                  <phase>integration-test</phase>
                  <configuration>
                    <tasks>
                        <echo>Running Sun JPA 1.0b TCK</echo>

                        <property name="tck.zip" value="${settings.localRepository}/../privaterepos/jpa-1_0b-tck.zip" />
                         <available property="tck.available" file="${tck.zip}" />
                        <fail unless="tck.available">The TCK file ${tck.zip} does not exist. This file must be downloaded separately in order to be able to run the JPA TCK</fail>


                        <available property="tck.available" file="${tck.zip}" />
                        <fail unless="tck.available">The TCK file specific in the "tck.zip" system property (${tck.zip}) does not exist. This file must be downloaded separately in order to be able to run the JPA TCK</fail>

                        <property name="tck.base" value="${basedir}/target/tck" />
                        <property name="tck.dir" value="${tck.base}/jpatck" />

                        <delete dir="${tck.dir}" />

                        <unzip overwrite="false" src="${tck.zip}" dest="${tck.base}" />

                        <path id="cp">
                            <path refid="maven.compile.classpath" />

                            <!-- use official JPA API instead of GM's -->
                            <fileset dir="${tck.dir}/lib">
                                <include name="**/*.jar" />
                            </fileset>
                            <pathelement path="${java.class.path}" />
                            <pathelement path="${db.jar}" />
                        </path>
                        <pathconvert property="cp.property" refid="cp" />

                        <property name="db.name" value="derby" />
                        <property name="db.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
                        <property name="db.url" value="jdbc:derby:derby-database;create=true" />
                        <property name="db.username" value="nousername" />
                        <property name="db.password" value="nopassword" />

                        <property name="openjpa.Log" value="${openjpa.Log}" />

                        <property name="jpatck.pkg.dir" value="com" />
                        <property name="jpatck.test" value="" />

                        <property name="jpatck.reports.dir" value="${tck.dir}/../reports" />
                        <property name="jpatck.work.dir" value="${tck.dir}/../work" />
                        <property name="tck.log" value="${tck.base}/openjpa-tck.log" />

                        <property name="openjpa.properties" value="${tck.dir}/openjpa-provier.properties" />

                        <!-- create the OpenJPA properties for the TCK run -->
                        <echo append="false" file="${openjpa.properties}">
javax.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
openjpa.ConnectionDriverName: ${db.driver}
openjpa.ConnectionURL: ${db.url}
openjpa.ConnectionUserName: ${db.username}
openjpa.ConnectionPassword: ${db.password}
openjpa.FetchBatchSize: -1
openjpa.Compatibility: StrictIdentityValues=true
openjpa.Sequence: time
openjpa.Log: ${openjpa.Log}
openjpa.jdbc.DBDictionary: StoreCharsAsNumbers=false
openjpa.jdbc.SchemaFactory: native(ForeignKeys=true)
                        </echo>

                        <!-- Append OpenJPA-specific configuration -->
                        <property name="jpatck.config" value="${tck.dir}/bin/ts.jte" />

                        <echo append="false" file="${jpatck.config}.tmp">


#########################################################################
## OpenJPA specific properties follow
#########################################################################

jpa.home=${tck.dir}
work.dir=${jpatck.work.dir}
report.dir=${jpatck.reports.dir}
jpa.classes=${cp.property}
database.classes=${jpa.classes}
# Need to specify java.* classes, both in Windows/UNIX locations as well as Mac.
# This includes a few different possible locations; only one of them needs to
# actually work for a given environment.
sigTestClasspath=${JAVA_HOME}/lib/rt.jar${path.separator}${JAVA_HOME}/jre/lib/rt.jar${path.separator}${JAVA_HOME}/../Classes/classes.jar${path.separator}$${jpa.classes}
persistence.unit.properties.file.full.path=${openjpa.properties}
database.user=${db.username}
database.passwd=${db.password}
database.url=${db.url}
database.driver=${db.driver}
databaseName=${db.name}

                        </echo>

                        <!-- convert backslashes and known paths with spaces
                            to get around a problem with the TCK testrunner
                            on windows -->
                        <echo>Update directory paths if running on Windows</echo>
                        <replace summary="yes" file="${jpatck.config}.tmp" replacefilterfile="windows-replacefilter.properties" />
                        <concat append="true" destfile="${jpatck.config}">
                            <fileset file="${jpatck.config}.tmp" />
                        </concat>

                        <path id="agent.path">
                            <fileset dir="../../openjpa/target">
                                <include name="*.jar" />
                                <exclude name="*-sources.jar" />
                                <exclude name="original-*.jar" />
                                <exclude name="*-tests.jar" />
                                <exclude name="*-javadoc.jar" />
                            </fileset>
                        </path>
                        <pathconvert dirsep="/" property="agent" refid="agent.path" />
                        <property name="agent.properties" value="" />
                        <echo>AGENT: ${agent}${agent.properties}</echo>

                        <!--
                            Replace the existing javaagent argument (which
                            uses Toplink's enhancer) with our own. Also, we
                            need to specify the default MetaDataFactory in
                            order to allow tests that don't have any
                            persistent classes to work (like the SignatureTest)
                        -->
                        <replace file="${jpatck.config}">
                            <replacefilter token="-javaagent:${jpa.home}/lib/toplink-essentials-agent.jar" value="-javaagent:${agent}${agent.properties} -Dopenjpa.MetaDataFactory=jpa(DefaultAccessType=PROPERTY)" />
                        </replace>

                        <!-- make a macro for the TCK harness launcher -->
                        <macrodef name="tsant">
                            <attribute name="buildfile" />
                            <attribute name="target" />
                            <sequential>
                                <java classname="org.apache.tools.ant.launch.Launcher" fork="true" failonerror="true" dir="${tck.dir}/src" append="true" output="${tck.log}" timeout="14400000" resultproperty="tsant.result">
                                    <arg value="-emacs" />
                                    <arg value="-buildfile" />
                                    <arg value="@{buildfile}" />
                                    <arg value="-listener" />
                                    <arg value="com.sun.ant.TSBuildListener" />
                                    <arg value="-logger" />
                                    <arg value="com.sun.ant.TSLogger" />
                                    <arg value="@{target}" />

                                    <env key="TS_HOME" value=".." />
                                    <sysproperty key="ts.home" value=".." />

                                    <env key="ANT_HOME" value="${tck.dir}/tools/ant" />
                                    <sysproperty key="ant.home" value="${tck.dir}/tools/ant" />

                                    <sysproperty key="pkg.dir" value="${jpatck.pkg.dir}" />
                                    <!--
                                    <sysproperty key="test" value="${jpatck.test}" />
                                    -->

                                    <classpath>
                                        <path refid="cp" />
                                        <fileset dir="${tck.dir}/tools/ant/lib">
                                            <include name="**/*.jar" />
                                        </fileset>
                                    </classpath>
                                </java>
                            </sequential>
                        </macrodef>

                        <echo>Logging JPA TCK output to ${tck.log}</echo>

                        <!-- first initialize the database -->
                        <echo>Calling TCK initdb.xml</echo>
                        <tsant buildfile="${tck.dir}/bin/initdb.xml" target="init.database" />
                        <echo>TCK initdb.xml returned result=${tsant.result}</echo>

                        <!-- now run the TCK -->
                        <echo>Calling TCK build.xml</echo>
                        <tsant buildfile="${tck.dir}/bin/build.xml" target="runclient" />
                        <echo>TCK build.xml returned result=${tsant.result}</echo>

                        <!-- archive the results -->
                        <property name="tck.results.archive" value="${tck.base}/openjpa-tck-results.zip" />
                        <zip destfile="${tck.results.archive}">
                            <fileset dir="${jpatck.work.dir}" />
                        </zip>
                        <echo>Results archive at: ${tck.results.archive}</echo>

                        <!--
                            The TCK's Java process doesn't actually fail when
                            tests fail, so we need to parse the results file
                            for a string indicating whether or not it passed.
                        -->
                        <loadfile property="jpatck.results" srcfile="${jpatck.work.dir}/jtData/log.txt" />
                        <condition property="jpatck.failed">
                            <contains string="${jpatck.results}" substring="Completed test run: not ok" />
                        </condition>
                        <fail if="jpatck.failed">Some tests failed</fail>
                        <!-- else -->
                        <echo>JPA TCK Passed 100%!</echo>

                    </tasks>
                  </configuration>
                  <goals>
                    <goal>run</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>

        <dependencies>
          <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jpa_2.0_spec</artifactId>
            <scope>compile</scope>
          </dependency>
          <dependency>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-kernel</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
        
        <!-- ^^^^^^^^^^^^^^^^^^^^ -->
        <!-- JPA 1.0b TCK Profile -->
        <!-- ^^^^^^^^^^^^^^^^^^^^ -->
      </profile>

        <profile>
            <!--
                Example db2 profile. You can use this profile if you:
                1) have the DB2 artifacts installed in a local repo and supply the URL:
                    -Ddb2.maven.repo=http://my.local.repo
                2) have a copy of the DB2 JCC driver and run the following commands :
                    mvn install:install-file -Dfile=${path to db2jcc.jar} \
                                             -DgroupId=com.ibm.db2 \
                                             -DartifactId=jcc-driver \
                                             -Dversion=9.5 \
                                             -Dpackaging=jar

                    mvn install:install-file -Dfile=${path to db2jcc_license.jar} \
                                             -DgroupId=com.ibm.db2 \
                                             -DartifactId=jcc-license \
                                             -Dversion=9.5 \
                                             -Dpackaging=jar

                You must also set the following properties:
                    -Dopenjpa.db2.url=jdbc:db2://<HOST>:<PORT>/<DBNAME>
                    -Dopenjpa.db2.username=<db2_uid>
                    -Dopenjpa.db2.password=<db2_pwd>

                Optionally, you can override the default DB2 groupId,
                artifactIds and version by also supplying the following
                properties:
                    -Ddb2.groupid=com.ibm.db2
                    -Dids.driver.artifactid=jcc-driver
                    -Dids.license.artifactid=jcc-license
                    -Ddb2.version=9.5
            -->
            <id>test-db2-jcc</id>
            <activation>
                <property>
                    <name>test-db2-jcc</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>${db2.groupid}</groupId>
                    <artifactId>${db2.driver.artifactid}</artifactId>
                    <version>${db2.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>${db2.groupid}</groupId>
                    <artifactId>${db2.license.artifactid}</artifactId>
                    <version>${db2.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <properties>
                <db2.maven.repo>http://not.a.real.repository</db2.maven.repo>
                <db2.groupid>com.ibm.db2</db2.groupid>
                <db2.driver.artifactid>jcc-driver</db2.driver.artifactid>
                <db2.license.artifactid>jcc-license</db2.license.artifactid>
                <db2.version>9.5</db2.version>
                <connection.driver.name>com.ibm.db2.jcc.DB2Driver</connection.driver.name>
                <connection.url>jdbc:db2://localhost:50000/tck</connection.url>
                <connection.url>${openjpa.db2.url}</connection.url>
                <connection.username>${openjpa.db2.username}</connection.username>
                <connection.password>${openjpa.db2.password}</connection.password>
                <jdbc.DBDictionary />
                <tck.db.name>db2</tck.db.name>
            </properties>
            <repositories>
                <repository>
                    <id>db2.repository</id>
                    <name>DB2 Repository</name>
                    <url>${db2.maven.repo}</url>
                    <layout>default</layout>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>ignore</checksumPolicy>
                    </releases>
                </repository>
            </repositories>
        </profile>

    </profiles>

    <dependencies>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>${derby.version}</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
