diff --git a/releng.wtpbuilder/distribution/wtp.tests/perfbuild.xml b/releng.wtpbuilder/distribution/wtp.tests/perfbuild.xml new file mode 100644 index 0000000000000000000000000000000000000000..4212b711546daf0adc77c5aec57de19673b20de7 --- /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 diff --git a/releng.wtpbuilder/distribution/wtp.tests/testScripts/perftest.xml b/releng.wtpbuilder/distribution/wtp.tests/testScripts/perftest.xml new file mode 100644 index 0000000000000000000000000000000000000000..59c2feac467e6f0aea5b0192ce35e27b4c663129 --- /dev/null +++ b/releng.wtpbuilder/distribution/wtp.tests/testScripts/perftest.xml @@ -0,0 +1,156 @@ +<project + name="Automated Eclipse Testing" + default="all" + basedir="."> + <property + environment="env"/> + <!-- 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}"/> + <echo + level="info" + message="starting Automated Eclipse Testing"/> + <echo + level="info" + message="ant file basedir: ${basedir}"/> + <echo + level="info" + message="testRoot: ${testRoot}"/> + <fail + message="testRoot must be set" + unless="testRoot"/> + + <!--properties file containing the some server name properties --> + <property + file="${testRoot}/testServer.properties"/> + + <!--properties file containing the build information--> + <property + file="${buildDirectory}/label.properties"/> + <!-- 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}"/> + + <!-- + name that can be added to report name to identify which platform + tests results come from + --> + <property + name="platform" + value=""/> + + <!-- TODO: The framework apps might need this. But we should elmimnate if posslbe. --> + <property + name="eclipse-home" + value="${testRoot}"/> + <!-- + The directory that will contain the xml and html results from + the tests that are run + --> + <property + name="results" + value="${testRoot}/results"/> + <property + name="library-file" + value="${testRoot}/wtp-junit-tests.xml"/> + + <!-- jonas install directory --> + <!-- TODO: why do this twice? Here and in init? --> + <property + name="jonas432Dir" + value="${testRoot}/${jonas432DirName}"/> + <target + name="init"> + <antcall + target="setPropertyJOnAS432Dir"/> + </target> + <target + name="setPropertyJOnAS432Dir" + unless="jonas432Dir"> + <property + name="jonas432Dir" + value="${testRoot}/${jonas432DirName}"/> + </target> + <target + name="all" + depends="init,runOneTestBundle" + unless="testBundle"> + <echo + level="info" + message="Starting Unit Tests"/> + <!-- + unlike other ant tasks, subant defaults to false for + inheritall! + --> + <subant + target="performance" + inheritall="true" + failonerror="false"> + <fileset + dir="${eclipse-home}/eclipse/plugins/"> + <include + name="**/test.xml"/> + </fileset> + </subant> + <echo + level="info" + message="Ended Unit Tests"/> + </target> + <!-- + by making 'all' the default, and "runOneTestBundle" as its + 'depends' we can effectively control which is ran based on + whether or not 'testBundle' has been defined by caller. If so, + only that one is ran, otherwise, all of them are. Note, in many + cases a collection of tests could be ran, by specifying a + partial bundle name. for example, specifying + "org.eclipse.jst.jsp" would execute the 3 JSP tests: + org.eclipse.jst.jsp.core.tests, + org.eclipse.jst.jsp.tests.encoding, + org.eclipse.jst.jsp.ui.tests. + --> + <target + name="runOneTestBundle" + depends="init" + if="testBundle"> + <echo + level="info" + message="Starting Unit Tests for one test bundle"/> + <!-- + unlike other ant tasks, subant defaults to false for + inheritall! + --> + <subant + target="performance" + inheritall="true"> + <fileset + dir="${eclipse-home}/plugins/"> + <include + name="**/${testBundle}*/test.xml"/> + </fileset> + </subant> + <echo + level="info" + message="Finished Unit Tests for one test bundle"/> + </target> + <target + name="genHtml" + description="Generates HTML results with provided JUNIT.XSL provided" + unless="genHtml.disable"> + <xslt + style="JUNIT.XSL" + basedir="${results}/xml" + destdir="${results}/html"/> + </target> +</project> \ No newline at end of file diff --git a/releng.wtpbuilder/scripts/standaloneTest/runtest.bat b/releng.wtpbuilder/scripts/standaloneTest/runtest.bat index c239a9fd84184304321a4a555671cecfe3adedd1..14ad43ac480fb9e1ab1572d5daa41ad821809551 100644 --- a/releng.wtpbuilder/scripts/standaloneTest/runtest.bat +++ b/releng.wtpbuilder/scripts/standaloneTest/runtest.bat @@ -68,6 +68,9 @@ REM -f antfile The name or path should not have to be changed, but the "r REM (or exported from Eclipse) into a directory named 'webtools.releng' which is immediately under the BUILD_HOME directory. REM It is assume this batch file, then, is in the BUILD_HOME directory. +REM whatever the user chose, we're going to need the releng data, so run checkout every time + +echo Running standalonecheckout.xml call ant ^ -Dprojectname=wtp-R3.2.0-I ^ -DbuildType=I ^ @@ -77,7 +80,17 @@ call ant ^ -Dbuild.stream=R3.2.0 ^ -DbuildBranch=R3.2.0 ^ -f standalonecheckout.xml + +REM check to see what the user chose. Default is help. + +if x%1==x-functional goto func +if x%1==x-both goto func +if x%1==x-performance goto perf +goto hlp +:func + +echo Running standaloneTest.xml call ant ^ -Dprojectname=wtp-R3.2.0-I ^ -Dbuild.committers=true ^ @@ -89,6 +102,26 @@ call ant ^ -DtestBundle=org.eclipse.jst.jsp ^ -f standaloneTest.xml +REM Only 2 ways to get here are func or both. If func then exit, otherwise must be both, so continue to perf tests. +if x%1==x-functional goto exit - +:perf +echo Running standalonePerfTest.xml +call ant ^ + -Dprojectname=wtp-R3.2.0-I ^ + -Dbuild.committers=true ^ + -DbuildType=I ^ + -DbuildId=3.2.0 ^ + -Dtimestamp=20091116075243 ^ + -Dbuild.stream=R3.2.0 ^ + -DbuildBranch=R3.2.0 ^ + -DtestBundle=org.eclipse.jst.jsp ^ + -f standalonePerfTest.xml +goto exit + +:hlp +echo Use -performance for performance tests, -funtional for function tests, -both for both, or anything else for this message +echo +echo At this time, to run the performance tests it is necessary to to manually install the eclipse test plugins to the WTP install you want to test. +:exit ENDLOCAL