<?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 ANT build file is used to run the JPA 2.0 TCK. It assumes that you have
    the TCK, config  and patches zip files located at:

        ${user.home}/.m2/privaterepos/jpatck-2.0_15-Aug-2011.zip
        ${user.home}/.m2/privaterepos/jpatck-2.0_15-Aug-2011_config.zip

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

    The TCK running process will do the following:
        1. Find the TCK zip file and extract it
        2. Create an openjpa-provider.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 to fail the build or not

    Other options are documented in the Maven pom.xml which calls this script.
-->
<!--
    Please keep the project tag on one line to avoid confusing
    the release plugin.
-->
<project name="JPA2TCK" default="run-tck">

    <!-- Import antlib/ant-contrib for If/then/else/for support -->
    <taskdef resource="net/sf/antcontrib/antlib.xml"/>

    <!--
        Target:  init
        Description:  This initializes required properties and validates that
                      required TCK zip files are present on the system and
                      then extracts them.
     -->
    <target name="init">
        <property name="tck.level" value="jpatck-2.0_15-Aug-2011" />
        <property name="tck.zip" value="${LOCAL_M2_REPO}/../privaterepos/${tck.level}.zip" />
        <available property="tck.available" file="${tck.zip}" />
        <fail unless="tck.available">The TCK file specified 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 2.0 TCK</fail>

        <property name="tck_config.zip" value="${LOCAL_M2_REPO}/../privaterepos/${tck.level}_config.zip" />
        <available property="tck_config.available" file="${tck_config.zip}" />
        <fail unless="tck_config.available">The TCK config file specified in the "tck_config.zip" system property (${tck_config.zip}) does not exist. This file must be downloaded separately in order to be able to run the JPA 2.0 TCK</fail>

<!--
        <property name="tck_patches.zip" value="${LOCAL_M2_REPO}/../privaterepos/${tck.level}_patches.zip" />
        <available property="tck_patches.available" file="${tck_patches.zip}" />
        <fail unless="tck_patches.available">The TCK patches file specified in the "tck_patches.zip" system property (${tck_patches.zip}) does not exist. This file must be downloaded separately in order to be able to run the JPA 2.0 TCK</fail>
-->

        <delete dir="${tck.dir}" />
        <unzip overwrite="false" src="${tck.zip}" dest="${tck.base}" />
        <unzip overwrite="true" src="${tck_config.zip}" dest="${tck.base}" />
<!--
        <unzip overwrite="true" src="${tck_patches.zip}" dest="${tck.base}" />
-->
        <copy overwrite="true"
            file="${tck.dir}/bin/ts.jte" tofile="${tck.dir}/bin/ts.jte.orig" />
        <copy overwrite="true"
            file="${tck.dir}/bin/ts.jtx" tofile="${tck.dir}/bin/ts.jtx.orig" />
        <!-- Pluggability tests using Toplink needs this dir created -->
        <mkdir dir="${tck.dir}/domains/domain1/logs" />
        <!-- create other missing directory -->
        <mkdir dir="${tck.dir}/weblib" />
    </target>


    <!--
        Target:  setup
        Description:  This updates the TCK configuration for OpenJPA.
     -->
    <target name="setup">
        <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="DefaultLevel=TRACE" />

        <property name="jpatck.test" value="" />

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

        <property name="openjpa.properties" value="${tck.dir}/openjpa-provider.properties" />
        <property name="toplink.properties" value="${tck.dir}/bin/toplink-provider.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=true
