303564 - Run performance tests against the WTP
diff --git a/releng.wtpbuilder/distribution/wtp.tests/perfbuild.xml b/releng.wtpbuilder/distribution/wtp.tests/perfbuild.xml
new file mode 100644
index 0000000..4212b71
--- /dev/null
+++ b/releng.wtpbuilder/distribution/wtp.tests/perfbuild.xml
@@ -0,0 +1,382 @@
+<project
+ name="Build specific targets and properties"
+ default="runTest">
+ <!--
+ Note to be cross-platform, "environment variables" are only
+ appropriate for some variables, e.g. ones we set, since
+ properties are case sensitive, even if the environment variables
+ on your operating system are not, e.g. it will be ${env.Path}
+ not ${env.PATH} on Windows
+ -->
+ <property
+ environment="env"/>
+ <fail
+ message="testRoot must be set for this task"
+ unless="testRoot"/>
+ <!-- required to get proper value of dropinsFolder -->
+ <property
+ name="keyCfgFile"
+ value="${env.PROJECT_BUILDERS}/${projectname}/${env.RELENG}/maps/build.cfg"/>
+ <echo
+ level="info"
+ message="keyCfgFile: ${keyCfgFile}"/>
+ <property
+ file="${keyCfgFile}"/>
+ <!--
+ typcially already set, but in case of standalone tests, may not
+ be
+ -->
+ <property
+ name="buildLabel"
+ value="${buildType}-${buildId}-${timestamp}"/>
+
+
+ <!--
+ Steps to do after the build is done.
+ -->
+ <target
+ name="test">
+ <dirname
+ file="${ant.file}"
+ property="currentDirectory"/>
+ <ant
+ antfile="${ant.file}"
+ target="runTest"
+ dir="${currentDirectory}"/>
+ </target>
+
+ <!--
+ Steps to do to test the build results
+ -->
+ <target
+ name="runTest">
+ <dirname
+ file="${ant.file}"
+ property="test.component.dir"/>
+ <ant
+ antfile="${wtp.builder.home}/scripts/build/label.xml"/>
+ <property
+ file="${buildDirectory}/label.properties"/>
+ <property
+ file="${wtp.builder.home}/build.properties"/>
+ <fail
+ message="testRoot must be set for this task"
+ unless="testRoot"/>
+ <mkdir
+ dir="${testRoot}"/>
+
+ <!-- if results already exist, delete them -->
+ <delete
+ dir="${testRoot}/results"
+ failOnError="false"/>
+ <mkdir
+ dir="${testRoot}/results"/>
+ <mkdir
+ dir="${testRoot}/results/consolelogs"/>
+ <copy
+ todir="${testRoot}"
+ overwrite="true">
+ <fileset
+ dir="${test.component.dir}/testScripts"/>
+ </copy>
+ <echo
+ message="BASEOS: ${env.BASEOS} BASEWS: ${env.BASEWS} BASEARCH: ${env.BASEARCH} "/>
+ <!--
+ for this distribution, dependencies come from releng. Assume
+ no subdirectory, if not otherwise set (bug 285383).
+ -->
+ <property
+ name="env.DEP_DIR"
+ value=""/>
+ <property
+ name="dependency.properties"
+ value="${buildDirectory}/maps/${env.RELENG}${env.DEP_DIR}/maps/dependencies.properties"/>
+ <available
+ file="${dependency.properties}"
+ property="dependency.properties.exists"/>
+ <fail
+ message="dependency file not found: ${dependency.properties}"
+ unless="dependency.properties.exists"/>
+ <ant
+ antfile="${test.component.dir}/testdependency.xml"
+ target="get">
+ <property
+ name="base.install.dir"
+ value="${testRoot}"/>
+ </ant>
+ <antcall
+ target="unzipTests"/>
+ <antcall
+ target="runTestEclipse">
+ <param
+ name="testTarget"
+ value="all"/>
+ </antcall>
+ <antcall
+ target="postRunTestEclipse">
+ <param
+ name="testTarget"
+ value="all"/>
+ </antcall>
+ </target>
+ <target
+ name="unzipTests">
+ <!--
+ unzip the builds and junit tests we use 'unzip' here, so we
+ can continue on error, if desired. (such as if zip was not
+ created, due to other failures or options).
+ -->
+ <exec
+ dir="${buildDirectory}/${buildLabel}"
+ executable="unzip"
+ failonerror="true">
+ <arg
+ line="-o -qq wtp-sdk-${buildLabel}.zip -d ${testRoot}${dropinsFolder}"/>
+ </exec>
+ <exec
+ dir="${buildDirectory}/${buildLabel}"
+ executable="unzip"
+ failonerror="false">
+ <arg
+ line="-o -qq wtp-wst-Automated-Tests-${buildLabel}.zip -d ${testRoot}${dropinsFolder}"/>
+ </exec>
+ <exec
+ dir="${buildDirectory}/${buildLabel}"
+ executable="unzip"
+ failonerror="false">
+ <arg
+ line="-o -qq wtp-jst-Automated-Tests-${buildLabel}.zip -d ${testRoot}${dropinsFolder}"/>
+ </exec>
+ <exec
+ dir="${buildDirectory}/${buildLabel}"
+ executable="unzip"
+ failonerror="false">
+ <arg
+ line="-o -qq wtp-jpt-sdk-${buildLabel}.zip -d ${testRoot}${dropinsFolder}"/>
+ </exec>
+ <exec
+ dir="${buildDirectory}/${buildLabel}"
+ executable="unzip"
+ failonerror="true">
+ <arg
+ line="-o -qq wtp-jpt-Automated-Tests-${buildLabel}.zip -d ${testRoot}${dropinsFolder}"/>
+ </exec>
+ </target>
+ <!--
+ time out may need to be set/adjust for api or performance tests?
+ This testTimeLimit is the whole, overall limit on tests. There's
+ a shorter one for individual suites. some common values, of
+ milliseconds to more recognizable units:
+ 18000000: 5 hours
+ 14400000: 4 hours
+ 7200000: 2 hours
+ 3600000: 1 hour
+ 1800000: 30 minutes
+ 600000: 10 minutes
+ -->
+ <property
+ name="testTimeLimit"
+ value="36000000"/>
+ <property
+ name="testFailOnError"
+ value="false"/>
+ <target
+ name="runTestEclipse"
+ description="Run our JUnit's within an instance of antRunner">
+ <property
+ name="test-vm"
+ value="${env.JAVA_6_HOME}/bin/java"/>
+ <!--
+ set path to eclipse folder. If local folder, use '.';
+ otherwise, use c:\path\to\eclipse or /path/to/eclipse/
+ -->
+ <property
+ name="eclipse.home"
+ value="${testRoot}"/>
+ <echo
+ message="testTarget: ${testTarget}"/>
+ <!--
+ can not pass in empty values in jvmargs so if not testBundle
+ specified, we'll pass a junk (unused) value
+ -->
+ <condition
+ property="testBundleParam"
+ value="-DtestBundle=${testBundle}"
+ else="-Dunused=nouse">
+ <isset
+ property="testBundle"/>
+ </condition>
+ <echo
+ message="Running junits"/>
+ <!--
+ If there is not exactly one launcher in the stack, we'd best
+ fail fast, since we are not expecting that, and may indicate
+ an installation that would produce unpredictable results
+ -->
+ <!--
+ requires ant 1.7, and at this point, we're running 1.6 from
+ eclipse ... <condition property="expectedNumberOfLaunchers">
+ <resourcecount when="equal" count="1" > <fileset
+ dir="${testRoot}/eclipse/plugins"> <include
+ name="org.eclipse.equinox.launcher_*.jar" /> </fileset>
+ </resourcecount> </condition> <fail message="Did not find
+ expected number of launcher jars. Check installation."
+ unless="expectedNumberOfLaunchers" />
+ -->
+ <!--
+ Remember: using dash 'debug' for org.eclipse.ant.core.antRunner
+ produces ant debug info to be output ... which is a TON of
+ stuff. Even 'verbose' is a bit too much.
+ -->
+ <echo
+ message="eclipse.launcher: ${eclipse.launcher}"/>
+ <java
+ taskname="unit-test-masterprocess"
+ fork="true"
+ resultProperty="wtpmasterjunitresult"
+ failonerror="false"
+ timeout="${testTimeLimit}"
+ dir="${testRoot}/eclipse"
+ jvm="${env.JAVA_6_HOME}/bin/java"
+ classname="org.eclipse.equinox.launcher.Main">
+ <classpath>
+ <fileset
+ dir="${testRoot}/eclipse/plugins">
+ <include
+ name="org.eclipse.equinox.launcher_*.jar"/>
+ </fileset>
+ </classpath>
+ <jvmarg
+ value="-Dosgi.ws=${env.BASEWS}"/>
+ <jvmarg
+ value="-Dosgi.os=${env.BASEOS}"/>
+ <jvmarg
+ value="-Dosgi.arch=${env.BASEARCH}"/>
+ <jvmarg
+ value="-Dws=${env.BASEWS}"/>
+ <jvmarg
+ value="-Dos=${env.BASEOS}"/>
+ <jvmarg
+ value="-Darch=${env.BASEARCH}"/>
+ <jvmarg
+ value="-DbuildBranch=${buildBranch}"/>
+ <jvmarg
+ value="-DbuildType=${buildType}"/>
+ <jvmarg
+ value="-DbuildId=${buildId}"/>
+ <jvmarg
+ value="-Dprojectname=${projectname}"/>
+ <jvmarg
+ value="-Djava.io.tmpdir=${env.RECOMMENDED_TMP_DIR}"/>
+ <jvmarg
+ value="-Dorg.eclipse.jst.server.tomcat.50=${testRoot}/jakarta-tomcat-5.0.28"/>
+ <jvmarg
+ value="${testBundleParam}"/>
+ <arg
+ value="-nosplash"/>
+ <arg
+ value="-consolelog"/>
+ <arg
+ value="-data"/>
+ <arg
+ value="${testRoot}/overallTestWorkspace"/>
+ <arg
+ value="-application"/>
+ <arg
+ value="org.eclipse.ant.core.antRunner"/>
+ <arg
+ value="-logger"/>
+ <arg
+ value="org.apache.tools.ant.DefaultLogger"/>
+ <arg
+ value="-file"/>
+ <arg
+ value="${testRoot}/perftest.xml"/>
+ <arg
+ value="${testTarget}"/>
+
+ <!-- make sure our forked env has a DISPLAY -->
+ <env
+ key="DISPLAY"
+ value="${env.DISPLAY}"/>
+ <redirector
+ output="${testRoot}/results/fullOutput.txt"
+ error="${testRoot}/results/fullErrorLog.txt"/>
+ <jvmarg
+ value="-Dbuild.home=${env.BUILD_HOME}"/>
+ <jvmarg
+ value="-DbuildDirectory=${buildDirectory}"/>
+ <jvmarg
+ value="-DbuildLabel=${buildLabel}"/>
+ <jvmarg
+ value="-DbaseLocation=${baseLocation}"/>
+ <jvmarg
+ value="-DtestRoot=${testRoot}"/>
+ <jvmarg
+ value="-DtestDir=${testRoot}"/>
+ <jvmarg
+ value="-DeclipseBuilderDirectory=${pde.builder.path}"/>
+ <!-- IBM_JAVA_OPTIONS contains JIT work arounds for bug 284441 -->
+ <env
+ key="IBM_JAVA_OPTIONS"
+ value="-Xjit:{org/eclipse/wst/html/core/internal/contenttype/HTMLHeadTokenizer.primGetNextToken()Ljava/lang/String;}(disableLookahead),{org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.primGetNextToken()Ljava/lang/String;}(disableLookahead)"/>
+ </java>
+ <echo
+ message="wtpmasterjunitresult ${wtpmasterjunitresult}"/>
+ </target>
+ <target
+ name="postRunTestEclipse">
+ <copy
+ todir="${buildDirectory}/${buildLabel}/testResults/consolelogs/testLogs"
+ overwrite="true"
+ failonerror="false">
+ <fileset
+ dir="${testRoot}/results">
+ <include
+ name="*output.txt"/>
+ </fileset>
+ </copy>
+ <copy
+ todir="${buildDirectory}/${buildLabel}/testResults/consolelogs/testSysErrorLogs"
+ overwrite="true"
+ failonerror="false">
+ <fileset
+ dir="${testRoot}/results">
+ <include
+ name="*error.txt"/>
+ </fileset>
+ </copy>
+ <copy
+ file="${testRoot}/results/fullOutput.txt"
+ toDir="${buildDirectory}/${buildLabel}/testResults/consolelogs/full"
+ overwrite="true"
+ failonerror="false">
+ </copy>
+ <copy
+ file="${testRoot}/results/fullErrorLog.txt"
+ toDir="${buildDirectory}/${buildLabel}/testResults/consolelogs/full"
+ overwrite="true"
+ failonerror="false">
+ </copy>
+ <copy
+ todir="${buildDirectory}/${buildLabel}/testResults/xml"
+ overwrite="true"
+ failonerror="false">
+ <fileset
+ dir="${testRoot}/results/xml">
+ <include
+ name="*.xml"/>
+ </fileset>
+ </copy>
+ <copy
+ todir="${buildDirectory}/${buildLabel}/testResults/html"
+ overwrite="true"
+ failonerror="false">
+ <fileset
+ dir="${testRoot}/results/html">
+ <include
+ name="*.html"/>
+ </fileset>
+ </copy>
+ </target>
+</project>
\ No newline at end of file