| <?xml version="1.0"?> |
| <!--/******************************************************************************* |
| * Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 |
| * which accompanies this distribution. |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Ant naming conventions: |
| * - regardless of the actual OS platform,'/' is the directory separator |
| * (Ant will convert as appropriate). |
| * - multi-word properties use periods '.' |
| * - properties ending in .jar define jarfile names only (no path) |
| * - properties ending in .lib are fully qualified jars (path and filename) |
| * - properties ending in .dir are directory paths |
| * - properties ending in .path are path refid names or explicit classpath fragments |
| * - multi-word targets use hyphens '-' |
| * - targets beginning with test- are reserved for high level test targets, |
| * and are used in test results parsing |
| * - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip) |
| * - multi-word macros use underscores '_' |
| * - multi-word macro attributes are concatenated |
| * e.g. 'runpathref' |
| * - multi-word tasks (taskdef) names are concatenated |
| * e.g. 'validateconnection' |
| * - OS environment variables are in ALLCAPS and have 'env' as a prefix |
| * e.g. ${env.XXX}. |
| * - Ant properties are lower case. |
| * |
| * Contributors: |
| * Martin Vojtek - initial implementation |
| #******************************************************************************/--> |
| |
| <project name="eclipselink.perf.test" default="test" basedir="."> |
| |
| <dirname property="perftest.build.location_temp" file="${ant.file.eclipselink.perf.test}"/> |
| <pathconvert targetos="unix" property="perftest.build.location"> |
| <path> |
| <pathelement location="${perftest.build.location_temp}"/> |
| </path> |
| </pathconvert> |
| <echo message="perftest.build.location = '${perftest.build.location}'"/> |
| <condition property="perftest.2.trunk.dir" value="../.." else=".."> |
| <contains string="${perftest.build.location}" substring="performance/${ant.project.name}"/> |
| </condition> |
| <echo message="perftest.2.trunk.dir = '${perftest.2.trunk.dir}'"/> |
| <property name="perftest.2.common.plugins.dir" value="${perftest.2.trunk.dir}/plugins"/> |
| <property name="perftest.2.moxy.dir" value="${perftest.2.trunk.dir}/moxy/org.eclipse.persistence.moxy"/> |
| <property name="perftest.2.core.dir" value="${perftest.2.trunk.dir}/foundation/org.eclipse.persistence.core"/> |
| <property name="perftest.2.jpa.dir" value="${perftest.2.trunk.dir}/jpa/org.eclipse.persistence.jpa"/> |
| <!-- Temporary until eclipselink.jar property is globally renamed --> |
| <property name="eclipselink.jar" value="eclipselink.jar"/> |
| |
| <!-- Allows a user to override certain user specific properties. --> |
| <property name="env" environment="env" value="env"/> |
| |
| <!-- Allows a user to overide certain user specific properties. --> |
| <!-- local property overrides --> |
| <condition property="custom.bld.properties.message" value="Loading user-defined overrides from '${user.home}/build.properties'..." |
| else="No user-defined overrides found to load ('${user.home}/build.properties' non-existant)."> |
| <available file="${user.home}/build.properties"/> |
| </condition> |
| <echo message="${custom.bld.properties.message}"/> |
| <property file="${user.home}/build.properties"/> |
| <condition property="custom.tst.properties.message" value="Loading user-defined test overrides from '${user.home}/test.properties'..." |
| else="No user-defined test overrides found to load ('${user.home}/test.properties' non-existant)."> |
| <available file="${user.home}/test.properties"/> |
| </condition> |
| <condition property="custom.cmd.properties.message" |
| value="Loading ${test.properties}" |
| else="Skipping ${test.properties}, file does not exist"> |
| <and> |
| <isset property="test.properties"/> |
| <available file="${test.properties}"/> |
| </and> |
| </condition> |
| <echo message="${custom.tst.properties.message}"/> |
| <property file="${user.home}/test.properties"/> |
| <echo message="${custom.cmd.properties.message}"/> |
| <property file="${test.properties}"/> |
| <!-- Allows overriding defaults where access to user.home isn't allowed --> |
| <condition property="custom.local.properties.message" value="Loading local overrides from '${basedir}/local.build.properties'..." |
| else="No Local overrides found to load. ('${basedir}/local.build.properties' non-existant)."> |
| <available file="${basedir}/local.build.properties"/> |
| </condition> |
| <echo message="${custom.local.properties.message}"/> |
| <property file="${basedir}/local.build.properties"/> |
| |
| <property file="${perftest.build.location}/antbuild.properties"/> |
| <property name="extensions.depend.dir" value="../../../extension.lib.external"/> |
| |
| <property name="asm.lib" value="${perftest.2.common.plugins.dir}/${asm.jar}"/> |
| <property name="eclipselink.lib" value="${perftest.2.trunk.dir}/${eclipselink.jar}"/> |
| <property name="javax.validation.lib" value="${perftest.2.common.plugins.dir}/${javax.validation.jar}"/> |
| <property name="jpa21.lib" value="${perftest.2.trunk.dir}/jpa/plugins/${persistence22.jar}"/> |
| <property name="json.lib" value="${perftest.2.common.plugins.dir}/${json.jar}"/> |
| <property name="validation-impl.lib" value="${extensions.depend.dir}/${validation-impl.jar}"/> |
| <property name="jboss-logging.lib" value="${extensions.depend.dir}/${jboss-logging.jar}"/> |
| <property name="javax.el-api.lib" value="${extensions.depend.dir}/${javax.el-api.jar}"/> |
| <property name="classmate.lib" value="${extensions.depend.dir}/${classmate.jar}"/> |
| |
| <property name="jmh-core.lib" value="${extensions.depend.dir}/${jmh-core.jar}"/> |
| <property name="jmh-generator-annprocess.lib" value="${extensions.depend.dir}/${jmh-generator-annprocess.jar}"/> |
| <property name="commons-math.lib" value="${extensions.depend.dir}/${commons-math.jar}"/> |
| |
| <!-- Loaded from ${user.home}/test.properties --> |
| <property name="jdbc.driver.lib" value="${jdbc.driver.jar}"/> |
| <property name="persistence.xml" value="resource/META-INF/persistence.xml"/> |
| <property name="additional.jvmargs" value="-Ddummy2=dummy"/> |
| |
| <!-- Compile/run paths --> |
| <path id="perf.compile.path"> |
| <pathelement path="${jmh-core.lib}"/> |
| <pathelement path="${jmh-generator-annprocess.lib}"/> |
| <pathelement path="${json.lib}"/> |
| <pathelement path="${jpa21.lib}"/> |
| <pathelement path="${perftest.2.core.dir}/target/${classes.dir}"/> |
| <pathelement path="${perftest.2.jpa.dir}/target/${classes.dir}"/> |
| <pathelement path="${perftest.2.moxy.dir}/target/${classes.dir}"/> |
| <pathelement path="${javax.validation.lib}"/> |
| </path> |
| <path id="perf.run.path"> |
| <pathelement path="${jmh-core.lib}"/> |
| <pathelement path="${jmh-generator-annprocess.lib}"/> |
| <pathelement path="${commons-math.lib}"/> |
| <pathelement path="${jpa21.lib}"/> |
| <pathelement path="${jdbc.driver.lib}"/> |
| <pathelement path="${javax.validation.lib}"/> |
| <pathelement path="${validation-impl.lib}"/> |
| <pathelement path="${jboss-logging.lib}"/> |
| <pathelement path="${javax.el-api.lib}"/> |
| <pathelement path="${classmate.lib}"/> |
| <pathelement path="${asm.lib}"/> |
| <pathelement path="${json.lib}"/> |
| <pathelement path="${perftest.2.moxy.dir}/target/${classes.dir}"/> |
| <pathelement path="${perftest.2.core.dir}/target/${classes.dir}"/> |
| <pathelement path="${perftest.2.jpa.dir}/target/${classes.dir}"/> |
| <pathelement path="${classes.dir}"/> |
| </path> |
| |
| <!-- The following compile/run paths reference eclipselink.jar for non-test classes and resources --> |
| <path id="perf.compile.against.jar.path"> |
| <pathelement path="${jmh-core.lib}"/> |
| <pathelement path="${jmh-generator-annprocess.lib}"/> |
| <pathelement path="${json.lib}"/> |
| <pathelement path="${jpa21.lib}"/> |
| <pathelement path="${eclipselink.lib}"/> |
| <pathelement path="${javax.validation.lib}"/> |
| </path> |
| <path id="perf.run.against.jar.path"> |
| <pathelement path="${jmh-core.lib}"/> |
| <pathelement path="${jmh-generator-annprocess.lib}"/> |
| <pathelement path="${commons-math.lib}"/> |
| <pathelement path="${jpa21.lib}"/> |
| <pathelement path="${jdbc.driver.lib}"/> |
| <pathelement path="${javax.validation.lib}"/> |
| <pathelement path="${validation-impl.lib}"/> |
| <pathelement path="${jboss-logging.lib}"/> |
| <pathelement path="${javax.el-api.lib}"/> |
| <pathelement path="${classmate.lib}"/> |
| <pathelement path="${asm.lib}"/> |
| <pathelement path="${eclipselink.lib}"/> |
| <pathelement path="${json.lib}"/> |
| <pathelement path="${classes.dir}"/> |
| </path> |
| |
| <!-- Test targets --> |
| <target name="test" depends="clean, clean-reports, filter-tokens, compile-and-run-tests" |
| description="run perf tests"/> |
| <target name="test-against-jar" |
| depends="clean, clean-reports, filter-tokens, compile-and-run-tests-against-jar" |
| description="run perf tests against eclipselink.jar"/> |
| |
| <target name="test-jpa" |
| depends="clean, clean-reports, filter-tokens, compile-and-run-tests-against-jar" |
| description="run perf tests against eclipselink.jar"/> |
| |
| <!-- Build targets --> |
| <target name="compile-tests" depends="clean" description="build perf test classes"> |
| <compile_perf_tests subcomponent="perf" compilepathref="perf.compile.path"/> |
| </target> |
| <target name="compile-tests-against-jar" depends="clean" description="build perf test classes against eclipselink.jar"> |
| <echo message="Compiling performance tests..."/> |
| <compile_perf_tests subcomponent="perf" compilepathref="perf.compile.against.jar.path"/> |
| <echo message=""/> |
| </target> |
| |
| <!-- Build & Run targets --> |
| <target name="compile-and-run-tests" depends="compile-tests" description="build and run perf tests"> |
| <run_perf_tests runpathref="perf.run.path"/> |
| </target> |
| |
| <target name="compile-and-run-tests-against-jar" depends="compile-tests-against-jar" description="build and run perf tests against eclipselink.jar"> |
| <available file="${eclipselink.lib}" property="eclipselink.lib.exists"/> |
| <fail unless="${eclipselink.lib.exists}" message="${eclipselink.lib} not found"/> |
| <run_jpa_perf_tests runpathref="perf.run.against.jar.path"/> |
| </target> |
| |
| <!-- Clean targets --> |
| <target name="clean" description="clean the build"> |
| <delete includeEmptyDirs="true" failonerror="false"> |
| <fileset dir="${classes.dir}"/> |
| </delete> |
| <mkdir dir="${classes.dir}"/> |
| </target> |
| |
| <target name="clean-reports" description="clean jmh report directory"> |
| <delete dir="${report.dir}" includeEmptyDirs="true" failonerror="false"/> |
| <mkdir dir="${report.dir}"/> |
| </target> |
| |
| <target name="filter-tokens" description="Filter tokens in configuration files."> |
| <filter token="driver" value="${db.driver}"/> |
| <filter token="url" value="${db.url}"/> |
| <filter token="user" value="${db.user}"/> |
| <filter token="pwd" value="${db.pwd}"/> |
| <copy todir="classes/META-INF" filtering="true" overwrite="true"> |
| <fileset dir="resource/META-INF" includes="persistence.xml"/> |
| </copy> |
| </target> |
| |
| <target name="restore-tokens" description="Restore token symbols from template."> |
| <copy file="${persistence.xml}.template" tofile="${persistence.xml}" overwrite="true"/> |
| </target> |
| |
| <macrodef name="run_jpa_perf_tests"> |
| <attribute name="runpathref" /> |
| <sequential> |
| <run_perf_test runpathref="@{runpathref}" clsname="org.eclipse.persistence.testing.perf.JPABenchmarks"/> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="run_perf_tests"> |
| <attribute name="runpathref" /> |
| <sequential> |
| <run_perf_test runpathref="@{runpathref}" clsname="org.eclipse.persistence.testing.perf.Benchmarks"/> |
| </sequential> |
| </macrodef> |
| |
| <!-- Test run macros --> |
| <macrodef name="run_perf_test"> |
| <attribute name="runpathref"/> |
| <attribute name="clsname"/> |
| <sequential> |
| <property name="eclipselink.agent.path" location="${eclipselink.lib}"/> |
| <java classname="@{clsname}" dir="${report.dir}" fork="true" failonerror="false"> |
| <jvmarg line="-Declipselink.agent=${eclipselink.agent.path}"/> |
| <jvmarg line="${additional.jvmargs}"/> |
| <arg value="${warmup.iterations}"/> |
| <arg value="${run.iterations}"/> |
| <arg value="${jmh.resultFile}"/> |
| <arg value="${jmh.resultFormat}"/> |
| <classpath> |
| <path refid="@{runpathref}"/> |
| </classpath> |
| </java> |
| </sequential> |
| </macrodef> |
| |
| <!-- Compile macros --> |
| <macrodef name="compile_perf_tests"> |
| <attribute name="subcomponent"/> |
| <attribute name="compilepathref"/> |
| <sequential> |
| <mkdir dir="${classes.dir}"/> |
| <javac srcdir="${src.dir}" |
| destdir="${classes.dir}" |
| debug="${javac.debug}" |
| debuglevel="${javac.debuglevel}" |
| encoding="UTF-8" |
| optimize="${javac.optimize}" |
| source="${javac.version}" |
| deprecation="${javac.deprecation}" |
| failonerror="false" |
| includes="org/eclipse/samples/**/*.java,org/eclipse/persistence/testing/@{subcomponent}/**/*.java"> |
| <classpath> |
| <path refid="@{compilepathref}"/> |
| </classpath> |
| </javac> |
| |
| <copy todir="${classes.dir}"> |
| <fileset dir="${src.dir}"> |
| <include name="**/*.properties" /> |
| </fileset> |
| <fileset dir="${resource.dir}"> |
| <exclude name="**/persistence.xml"/> |
| </fileset> |
| </copy> |
| </sequential> |
| </macrodef> |
| </project> |