openjpa.jdbc.SchemaFactory: native(ForeignKeys=true)
openjpa.jdbc.SynchronizeMappings: buildSchema(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=${tck.work}
report.dir=${tck.reports}
jpa.classes=${cp.property}
# jpa.classes includes Derby, so only set database.classes for other DBs
database.classes=
# different properties needed for pluggability bucket
openjpa.properties=${openjpa.properties}
toplink.properties=${toplink.properties}
# 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=${provider.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" />

        <!-- append our updated config properties to a clean ts.jte -->
        <copy overwrite="true"
            file="${tck.dir}/bin/ts.jte.orig" tofile="${tck.dir}/bin/ts.jte" />
        <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>

        <!--
            Add in a javaagent argument (optional in JPA2 TCK.)
            Also, we need to specify the default MetaDataFactory
            inorder to allow tests that don't have any
            persistent classes to work (like the SignatureTest)
        -->
        <replace file="${jpatck.config}">
            <replacefilter token="-Ddeliverable.class=${deliverable.class}" value="-Ddeliverable.class=${deliverable.class} -javaagent:${agent}${agent.properties} -Dopenjpa.MetaDataFactory=jpa(DefaultAccessType=PROPERTY)"/>
        </replace>

        <!-- Fix path for java.security.policy -->
        <replace file="${jpatck.config}">
            <replacefilter token="-Djava.security.policy=${bin.dir}/harness.policy" value="-Djava.security.policy=${ts.home}/bin/harness.policy"/>
        </replace>

        <!-- cleanup reports/work dirs from any prior runs -->
        <delete dir="${tck.reports}" />
        <delete dir="${tck.work}" />
        <echo>Logging JPA 2.0 TCK output to ${tck.log}</echo>
    </target>


    <!--
        Macro for the TCK harness launcher
    -->
    <macrodef name="tsant">
        <attribute name="dir" default="${tck.dir}/src" />
        <attribute name="buildfile" />
        <attribute name="target" />
        <attribute name="tmo" default="7200000" />
        <sequential>
            <java classname="org.apache.tools.ant.launch.Launcher" fork="true" failonerror="false" dir="@{dir}" append="true" output="${tck.log}" timeout="@{tmo}" 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="${tck.dir}" />
                <sysproperty key="ts.home" value="${tck.dir}" />

                <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>
                    <fileset dir="${tck.dir}/lib">
                        <include name="**/*.jar" />
                    </fileset>
                </classpath>
            </java>
        </sequential>
    </macrodef>


    <!--
        Macro to determine how many tests passed/failed
    -->
    <macrodef name="results.count">
        <!-- Figure out the Passed/Failed counts -->
        <sequential>
        <resourcecount property="count.passed">
            <tokens>
                <concat>
                    <filterchain>
                        <tokenfilter>
                            <containsstring contains="Passed."/>
                        </tokenfilter>
                    </filterchain>
                    <fileset dir="${tck.reports}" includes="summary.txt" />
                </concat>
            </tokens>
        </resourcecount>
        <resourcecount property="count.failed">
            <tokens>
                <concat>
                    <filterchain>
                        <tokenfilter>
                            <containsstring contains="Failed."/>
                        </tokenfilter>
                    </filterchain>
                    <fileset dir="${tck.reports}" includes="summary.txt" />
                </concat>
            </tokens>
        </resourcecount>
        <echo>TCK Results - Passed: ${count.passed}, Failed: ${count.failed}</echo>
        </sequential>
    </macrodef>


    <!--
        Target:  run-tck
        Description:  This is the main routine that runs the TCK, after
                      all other setup steps have been performed.
        Input: jpatck.pkg.dir System property defines a commna-spearated list of test cases to be run.
               If not set or set to empty string, all tck tests will be exercised.
        Note: Beaware if jpatck.pkg.dir includes pluggability test in the dir hierarchy, the pluggability
              test will fail (5 failures) due to [enable|disable].ts.persistence.provider targets are 
              not invoked, which is required for the pluggability tests.
     -->
    <target name="run-tck">
        <echo>Running JPA 2.0 TCK tests</echo>
        <echo>Init must have been called before running this target!</echo>
        <property name="tck.log" value="${tck.base}/openjpa-tck.log" />
        <property name="provider.properties" value="${openjpa.properties}" />

        <!-- call TCK setup with above run specific properties set -->
        <fail unless="OPENJPA_CLASSPATH">The OPENJPA_CLASSPATH was not provided and needs to point to the required OpenJPA and Derby runtime jars.</fail>
        <antcall target="setup">
            <param name="cp.property" value="${OPENJPA_CLASSPATH}" />
        </antcall>

        <!-- backup our updated ts.jte for later debugging -->
        <copy overwrite="true"
            file="${tck.dir}/bin/ts.jte" tofile="${tck.base}/ts.jte.tck" />

        <!-- HACK - rebuild jpatck/dist jars for persistence.xml fixes -->
        <echo>Calling TCK build.all</echo>
        <tsant buildfile="${tck.dir}/bin/build.xml" target="build.all" />
        <echo>TCK build.all returned result=${tsant.result}</echo>

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

        <property name="jpatck.run.tmo" value="7200000" />
        <!-- now run the TCK -->
        <if>
        	<and>
                <isset property="jpatck.pkg.dir" />
        		<not>
        			<length string="${jpatck.pkg.dir}" trim="true" length="0" /> 
        		</not>
            </and>
        <then>
            <for list="${jpatck.pkg.dir}" param="for.test" trim="true">
                <sequential>        	
        	        <if>
                        <contains string="@{for.test}" substring="pluggability"/>
                    <then>
                        <echo>Calling enable.ts.persistence.provider for pluggability test.</echo>
                        <tsant buildfile="${tck.dir}/bin/build.xml" target="enable.ts.persistence.provider" />
                    </then>
                    </if>
        	
                    <echo>Calling TCK build.xml for pkg.dir=@{for.test}</echo>
                    <property name="dir" value="${tck.dir}/src/@{for.test}" />
                    <tsant dir="${dir}" buildfile="${dir}/build.xml" target="runclient" tmo="${jpatck.run.tmo}" />
        	
        	        <if>
                        <contains string="@{for.test}" substring="pluggability"/>
                    <then>
                        <echo>Calling disable.ts.persistence.provider for pluggability test.</echo>
                        <tsant buildfile="${tck.dir}/bin/build.xml" target="disable.ts.persistence.provider" />
                    </then>
                    </if>
                </sequential>
            </for>        	
        </then>
        <else>
            <echo>Calling TCK build.xml for ALL tests</echo>
            <property name="dir.all" value="${tck.dir}/bin" />
            <tsant dir="${dir.all}" buildfile="${dir.all}/build.xml" target="run.all" tmo="${jpatck.run.tmo}"/>
        </else>
        </if>

        <echo>TCK build.xml returned result=${tsant.result}</echo>

        <!-- archive the results and check for test failures -->
        <antcall target="zip-artifacts">
            <param name="results.name" value="tck" />
        </antcall>
    </target>


    <!--
        Target:  zip-artifacts
        Description:  Collects generic TCK test artifacts for debugging
     -->
    <target name="zip-artifacts">
        <echo>Gathering test artifacts for Sun JPA 2.0 TCK</echo>
        <copy overwrite="true"
            file="${tck.reports}/summary.txt"
            tofile="${tck.base}/summary-${results.name}.txt" />
        <property name="tck.results.archive" value="${tck.base}/openjpa-${results.name}-results.zip" />
        <!-- archive the results -->
        <zip destfile="${tck.results.archive}">
            <fileset dir="${tck.work}" />
            <fileset dir="${tck.reports}" />
            <fileset dir="${tck.base}">
                <include name="*${results.name}.log" />
                <include name="*${results.name}.txt" />
                <include name="ts.jte.${results.name}" />
            </fileset>
        </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.
        -->
        <results.count />
        <loadfile property="jpatck.results" srcfile="${tck.work}/jtData/log.txt" />
        <condition property="jpatck.failed">
            <contains string="${jpatck.results}" substring="Completed test run: not ok" />
        </condition>
        <fail if="jpatck.failed">Test Results (${results.name}):  FAILED ${count.failed} tests!</fail>
        <!-- else -->
        <echo>Test Results (${results.name}):  PASSED!</echo>
    </target>

</project>
