mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Christophe Sovant
22.17.2008 5c72383eb9b8472d9c6a7dba2339dd0204ccc213
Issue 3030: refactoring ant build (part II)
15 files deleted
9 files added
3 files renamed
4 files modified
4023 ■■■■■ changed files
opends/tests/staf-tests/build 3 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/build.bat 3 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/config/config.py 71 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/Linux.properties 26 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/SunOS-sparc.properties 26 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/SunOS-x86.properties 26 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/build.properties 110 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/build.xml 377 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/dependencies.xml 149 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/opends.xml 107 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/proxy.xml 71 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/staf-installer.properties 114 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/staf-installer.xml 1365 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/staf.xml 250 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/tests.xml 301 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/usage.xml 66 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/user.xml 184 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/windows-x86-32.properties 27 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/windows-x86-64.properties 26 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/ant/windows.properties 27 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/staf/failure.html 7 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/staf/replay.bat 37 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/staf/replay.sh 37 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/staf/staf-controler.cfg 18 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/staf/staf-slave.cfg 15 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/staf/stress-tests.cfg 51 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/tests/config.py.stubs 6 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/tests/runStressTests.xml 245 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/tests/runTestJob.xml 236 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/tests/runTests.xml 12 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/stress-tests/config/config.py 30 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/build
@@ -45,7 +45,8 @@
fi
OPENDS_LIB=`cd ../../lib;pwd`
ANT_LIB=$OPENDS_LIB/mail.jar:$OPENDS_LIB/activation.jar
ANT_HOME=`cd ../..;pwd`/ext/ant
export ANT_HOME
# Execute the ant script and pass it any additional command-line arguments.
$ANT_HOME/bin/ant -lib $OPENDS_LIB/mail.jar:$OPENDS_LIB/activation.jar -f shared/ant/staf-installer.xml ${*}
$ANT_HOME/bin/ant -lib ${ANT_LIB} -f shared/ant/build.xml ${*}
opends/tests/staf-tests/build.bat
@@ -47,6 +47,7 @@
if not "%*" == "" echo   your parameters=%*
echo Now running ant ...
set OPENDS_LIB=%FT_HOME%\..\..\lib
"%ANT_HOME%\bin\ant" -lib "%OPENDS_LIB%\mail.jar;%OPENDS_LIB%\activation.jar" -f shared\ant\staf-installer.xml %*
set ANT_LIB="%OPENDS_LIB%\mail.jar;%OPENDS_LIB%\activation.jar"
"%ANT_HOME%\bin\ant" -lib "%ANT_LIB%" -f shared\ant\staf-installer.xml %*
:end
opends/tests/staf-tests/functional-tests/config/config.py
File was deleted
opends/tests/staf-tests/shared/ant/Linux.properties
File was deleted
opends/tests/staf-tests/shared/ant/SunOS-sparc.properties
File was deleted
opends/tests/staf-tests/shared/ant/SunOS-x86.properties
File was deleted
opends/tests/staf-tests/shared/ant/build.properties
New file
@@ -0,0 +1,110 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License").  You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at
# trunk/opends/resource/legal-notices/OpenDS.LICENSE
# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at
# trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
# add the following below this CDDL HEADER, with the fields enclosed
# information:
#      Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
#      Copyright 2007-2008 Sun Microsystems, Inc.
## These values can be overrided using the user.properties file
# Log directory section
logs.dir=${basedir}${file.separator}temp${file.separator}logs
# Repository section
repository.dir=${basedir}${file.separator}temp${file.separator}repository
# OpenDS section
default.opends.dir=${project.home}${file.separator}build${file.separator}package
default.opends.zip=${product.name}.zip
opends.dir=${default.opends.dir}
opends.zip=${default.opends.zip}
# Java section
java.path=${java.home}
# Shared folder
shared.dir=${basedir}${file.separator}shared
# Proxy section
proxy.enabled=n
proxy.host=webcache.central.sun.com
proxy.port=8080
proxy.user=
proxy.pass=
# Archives section
archives.dir=${repository.dir}${file.separator}archives
staf.url=http://superb-east.dl.sourceforge.net/sourceforge/staf
staf.version=330
## staf.archive value depends on os
stax.version=333
stax.archive=STAXV${stax.version}.zip
email.version=331
email.archive=EmailV${email.version}.zip
event.version=311
event.archive=EventV${event.version}.zip
eventmanager.version=332
eventmanager.archive=EventManagerV${eventmanager.version}.zip
http.version=300
http.archive=HTTPV${http.version}.zip
tomcat.version=6.0.14
tomcat.url=http://archive.apache.org/dist/tomcat/tomcat-6/v${tomcat.version}/bin
tomcat.archive=apache-tomcat-${tomcat.version}.zip
# STAF section
staf.install.dir=${repository.dir}${file.separator}install${file.separator}staf-${os.myname}
staf.port=6500
staf.config.dir=${repository.dir}${file.separator}configs
staf.shared.dir=${shared.dir}${file.separator}staf
staf.config.stubs=${staf.shared.dir}${file.separator}staf-${staf.type}.cfg
staf.config.file=${staf.config.dir}${file.separator}staf-${staf.type}-${host.name}.cfg
staf.bin.dir=${staf.install.dir}${file.separator}bin
staf.daemon=${staf.bin.dir}${file.separator}STAFProc${extension.binary}
staf.executable=${staf.bin.dir}${file.separator}STAF${extension.binary}
staf.email.send=false
staf.email.to=
# Tests section
tests.dir=${basedir}${file.separator}${tests.type}
tests.shared.dir=${shared.dir}${file.separator}tests
tests.config.stubs=${tests.shared.dir}${file.separator}config.py.stubs
tests.config.file=config-${host.name}.py
tests.run.dir=${logs.dir}${file.separator}${tests.type}${file.separator}run
tests.tmp.dir=${logs.dir}${file.separator}${tests.type}${file.separator}tmp
tests.xml=${tests.shared.dir}${file.separator}runTestJob.xml
opends.port.ldap=1389
opends.port.ldaps=1636
opends.port.jmx=1689
opends.admin.dn=cn=myself
opends.admin.pwd=password
snmp.opendmk.lib.dir=
test.plan.custom=${basedir}${file.separator}${tests.type}${file.separator}testcases${file.separator}run-custom-suites.dat
test.plan.default=${basedir}${file.separator}${tests.type}${file.separator}testcases${file.separator}run-default-suites.dat
test.plan.list=aci,backends,clu,core,dsconfig,dsml,groups,i18n,indexes,logging,monitoring,plugins,privileges,quickstart,replication,schema,security,setup,snmp,tasks,virtualAttributes
# Email section
email.enabled=n
email.to=${user.name}@${host.name}
email.from=${user.name}@${host.name}
email.server.host=${host.name}
email.server.port=25
email.server.user=
email.server.pwd=
opends/tests/staf-tests/shared/ant/build.xml
New file
@@ -0,0 +1,377 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="opends-staf-tests" basedir="../.." default="usage">
  <description>
    Installer ant file for the staf platform
    This allows tests that need a running instance of staf to easily
    get one and hides all the complexity under the hood
  </description>
  <!-- ################## -->
  <!-- # ANT PROPERTIES # -->
  <!-- ################## -->
  <!-- Display ant properties -->
  <target name="properties">
    <echoproperties/>
  </target>
  <!-- ######## -->
  <!-- # INIT # -->
  <!-- ######## -->
  <!-- Initialise variables -->
  <target name="global-init">
    <!-- Define project.home variable -->
    <dirname file="${basedir}/.." property="project.home"/>
    <!-- Default value for product.name variable -->
    <property file="${project.home}/PRODUCT"/>
    <property name="product.name"
      value="${SHORT_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}"/>
    <!-- Define antfile.dir variable -->
    <property name="antfile.dir" value="${basedir}/shared/ant"/>
    <!-- Define antfile.dir variable -->
    <property name="tmp.dir" value="${java.io.tmpdir}/temp_files"/>
    <!-- Load ant-contrib -->
    <taskdef resource="net/sf/antcontrib/antlib.xml">
      <classpath>
        <fileset dir="${project.home}/ext/ant/lib">
          <include name="**/*.jar"/>
        </fileset>
      </classpath>
    </taskdef>
    <!-- Check if the current platform is supported -->
    <switch value="${os.name}">
      <case value="SunOS">
        <!-- Solaris system -->
        <switch value="${os.arch}">
          <case value="sparc">
            <!-- Solaris sparc -->
            <exec executable="isainfo" output="os.bits">
              <arg value="-b"/>
            </exec>
            <switch value="${os.bits}">
              <case value="32">
                <!-- Solaris sparc 32 bit -->
                <property name="os.myname" value="solaris-sparc"/>
              </case>
              <case value="64">
                <!-- Solaris sparc 64 bit -->
                <property name="os.myname" value="solaris-sparc64"/>
              </case>
            </switch>
          </case>
          <case value="x86">
            <!-- Solaris x86 -->
            <property name="os.myname" value="solaris-x86"/>
          </case>
          <case value="amd64">
            <!-- Solaris amd64 -->
            <property name="os.myname" value="solaris-x64-64"/>
          </case>
        </switch>
        <exec executable="uname" outputproperty="host.name">
            <arg line="-n"/>
        </exec>
        <property name="extension.binary" value=""/>
        <property name="extension.shell" value=""/>
        <property name="var.path" value="PATH"/>
      </case>
      <case value="Linux">
        <!-- Linux system -->
        <switch value="${os.arch}">
          <case value="i386">
            <!-- Linux i386 -->
            <property name="os.myname" value="linux"/>
          </case>
          <case value="amd64">
            <!-- Linux amd64 -->
            <property name="os.myname" value="linux-amd64"/>
          </case>
        </switch>
        <exec executable="uname" outputproperty="host.name">
            <arg line="-n"/>
        </exec>
        <property name="extension.binary" value=""/>
        <property name="extension.shell" value=""/>
        <property name="var.path" value="PATH"/>
      </case>
      <default>
        <if>
          <equals arg1="${os.family}" arg2="windows"/>
          <then>
            <!-- Windows system -->
            <property name="os.myname" value="win32"/>
            <property name="host.name" value="${env.COMPUTERNAME}"/>
            <property name="extension.binary" value=".exe"/>
            <property name="extension.shell" value=".bat"/>
            <property name="var.path" value="Path"/>
          </then>
          <else>
            <fail>"Unsupported platform."</fail>
          </else>
        </if>
      </default>
    </switch>
    <!-- Default value for staf.type -->
    <if>
      <not>
        <isset property="staf.type"/>
      </not>
      <then>
        <property name="staf.type" value="controler"/>
      </then>
    </if>
    <!-- Default value for tests.type -->
    <if>
      <not>
        <isset property="tests.type"/>
      </not>
      <then>
        <property name="tests.type" value="functional-tests"/>
      </then>
    </if>
    <!-- User-defined values -->
    <property file="${basedir}/user.properties"/>
    <!-- Default values for build environment -->
    <property file="${antfile.dir}/build.properties"/>
    <!-- Set value for staf.archive and staf.lib.dir variables -->
    <if>
      <equals arg1="${os.family}" arg2="windows"/>
      <then>
        <!-- Windows system -->
        <property name="staf.archive"
                  value="STAF${staf.version}-setup-${os.myname}.exe"/>
        <property name="staf.lib.dir" value="${staf.install.dir}${file.separator}bin"/>
      </then>
      <else>
        <!-- Other systems -->
        <property name="staf.archive"
                  value="STAF${staf.version}-${os.myname}.tar.gz"/>
        <property name="staf.lib.dir" value="${staf.install.dir}${file.separator}lib"/>
      </else>
    </if>
  </target>
  <!-- ######### -->
  <!-- # USAGE # -->
  <!-- ######### -->
  <!-- Display usage -->
  <target name="usage"
          depends="global-init">
    <ant antfile="${antfile.dir}/usage.xml" target="usage"/>
  </target>
  <!-- ############# -->
  <!-- # CONFIGURE # -->
  <!-- ############# -->
  <!-- Configure user variables -->
  <target name="user-configure"
          depends="global-init">
    <ant antfile="${antfile.dir}/user.xml" target="configure"/>
  </target>
  <!-- Unconfigure user variables -->
  <target name="user-unconfigure"
          depends="global-init">
    <ant antfile="${antfile.dir}/user.xml" target="unconfigure"/>
  </target>
  <!-- ######### -->
  <!-- # PROXY # -->
  <!-- ######### -->
  <!-- Check proxy -->
  <target name="proxy-check"
          depends="global-init">
    <ant antfile="${antfile.dir}/proxy.xml" target="check"/>
  </target>
  <!-- Set proxy -->
  <target name="proxy-set"
          depends="global-init,proxy-check">
    <ant antfile="${antfile.dir}/proxy.xml" target="set"/>
  </target>
  <!-- ############ -->
  <!-- # DOWNLOAD # -->
  <!-- ############ -->
  <!-- Download dependencies -->
  <target name="dependencies-download"
          depends="global-init,proxy-set">
    <ant antfile="${antfile.dir}/dependencies.xml" target="download"/>
  </target>
  <!-- Remove current dependencies -->
  <target name="dependencies-remove"
          depends="global-init">
    <ant antfile="${antfile.dir}/dependencies.xml" target="remove"/>
  </target>
  <!-- Remove old dependencies -->
  <target name="dependencies-removeold"
          depends="global-init">
    <ant antfile="${antfile.dir}/dependencies.xml" target="removeold"/>
  </target>
  <!-- Remove all dependencies -->
  <target name="dependencies-removeall"
          depends="global-init">
    <ant antfile="${antfile.dir}/dependencies.xml" target="removeall"/>
  </target>
  <!-- ######## -->
  <!-- # STAF # -->
  <!-- ######## -->
  <!-- Install STAF and STAF services -->
  <target name="staf-install"
          depends="global-init,dependencies-download">
    <ant antfile="${antfile.dir}/staf.xml" target="install"/>
  </target>
  <!-- Uninstall STAF and STAF services -->
  <target name="staf-uninstall"
          depends="global-init,staf-stop">
    <ant antfile="${antfile.dir}/staf.xml" target="uninstall"/>
  </target>
  <!-- Start STAF -->
  <target name="staf-start"
          depends="global-init,staf-install">
    <ant antfile="${antfile.dir}/staf.xml" target="start"/>
  </target>
  <target name="staf-start-slave">
    <property name="staf.type" value="slave"/>
    <antcall target="staf-start"/>
  </target>
  <target name="staf-start-controler">
    <property name="tests.type" value="controler"/>
    <antcall target="staf-start"/>
  </target>
  <!-- Stop STAF -->
  <target name="staf-stop"
          depends="global-init">
    <ant antfile="${antfile.dir}/staf.xml" target="stop"/>
  </target>
  <!-- Status STAF -->
  <target name="staf-status"
          depends="global-init">
    <ant antfile="${antfile.dir}/staf.xml" target="status"/>
  </target>
   <!-- Start STAF GUI -->
  <target name="staf-gui"
          depends="global-init,staf-start">
    <ant antfile="${antfile.dir}/staf.xml" target="gui"/>
  </target>
  <!-- Display STAF JVM logs -->
  <target name="staf-jvmlogs"
          depends="global-init,staf-start">
    <ant antfile="${antfile.dir}/staf.xml" target="jvmlogs"/>
  </target>
  <!-- ######### -->
  <!-- # TESTS # -->
  <!-- ######### -->
  <!-- Configure tests to run -->
  <target name="tests-configure"
          depends="global-init">
    <ant antfile="${antfile.dir}/tests.xml" target="configure"/>
  </target>
  <!-- Configure functional tests to run -->
  <target name="tests-func-configure">
    <property name="tests.type" value="functional-tests"/>
    <antcall target="tests-configure"/>
  </target>
  <!-- Configure stress tests to run -->
  <target name="tests-stress-configure">
    <property name="tests.type" value="stress-tests"/>
    <antcall target="tests-configure"/>
  </target>
  <!-- Run tests -->
  <target name="tests-run"
          depends="global-init,opends-build,staf-start">
    <ant antfile="${antfile.dir}/tests.xml" target="run"/>
  </target>
  <!-- Run functional tests -->
  <target name="tests-func-run">
    <property name="tests.type" value="functional-tests"/>
    <antcall target="tests-run"/>
  </target>
  <!-- Run stress tests -->
  <target name="tests-stress-run">
    <property name="tests.type" value="stress-tests"/>
    <antcall target="tests-run"/>
  </target>
  <!-- ########## -->
  <!-- # OPENDS # -->
  <!-- ########## -->
  <!-- Build OpenDS zip -->
  <target name="opends-build"
          depends="global-init">
    <ant antfile="${antfile.dir}/opends.xml" target="build"/>
  </target>
</project>
opends/tests/staf-tests/shared/ant/dependencies.xml
New file
@@ -0,0 +1,149 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="dependencies">
  <description>
    Manage dependencies.
  </description>
  <!-- Download all the dependencies -->
  <target name="download">
    <mkdir dir="${archives.dir}"/>
    <!-- STAF and other services -->
    <var name="list" value="${staf.archive},${stax.archive},${email.archive}"/>
    <var name="list" value="${list},${event.archive},${eventmanager.archive}"/>
    <var name="list" value="${list},${http.archive},${tomcat.archive}"/>
    <mkdir dir="${tmp.dir}"/>
    <for list="${list}" param="archive">
      <sequential>
        <var name="rc" unset="true"/>
        <var name="ext" unset="true"/>
        <var name="url" unset="true"/>
        <if>
          <not>
            <available file="${staf.install.dir}/bin/STAF.cfg"/>
          </not>
          <then>
            <trycatch property="error" reference="referror">
              <try>
                <propertyregex property="ext"
                               input="@{archive}"
                               regexp=".*\.(.*)"
                               select="\1"
                               casesensitive="false"/>
                <switch value="${ext}">
                  <case value="gz">
                    <!-- gz files -->
                    <gunzip src="${archives.dir}/@{archive}"
                            dest="${tmp.dir}"/>
                  </case>
                  <case value="zip">
                    <!-- zip files -->
                    <unzip src="${archives.dir}/@{archive}"
                           dest="${tmp.dir}"/>
                  </case>
                  <default>
                  </default>
                </switch>
                <var name="rc" value="0"/>
              </try>
              <catch>
                <echo>ERROR: ${error}</echo>
                <var name="rc" value="-1"/>
              </catch>
            </trycatch>
          </then>
        </if>
        <var name="rc" value="0"/>
        <if>
          <or>
            <not>
              <equals arg1="${rc}" arg2="0"/>
            </not>
            <not>
              <available file="${archives.dir}/@{archive}"/>
            </not>
          </or>
          <then>
            <if>
              <equals arg1="@{archive}" arg2="${tomcat.archive}"/>
              <then>
                <!-- Tomcat url -->
                <var name="url" value="${tomcat.url}"/>
              </then>
              <else>
                <!-- Other url -->
                <var name="url" value="${staf.url}"/>
              </else>
            </if>
            <get src="${url}/@{archive}"
                 dest="${archives.dir}/@{archive}"/>
          </then>
        </if>
      </sequential>
    </for>
    <delete includeemptydirs="true">
       <fileset dir="${tmp.dir}" includes="**/*"/>
    </delete>
  </target>
  <!-- Remove current dependencies -->
  <target name="remove">
    <delete dir="${archives.dir}">
      <include name="STAF${staf.version}*"/>
      <include name="${stax.archive}"/>
      <include name="${email.archive}"/>
      <include name="${event.archive}"/>
      <include name="${eventmanager.archive}"/>
      <include name="${http.archive}"/>
      <include name="${tomcat.archive}"/>
    </delete>
  </target>
  <!-- Remove old dependencies -->
  <target name="removeold">
    <delete dir="${archives.dir}">
      <exclude name="STAF${staf.version}*"/>
      <exclude name="${stax.archive}"/>
      <exclude name="${email.archive}"/>
      <exclude name="${event.archive}"/>
      <exclude name="${eventmanager.archive}"/>
      <exclude name="${http.archive}"/>
      <exclude name="${tomcat.archive}"/>
    </delete>
  </target>
  <!-- Remove all the dependencies -->
  <target name="removeall">
    <delete dir="${archives.dir}"/>
  </target>
</project>
opends/tests/staf-tests/shared/ant/opends.xml
New file
@@ -0,0 +1,107 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="opends">
  <description>
    Build OpenDS archive.
  </description>
  <!-- Build OpenDS archive -->
  <target name="build">
    <if>
      <and>
       <equals arg1="${opends.dir}" arg2="${default.opends.dir}"/>
       <equals arg1="${opends.zip}" arg2="${default.opends.zip}"/>
      </and>
      <then>
        <loadproperties srcFile="${project.home}/build.properties">
          <filterchain>
            <linecontains>
              <contains value="opendmk."/>
            </linecontains>
          </filterchain>
        </loadproperties>
        <if>
          <not>
            <available file="${opends.dir}/${opends.zip}"/>
          </not>
          <then>
            <if>
              <and>
                <not>
                  <equals arg1="${snmp.opendmk.lib.dir}" arg2=""/>
                </not>
                <available file="${snmp.opendmk.lib.dir}"/>
              </and>
              <then>
                <echo>Build ${opends.zip} with SNMP</echo>
                <replace file="${project.home}/build.properties"
                         value="opendmk.lib.dir=${snmp.opendmk.lib.dir}">
                  <replacefilter token="opendmk.lib.dir="/>
                </replace>
                <property name="package.rebuild" value="true"/>
              </then>
              <else>
                <echo>Build ${opends.zip} without SNMP</echo>
                <property name="package.rebuild" value="true"/>
              </else>
            </if>
          </then>
          <else>
            <if>
              <and>
                <not>
                  <equals arg1="${snmp.opendmk.lib.dir}" arg2=""/>
                </not>
                <available file="${snmp.opendmk.lib.dir}"/>
                <equals arg1="${opendmk.lib.dir}" arg2=""/>
              </and>
              <then>
                <echo>Rebuild ${opends.zip} with SNMP</echo>
                <replace file="${project.home}/build.properties"
                         value="opendmk.lib.dir=${snmp.opendmk.lib.dir}">
                  <replacefilter token="opendmk.lib.dir="/>
                </replace>
                <property name="package.rebuild" value="true"/>
              </then>
            </if>
          </else>
        </if>
        <if>
          <isset property="package.rebuild"/>
          <then>
            <ant antfile="${project.home}/build.xml"
                 target="package"
                 inheritAll="false"/>
          </then>
        </if>
      </then>
    </if>
  </target>
</project>
opends/tests/staf-tests/shared/ant/proxy.xml
New file
@@ -0,0 +1,71 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="proxy">
  <description>
    Proxy configuration.
  </description>
  <!-- Check proxy configuration -->
  <target name="check">
    <if>
      <equals arg1="${proxy.enabled}" arg2="y"/>
      <then>
        <echo>Checking for proxy [${proxy.host}:${proxy.port}]</echo>
        <echo>as user [${proxy.user}].</echo>
        <fail message="Proxy [${proxy.host}] is unreachable.">
          <condition>
            <and>
              <not>
                <http url="${staf.url}"/>
              </not>
              <not>
                <isreachable host="${proxy.host}" timeout="5"/>
              </not>
            </and>
          </condition>
        </fail>
        <echo>Proxy detected.</echo>
      </then>
    </if>
  </target>
  <!-- Set proxy configuration -->
  <target name="set">
    <if>
      <equals arg1="${proxy.enabled}" arg2="y"/>
      <then>
        <echo>Configuring proxy...</echo>
        <setproxy proxyhost="${proxy.host}"
                  proxyport="${proxy.port}"
                  proxyuser="${proxy.user}"
                  proxypassword="${proxy.pass}"/>
      </then>
    </if>
  </target>
</project>
opends/tests/staf-tests/shared/ant/staf-installer.properties
File was deleted
opends/tests/staf-tests/shared/ant/staf-installer.xml
File was deleted
opends/tests/staf-tests/shared/ant/staf.xml
New file
@@ -0,0 +1,250 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="staf">
  <description>
    Manage STAF (install/uninstall, start/stop).
  </description>
  <!-- Install STAF and services -->
  <target name="install">
    <if>
      <not>
        <available file="${staf.install.dir}/bin/STAF.cfg"/>
      </not>
      <then>
        <mkdir dir="${tmp.dir}"/>
        <!-- Install STAF -->
        <echo>Installing staf, please wait...</echo>
        <mkdir dir="${staf.install.dir}"/>
        <gunzip src="${archives.dir}/${staf.archive}" dest="${tmp.dir}"/>
        <untar dest="${tmp.dir}">
          <fileset dir="${tmp.dir}">
            <include name="*.tar"/>
          </fileset>
        </untar>
        <chmod file="${tmp.dir}/staf/STAFInst" perm="755"/>
        <exec executable="${tmp.dir}/staf/STAFInst">
          <arg value="-source"/>
          <arg value="${tmp.dir}/staf"/>
          <arg value="-target"/>
          <arg value="${staf.install.dir}"/>
          <arg value="-acceptlicense"/>
        </exec>
        <delete dir="${repository.dir}/staf"/>
        <!-- Install services -->
        <echo>Installing services, please wait...</echo>
        <mkdir dir="${staf.install.dir}/services"/>
        <unzip src="${archives.dir}/${email.archive}"
           dest="${staf.install.dir}/services"/>
        <unzip src="${archives.dir}/${event.archive}"
           dest="${staf.install.dir}/services"/>
        <unzip src="${archives.dir}/${eventmanager.archive}"
           dest="${staf.install.dir}/services"/>
        <unzip src="${archives.dir}/${stax.archive}"
           dest="${staf.install.dir}/services"/>
        <unzip src="${archives.dir}/${http.archive}"
           dest="${staf.install.dir}/services"/>
        <!-- Add DSML service extension -->
        <mkdir dir="${staf.install.dir}/services/dsml"/>
        <copy todir="${staf.install.dir}/services/dsml">
          <fileset dir="${basedir}/../staf-tests/shared/dsml"
               includes="dsmlService.jar"/>
        </copy>
        <delete includeemptydirs="true">
          <fileset dir="${tmp.dir}" includes="**/*"/>
        </delete>
      </then>
      <else>
        <echo>Staf is already installed in [${staf.install.dir}]</echo>
      </else>
    </if>
    <!-- Copy functional-tests.cfg -->
    <mkdir dir="${staf.config.dir}"/>
    <copy file="${staf.config.stubs}" tofile="${staf.config.file}">
      <filterchain>
        <expandproperties/>
      </filterchain>
    </copy>
  </target>
  <!-- Uninstall STAF and services -->
  <target name="uninstall">
    <if>
      <available file="${staf.install.dir}/bin/STAF.cfg"/>
      <then>
        <echo>Uninstalling staf, please wait...</echo>
        <exec executable="${staf.install.dir}/STAFUninst"/>
        <delete dir="${staf.install.dir}"/>
      </then>
      <else>
        <echo>Staf is not installed</echo>
      </else>
    </if>
  </target>
  <!-- Start STAF -->
  <target name="start">
    <if>
      <not>
        <socket port="${staf.port}" server="${host.name}"/>
      </not>
      <then>
        <echo>Starting staf, please wait...</echo>
        <exec dir="${staf.bin.dir}"
              executable="${staf.daemon}"
              spawn="true">
          <arg value="${staf.config.file}"/>
          <env key="${var.path}" path="${java.path}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin"/>
          <env key="LD_LIBRARY_PATH" path="${staf.install.dir}/lib"/>
          <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}:${project.home}/ext/svnkit/svnkit.jar:."/>
          <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
          <env key="STAFCODEPAGE" value="LATIN_1"/>
          <env key="STAF_INSTANCE_NAME" value="STAF"/>
        </exec>
        <echo>Waiting for service to become available...</echo>
        <waitfor maxwait="3"
             maxwaitunit="minute"
             checkevery="10"
             checkeveryunit="second"
             timeoutproperty="timeout">
          <socket server="${host.name}" port="${staf.port}"/>
        </waitfor>
        <echo>STAF is now ready to serve requests</echo>
      </then>
      <else>
        <echo>Staf is already listening on port [${staf.port}]</echo>
      </else>
    </if>
  </target>
  <!-- Stop STAF -->
  <target name="stop">
    <if>
      <socket port="${staf.port}" server="${host.name}"/>
      <then>
        <echo>Stopping staf, please wait...</echo>
        <exec executable="${staf.executable}">
          <arg line="local shutdown shutdown"/>
          <env key="${var.path}" path="${java.path}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin"/>
          <env key="LD_LIBRARY_PATH" path="${staf.lib.dir}"/>
          <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}:."/>
          <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
          <env key="STAFCODEPAGE" value="LATIN_1"/>
        </exec>
        <echo>Waiting for service to shutdown gracefully...</echo>
        <waitfor maxwait="3"
             maxwaitunit="minute"
             checkevery="10"
             checkeveryunit="second"
             timeoutproperty="timeoutSocketListening">
          <not>
            <socket server="${host.name}" port="${staf.port}"/>
          </not>
        </waitfor>
        <echo>STAF stopped</echo>
      </then>
      <else>
        <echo>Staf is not running</echo>
      </else>
    </if>
  </target>
  <!-- Display STAF status -->
  <target name="status">
    <echo>Operating System Family  - ${os.myname}</echo>
    <echo>Operating System Name    - ${os.name}</echo>
    <echo>Operating System Version - ${os.version}</echo>
    <echo>Machine Architecture     - ${os.arch}</echo>
    <echo>Java Home                - ${java.path}</echo>
    <echo>Java Version             - ${java.version}</echo>
    <echo></echo>
    <if>
      <available file="${staf.install.dir}/bin/STAF.cfg"/>
      <then>
        <echo>Staf is installed in [${staf.install.dir}]</echo>
      </then>
      <else>
        <echo>Staf is not installed</echo>
      </else>
    </if>
    <echo></echo>
    <if>
      <socket port="${staf.port}" server="${host.name}"/>
      <then>
        <echo>Staf is listening on port [${staf.port}]</echo>
      </then>
      <else>
        <echo>Staf is not running</echo>
      </else>
    </if>
  </target>
  <!-- Display STAF gui -->
  <target name="gui">
    <exec dir="${staf.install.dir}"
          executable="${java.path}/bin/java"
          spawn="true">
      <env key="${var.path}" path="${java.path}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin"/>
      <env key="LD_LIBRARY_PATH" path="${staf.lib.dir}"/>
      <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}:."/>
      <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
      <env key="STAFCODEPAGE" value="LATIN_1"/>
      <arg value="-classpath"/>
      <arg value="${staf.install.dir}/services/stax/STAXMon.jar${path.separator}${staf.lib.dir}/JSTAF.jar"/>
      <arg value="com.ibm.staf.service.stax.STAXMonitor"/>
    </exec>
  </target>
  <!-- Display jvmlogs -->
  <target name="jvmlogs">
    <exec dir="${staf.install.dir}"
          executable="${java.path}/bin/java"
          spawn="true">
      <env key="${var.path}" path="${java.path}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin"/>
      <env key="LD_LIBRARY_PATH" path="${staf.lib.dir}"/>
      <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}:."/>
      <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
      <env key="STAFCODEPAGE" value="LATIN_1"/>
      <arg value="-classpath"/>
      <arg value="${staf.lib.dir}${path.separator}${staf.lib.dir}/JSTAF.jar"/>
      <arg value="com.ibm.staf.STAFJVMLogViewer"/>
    </exec>
  </target>
</project>
opends/tests/staf-tests/shared/ant/tests.xml
New file
@@ -0,0 +1,301 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="tests">
  <description>
    Execute the tests.
  </description>
  <target name="run">
    <tstamp>
      <format property="tests.run.time" pattern="yyyy.MM.dd-HH.mm.ss"/>
    </tstamp>
      <!-- clean up some -->
    <delete dir="${tests.tmp.dir}"/>
      <!-- make all the necessary directories for this test run -->
    <mkdir dir="${tests.tmp.dir}"/>
    <mkdir dir="${tests.run.dir}/${tests.run.time}"/>
    <mkdir dir="${tests.run.dir}/${tests.run.time}/config"/>
    <mkdir dir="${tests.run.dir}/${tests.run.time}/report"/>
      <!-- these will serve for after-the-fact archiving the logs -->
    <mkdir dir="${tests.run.dir}/${tests.run.time}/staf-logs"/>
    <mkdir dir="${tests.run.dir}/${tests.run.time}/server-logs"/>
    <mkdir dir="${tests.run.dir}/${tests.run.time}/coverage"/>
    <delete file="${test.plan.default}"/>
    <for list="${test.plan.list}" param="item">
      <sequential>
      <echo file="${test.plan.default}" append="true">@{item}
</echo>
      </sequential>
    </for>
    <!-- generate the timestamped config file that will be used for this run -->
    <copy file="${tests.config.stubs}"
          tofile="${tests.run.dir}/${tests.run.time}/config/${tests.config.file}">
      <filterchain>
        <expandproperties/>
      </filterchain>
    </copy>
    <!-- this is a windows-specific measure to replace the windows file
         separator by a forward slash. Staf otherwise fails to find the files. -->
    <replace file="${tests.run.dir}/${tests.run.time}/config/${tests.config.file}" token="\" value="/"/>
    <property name="tests.request" value="EXECUTE FILE ${tests.xml} JOBNAME OpenDS_Functional_Tests SCRIPTFILE ${tests.run.dir}/${tests.run.time}/config/${tests.config.file} WAIT CLEARLOGS"/>
    <echo>While the tests are running you may tail the job logs at</echo>
    <echo>${staf.install.dir}/logs/MACHINE/${host.name}</echo>
    <echo>Running tests. This will take more than a while.</echo>
    <property name="CLASSPATH" value="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
    <exec
      dir="${staf.bin.dir}"
      executable="${staf.executable}"
      >
      <arg line="LOCAL STAX ${tests.request}"/>
      <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
      <env key="LD_LIBRARY_PATH" value="${staf.lib.dir}"/>
      <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
      <env key="STAFCODEPAGE" value="LATIN_1"/>
    </exec>
    <symlink link="${tests.run.dir}/latest" resource="${tests.run.time}" overwrite="true"/>
    <if>
      <available file="${tests.tmp.dir}/${product.name}/logs"/>
      <then>
        <echo>Saving server logs</echo>
        <copy todir="${tests.run.dir}/${tests.run.time}/server-logs">
          <fileset dir="${tests.tmp.dir}/${product.name}/logs"/>
        </copy>
      </then>
    </if>
    <echo>Saving Staf/Stax logs</echo>
    <copy todir="${tests.run.dir}/${tests.run.time}/staf-logs">
      <fileset dir="${staf.install.dir}/logs"/>
    </copy>
    <delete dir="${staf.install.dir}/logs"/>
    <echo>Saving report</echo>
    <copy todir="${tests.run.dir}/${tests.run.time}/report">
      <fileset dir="${tests.tmp.dir}">
        <include name="r*"/>
      </fileset>
    </copy>
    <delete file="${tests.tmp.dir}/percentage.properties"/>
  </target>
  <target name="configure">
    <condition property="already.customized" value="true" else="false">
      <available file="${test.plan.custom}" />
    </condition>
    <if>
      <equals arg1="${already.customized}" arg2="true" />
      <then>
        <input message="A previously customized test plan was detected. Do you want to change the list of suites to run?" validargs="y,n" defaultvalue="n" addproperty="prompt.do" />
      </then>
      <else>
        <echo>No previous customized test plan found.</echo>
        <property name="prompt.do" value="y" />
      </else>
    </if>
    <if>
      <equals arg1="${prompt.do}" arg2="y" />
      <then>
        <delete file="${test.plan.custom}" />
        <for param="item">
          <dirset dir="${tests.dir}/testcases"
                  includes="*">
            <type type="dir"/>
          </dirset>
          <sequential>
            <var name="test" unset="true"/>
            <var name="answer" unset="true"/>
            <basename property="test" file="@{item}"/>
            <input message="Do you want to execute ${test}?" validargs="y,n" defaultvalue="y" addproperty="answer"/>
            <if>
              <equals arg1="${answer}" arg2="y" />
              <then>
                <echo file="${test.plan.custom}" append="true">${test}
</echo>
              </then>
            </if>
          </sequential>
        </for>
      </then>
    </if>
  </target>
  <target name="send-mail-prepare">
    <condition property="test.successful">
      <available file="${tests.tmp.dir}/my-report.html"/>
    </condition>
    <condition property="email.send">
      <equals arg1="${email.enabled}" arg2="y"
              casesensitive="false" trim="true"/>
    </condition>
  </target>
  <target name="send-mail-get-percentage" depends="send-mail-prepare" if="test.successful">
    <echo>test report found.Proceeding...</echo>
    <delete file="${tests.tmp.dir}/percentage.properties"/>
    <copy file="${tests.tmp.dir}/my-report.html" tofile="${tests.tmp.dir}/percentage.properties">
      <filterchain>
        <linecontains>
          <contains value='font size="+2'/>
        </linecontains>
        <tokenfilter>
          <replaceregex pattern=".*font size=.+2..(.*\d+)%./font.*" replace="test.percentage=\1"/>
        </tokenfilter>
      </filterchain>
    </copy>
    <property file="${tests.tmp.dir}/percentage.properties"/>
    <echo>Test Success Rate: ${test.percentage}%</echo>
  </target>
  <target name="send-mail" if="email.send" depends="send-mail-get-percentage">
    <condition property="email.send.noauth">
      <or>
        <not>
          <isset property="email.server.user"/>
        </not>
        <not>
          <length string="${email.server.user}" when="greater"
                  trim="true" length="0"/>
        </not>
      </or>
    </condition>
    <condition property="email.file"
               value="${tests.tmp.dir}/my-report.html"
               else="staf-installer/failure.html">
      <available file="${tests.tmp.dir}/my-report.html"/>
    </condition>
    <condition property="email.subject"
               value="FT - Run - ${daily.date} - ${os.name} - ${os.arch} - ${test.percentage}%"
               else="FT - Failed -${daily.date} - ${os.name} - ${os.arch}">
      <available file="${tests.tmp.dir}/my-report.html"/>
    </condition>
    <antcall target="send-mail-noauth"/>
    <antcall target="send-mail-withauth"/>
  </target>
  <target name="send-mail-noauth" if="email.send.noauth">
    <mail from="${email.from}"
          tolist="${email.to}"
          subject="${email.subject}"
          mailhost="${email.server.host}"
          mailport="${email.server.port}"
          messagefile="${email.file}"
          messagemimetype="text/html" />
  </target>
  <target name="send-mail-withauth" unless="email.send.noauth">
    <mail from="${email.from}"
          tolist="${email.to}"
          subject="${email.subject}"
          mailhost="${email.server.host}"
          mailport="${email.server.port}"
          user="${email.server.user}"
          password="${email.server.pwd}"
          messagefile="${email.file}"
          messagemimetype="text/html" />
  </target>
  <target name="coverage-init">
    <path id="emma.lib">
      <pathelement location="${project.home}/ext/emma/lib/emma.jar"     />
      <pathelement location="${project.home}/ext/emma/lib/emma_ant.jar" />
    </path>
    <taskdef resource="emma_ant.properties" classpathref="emma.lib" />
  </target>
  <target name="coverage-on" depends="coverage-init">
    <property name="coverage.on" value="true"/>
  </target>
  <target name="coverage-instrument" if="coverage.on">
    <delete dir="${tests.tmp.dir}/coverage-instr" />
    <mkdir dir="${tests.tmp.dir}/coverage-instr" />
    <!-- unzip the original package in a temporary location to make the
         changes necessary so that the coverage tool is called
     -->
    <unzip src="${product.package}"
           dest="${tests.tmp.dir}/coverage-instr"/>
    <!-- Add emma in the package along with the other librairies
         this has the advantage of being automatically picked up by the scripts
    -->
    <copy file="${project.home}/ext/emma/lib/emma.jar"
          tofile="${tests.tmp.dir}/coverage-instr/${product.name}/lib/emma.jar"/>
    <!-- move the original product package to make room for the coverage
         enabled package
     -->
    <move file="${product.package}" tofile="${product.package}.nocov"/>
    <!-- intrument the OpenDS java archive to gather coverage -->
    <java classpath="${tests.tmp.dir}${file.separator}coverage-instr${file.separator}${product.name}${file.separator}lib${file.separator}emma.jar"
          classname="emma" fork="true">
      <jvmarg value="-Demma.metadata.out.file=${tests.tmp.dir}${file.separator}coverage-instr${file.separator}${product.name}${file.separator}coverage.em" />
      <arg value="instr" />
      <arg value="-m" />
      <arg value="overwrite" />
      <arg value="-ip" />
      <arg value="${tests.tmp.dir}${file.separator}coverage-instr${file.separator}${product.name}${file.separator}lib${file.separator}OpenDS.jar:${tests.tmp.dir}${file.separator}coverage-instr${file.separator}${product.name}${file.separator}lib${file.separator}extensions${file.separator}snmp-mib2605.jar" />
    </java>
    <echo>Writing properties file</echo>
    <echo file="${tests.tmp.dir}/coverage-instr/${product.name}/classes/emma.properties">coverage.out.file=${tests.tmp.dir}/emma.coverage
    </echo>
    <!-- Repackage the product with coverage enabled scripts -->
    <zip basedir="${tests.tmp.dir}/coverage-instr" destfile="${product.package}">
      <zipfileset dir="${tests.tmp.dir}/coverage-instr"
                  includes="${product.name}/setup,${product.name}/uninstall,${product.name}/upgrade,${product.name}/bin/*,${product.name}/lib/*.sh"
           filemode="755" dirmode="755" />
    </zip>
    <!-- <delete dir="${tests.tmp.dir}/coverage-instr"/> -->
  </target>
  <target name="coverage-report" if="coverage.on">
    <delete dir="${tests.tmp.dir}/coverage/all" />
    <mkdir dir="${tests.tmp.dir}/coverage/all" />
    <emma enabled="${coverage.on}" >
      <report >
        <infileset dir="${tests.tmp.dir}" includes="**/*.em,**/*.ec" />
        <sourcepath>
          <dirset dir="${project.home}" >
            <include name="src" />
          </dirset>
        </sourcepath>
        <html outfile="${tests.tmp.dir}/coverage/all/index.html"
              columns="name, method, line"
              sort="+line, +name"
              metrics="line:80"
        />
      </report>
    </emma>
  </target>
  <target name="restore-pkg" if="coverage.on">
    <delete file="${product.package}"/>
    <move file="${product.package}.nocov" tofile="${product.package}"/>
  </target>
  <target name="testwithcoverage" depends="coverage-on,coverage-instrument,restore-pkg,coverage-report"/>
<!-- Run tests section - bottom -->
</project>
opends/tests/staf-tests/shared/ant/usage.xml
New file
@@ -0,0 +1,66 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="usage">
  <description>
    Display usage.
  </description>
  <!-- Display usage -->
  <target name="usage"
          description="Gives a message that helps using this file">
    <echo>
      --general--
      usage                   : print this message
      properties              : print ant properties
      --dependencies--
      dependencies-download   : download the archives necessary to install staf
      dependencies-remove     : remove the archives previously downloaded
      --staf--
      staf-install            : install the staf
      staf-start              : start staf without services
      staf-controler-start    : start staf without services
      staf-remote-start       : start staf with all the services
      staf-stop               : stop staf
      staf-uninstall          : uninstall
      staf-status             : report if staf is installed and running
      staf-gui                : start the STAX gui
      staf-jvmlogs            : start the STAF jvm log viewer
      --tests--
      tests-configure         : configure the functional tests
      tests-func-configure    : configure the functional tests
      tests-stress-configure  : configure the stress tests
      tests-run               : run the functional tests
      tests-func-run          : run the functional tests
      tests-stress-run        : run the stress tests
    </echo>
  </target>
</project>
opends/tests/staf-tests/shared/ant/user.xml
New file
@@ -0,0 +1,184 @@
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<project name="user">
  <description>
    Configure user variables.
  </description>
  <target name="configure">
    <echo>* Framework configuration</echo>
    <input message="   Enter path to OpenDS archive:"
           defaultvalue="${opends.dir}"
           addproperty="opends.dir.input"/>
    <input message="   Enter OpenDS archive name:"
           defaultvalue="${opends.zip}"
           addproperty="opends.zip.input"/>
    <input message="   Enter path to logs directory:"
           defaultvalue="${logs.dir}"
           addproperty="logs.dir.input"/>
    <input message="   Enter path to repository directory:"
           defaultvalue="${repository.dir}"
           addproperty="repository.dir.input"/>
    <input message="   Use proxy?"
           defaultvalue="${proxy.enabled}"
           validargs="y,n"
           addproperty="proxy.enabled.input"/>
    <if>
      <equals arg1="${proxy.enabled.input}" arg2="y"/>
      <then>
        <input message="   Enter proxy host:"
               defaultvalue="${proxy.host}"
               addproperty="proxy.host.input"/>
        <input message="   Enter proxy port:"
               defaultvalue="${proxy.port}"
               addproperty="proxy.port.input"/>
        <input message="   Enter proxy user:"
               defaultvalue="${proxy.user}"
               addproperty="proxy.user.input"/>
        <input message="   Enter proxy password:"
               defaultvalue="${proxy.pass}"
               addproperty="proxy.pass.input"/>
      </then>
      <else>
        <property name="proxy.host.input" value="${proxy.host}"/>
        <property name="proxy.port.input" value="${proxy.port}"/>
        <property name="proxy.user.input" value="${proxy.user}"/>
        <property name="proxy.pass.input" value="${proxy.pass}"/>
      </else>
    </if>
    <echo>* STAF configuration</echo>
    <input message="   Enter STAF version:"
           defaultvalue="${staf.version}"
           addproperty="staf.version.input"/>
    <input message="   Enter STAX version:"
           defaultvalue="${stax.version}"
           addproperty="stax.version.input"/>
    <input message="   Enter Email service version:"
           defaultvalue="${email.version}"
           addproperty="email.version.input"/>
    <input message="   Enter Event service version:"
           defaultvalue="${event.version}"
           addproperty="event.version.input"/>
    <input message="   Enter EventManager service version:"
           defaultvalue="${eventmanager.version}"
           addproperty="eventmanager.version.input"/>
    <input message="   Enter HTTP service version:"
           defaultvalue="${http.version}"
           addproperty="http.version.input"/>
    <input message="   Enter Tomcat service version:"
           defaultvalue="${tomcat.version}"
           addproperty="tomcat.version.input"/>
    <input message="   Enter hostname:"
           defaultvalue="${host.name}"
           addproperty="host.name.input"/>
    <input message="   Enter STAF port:"
           defaultvalue="${staf.port}"
           addproperty="staf.port.input"/>
    <echo>* Tests configuration</echo>
    <input message="   Enter Java home path:"
           defaultvalue="${java.path}"
           addproperty="java.path.input"/>
    <input message="   Enter OpenDS ldap port:"
           defaultvalue="${opends.port.ldap}"
           addproperty="opends.port.ldap.input"/>
    <input message="   Enter OpenDS secure ldap port:"
           defaultvalue="${opends.port.ldaps}"
           addproperty="opends.port.ldaps.input"/>
    <input message="   Enter OpenDS jmx port:"
           defaultvalue="${opends.port.jmx}"
           addproperty="opends.port.jmx.input"/>
    <input message="   Enter OpenDS admin DN (also called root DN):"
           defaultvalue="${opends.admin.dn}"
           addproperty="opends.admin.dn.input"/>
    <input message="   Enter OpenDS admin password:"
           defaultvalue="${opends.admin.pwd}"
           addproperty="opends.admin.pwd.input"/>
    <input message="   Enter OpenDMK lib directory:"
           defaultvalue="${snmp.opendmk.lib.dir}"
           addproperty="snmp.opendmk.lib.dir.input"/>
    <input message="   Send report email?"
           defaultvalue="${email.enabled}"
           validargs="y,n"
           addproperty="email.enabled.input"/>
    <if>
      <equals arg1="${email.enabled.input}" arg2="y"/>
      <then>
        <input message="   Email will appear to be from:"
               defaultvalue="${email.from}"
               addproperty="email.from.input"/>
        <input message="   Send email to:"
               defaultvalue="${email.to}"
               addproperty="email.to.input"/>
        <input message="   Enter SMTP server host:"
               defaultvalue="${email.server.host}"
               addproperty="email.server.host.input"/>
        <input message="   Enter SMTP server port:"
               defaultvalue="${email.server.port}"
               addproperty="email.server.port.input"/>
        <input message="   Enter SMTP server user:"
               defaultvalue="${email.server.user}"
               addproperty="email.server.user.input"/>
        <input message="   Enter SMTP server password:"
               defaultvalue="${email.server.pwd}"
               addproperty="email.server.pwd.input"/>
      </then>
      <else>
        <property name="email.from.input" value="${email.from}"/>
        <property name="email.to.input" value="${email.to}"/>
        <property name="email.server.host.input" value="${email.server.host}"/>
        <property name="email.server.port.input" value="${email.server.port}"/>
        <property name="email.server.user.input" value="${email.server.user}"/>
        <property name="email.server.pwd.input" value="${email.server.pwd}"/>
      </else>
    </if>
    <propertyselector property="input.list"
                      delimiter=","
                      match="(.*)\.input"
                      select="\1"
                      casesensitive="false"/>
    <echo>Saving ...</echo>
    <echo file="${basedir}/user.properties"># User-defined values
# This file is generated by "build user-configure" command
    </echo>
    <for list="${input.list}" param="item">
      <sequential>
        <var name="val" value="${@{item}.input}"/>
        <echo file="${basedir}/user.properties" append="true">
@{item}=${val}</echo>
      </sequential>
    </for>
  </target>
  <target name="unconfigure">
    <delete file="${basedir}/user.properties"/>
  </target>
</project>
opends/tests/staf-tests/shared/ant/windows-x86-32.properties
File was deleted
opends/tests/staf-tests/shared/ant/windows-x86-64.properties
File was deleted
opends/tests/staf-tests/shared/ant/windows.properties
File was deleted
opends/tests/staf-tests/shared/staf/failure.html
File was deleted
opends/tests/staf-tests/shared/staf/replay.bat
File was deleted
opends/tests/staf-tests/shared/staf/replay.sh
File was deleted
opends/tests/staf-tests/shared/staf/staf-controler.cfg
File was renamed from opends/tests/staf-tests/shared/staf/functional-tests.cfg
@@ -40,8 +40,8 @@
# LOG SERVICE CONFIGURATION
SERVICE Log LIBRARY STAFLog \
  PARMS "Directory {STAF/Config/STAFRoot}/../logs"
  PARMS "Directory {STAF/Config/STAFRoot}/logs"
# ZIP SERVICE CONFIGURATION
SERVICE Zip LIBRARY STAFZip
@@ -50,23 +50,23 @@
#  OPTION JVMName=EventJVM \
#  OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension}
SERVICE Event LIBRARY JSTAF \
  EXECUTE {STAF/Config/STAFRoot}/services/event/STAFEvent.jar
  EXECUTE {STAF/Config/STAFRoot}/services/event/STAFEvent.jar
# EVENTMANAGER SERVICE CONFIGURATION
# EVENTMANAGER SERVICE CONFIGURATION
#  OPTION JVMName=EventManagerJVM \
#  OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension}
#  OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension}
#  PARMS "EVENTSERVICENAME=Event" \
SERVICE EventManager LIBRARY JSTAF \
  EXECUTE {STAF/Config/STAFRoot}/services/eventmanager/STAFEventManager.jar
  EXECUTE {STAF/Config/STAFRoot}/services/eventmanager/STAFEventManager.jar
# STAX SERVICE CONFIGURATION
#  OPTION JVMName=StaxJVM \
SERVICE Stax LIBRARY JSTAF \
  EXECUTE {STAF/Config/STAFRoot}/services/stax/STAX.jar
  EXECUTE {STAF/Config/STAFRoot}/services/stax/STAX.jar
#  EXECUTE {STAF/Config/STAFRoot}/services/stax/STAX.jar \
#  OPTION JVMName=STAXJVM \
#  OPTION J2=-Xoss1m -Xss1m -Xmx384m
#EMAIL SERVICE CONFIGURATION
#  OPTION JVMName=EmailJVM \
#  OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension}
@@ -82,7 +82,7 @@
  OPTION JVMNAME=httpJVM  \
  OPTION J2=-Xmx128m -Xms32m \
    -Djavax.net.ssl.trustStorePassword=changeit \
    -Djavax.net.ssl.trustStore={STAF/Config/STAFRoot}/services/DSML/tomcatCertificate
    -Djavax.net.ssl.trustStore={STAF/Config/STAFRoot}/services/DSML/tomcatCertificate
#DSML SERVICE CONFIGURATION
#uncomment following if you want it to be in separate JVMs
opends/tests/staf-tests/shared/staf/staf-slave.cfg
File was renamed from opends/tests/staf-tests/shared/ant/SunOS.properties
@@ -21,4 +21,17 @@
# CDDL HEADER END
#
#
#      Copyright 2007-2008 Sun Microsystems, Inc.
#      Copyright 2008 Sun Microsystems, Inc.
# Turn on tracing of internal errors and deprecated options
trace enable tracepoints "error deprecated"
# Enable TCP/IP connections
interface tcp library STAFTCP option port=${staf.port}
# Set default local trust
trust machine local://local level 5
trust machine tcp://* level 5
# Add default service loader
serviceloader library STAFDSLS
opends/tests/staf-tests/shared/staf/stress-tests.cfg
File was deleted
opends/tests/staf-tests/shared/tests/config.py.stubs
@@ -27,12 +27,12 @@
TEST_JVM_STRING             = '${java.version}(${sun.arch.data.model} bits)'
STAF_LOCAL_HOSTNAME         = 'localhost'
STAF_REMOTE_HOSTNAME        = 'localhost'
TMPDIR                      = '${staf.tmp.dir}'
TMPDIR                      = '${tests.tmp.dir}'
PSWDFILE                    = '%s/password' % TMPDIR
OPENDSDIR                   = '${project.home}'
OPENDSNAME                  = '${product.name}'
ZIPNAME                     = '${product.name}.zip'
ZIPPATH                     = '${product.package.dir}'
ZIPPATH                     = '${opends.dir}'
TESTS_ROOT                  = '%s/tests/staf-tests' % OPENDSDIR
TESTS_DIR                   = '%s/functional-tests' % TESTS_ROOT
TESTS_SHARED_DIR            = '%s/shared' % TESTS_DIR
@@ -47,7 +47,7 @@
DIRECTORY_INSTANCE_SSL_PORT = '${opends.port.ldaps}'
DIRECTORY_INSTANCE_SFX      = 'dc=com'
DIRECTORY_INSTANCE_BE       = 'userRoot'
JAVA_HOME                   = '${java.home}'
JAVA_HOME                   = '${java.path}'
LOGS_ROOT                   = '%s' % TMPDIR
LOGS_URI                    = ''
SEND_MAIL_AFTER_TEST_RUN    = '${staf.email.send}'
opends/tests/staf-tests/shared/tests/runStressTests.xml
File was deleted
opends/tests/staf-tests/shared/tests/runTestJob.xml
@@ -60,7 +60,7 @@
          else:
            ServerOsString='Unknown Operating System'
        except NameError,details:
            ServerOsString='Unknown Operating System'
            ServerOsString='Unknown Operating System'
        try:
          if TEST_JVM_STRING:
@@ -77,17 +77,17 @@
            logsURI=''
        except NameError,details:
            logsURI=''
      </script>
      <job name="'Job: %s %s' % (STAF_REMOTE_HOSTNAME,ServerOsString) " monitor="1" clearlogs="'Enabled'" logtcstartstop="'Enabled'">
        <job-file>'%s/shared/tests/runFuncTests.xml' % TESTS_ROOT</job-file>
        <job-file>'%s/shared/tests/runTests.xml' % TESTS_ROOT</job-file>
        <job-scriptfiles machine="STAF_LOCAL_HOSTNAME"> STAXJobScriptFiles </job-scriptfiles>
        <job-action>
          <log>'Started sub-job %s on %s, %s' % (STAXSubJobID,STAF_REMOTE_HOSTNAME,ServerOsString )</log>
        </job-action>
      </job>
      <if expr="RC == 0">
        <sequence>
          <message>
@@ -107,11 +107,11 @@
          </sequence>
        </else>
      </if>
      <!--- Import required shared xml libraries -->
      <import machine="STAF_LOCAL_HOSTNAME"
              file="'%s/stafcmd.xml' % TESTS_FUNCTIONS_DIR" />
      <!-- FixMe
        dirty workaround because utils.xml now depends on environment.xml
        to avoid loading environment.xml I'll just set the required vars here
@@ -123,7 +123,7 @@
      </script>
      <import machine="STAF_LOCAL_HOSTNAME"
        file="'%s/utils.xml' % (TESTS_FUNCTIONS_DIR)" />
      <!-- Get Directory Server Variables -->
      <call function="'GetVar'">
        { 'location'  : STAF_REMOTE_HOSTNAME,
@@ -131,19 +131,19 @@
          'variable'  : 'Job%s_ServerInfo' % STAXSubJobID
        }
      </call>
      <if expr="RC != 0">
        <script>
          STAFResult='{}'
        </script>
      </if>
      <!-- Build the Servers Information Dictionary -->
      <script>
      <script>
        ServersInfoDict=eval(STAFResult)
        ServerName='unknown'
        ServerName='unknown'
        ServerVersion='unknown'
        ServerBuildId='unknown'
        ServerJavaVersion='unknown'
@@ -157,32 +157,32 @@
        ServerSvnRevision='unknown'
        ServerPackage='%s/%s' % (ZIPPATH,ZIPNAME)
        ServerSNMPJarFile='%s' % SNMP_OPENDMK_JARFILE
        if ServersInfoDict.has_key('%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)):
        if ServersInfoDict.has_key('%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)):
          ServerInfoDict=ServersInfoDict['%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)]
          ServerName=OPENDSNAME
          ServerName=OPENDSNAME
          ServerInfoKey='server version'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerVersion=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='server buildid'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerBuildId=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='java version'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerJavaVersion=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='java vendor'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerJavaVendor=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='jvm version'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerJVMVersion=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='jvm vendor'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerJVMVendor=ServerInfoDict[ServerInfoKey]
@@ -190,24 +190,24 @@
          ServerInfoKey='jvm architecture'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerJVMArchitecture=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='system os'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerSystemOS=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='system name'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerSystemName=ServerInfoDict[ServerInfoKey]
          ServerInfoKey='svn revision'
          if ServerInfoDict.has_key(ServerInfoKey):
            ServerSvnRevision=ServerInfoDict[ServerInfoKey]
        else:
          ServerInfoDict='No key found (%s/%s)' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
        if ServerOsString == 'Unknown Operating System':
          ServerOsString=ServerSystemOS
          ServerOsString=ServerSystemOS
        if ServerJVMString == 'Unknown JVM':
          ServerJVMString=ServerJVMVersion
@@ -227,10 +227,10 @@
      <call function="'GetVar'">
        { 'location'  : STAF_REMOTE_HOSTNAME,
          'type'      : 'shared',
          'variable'  : 'Job%s_LogsDir' % STAXSubJobID
          'variable'  : 'Job%s_LogsDir' % STAXSubJobID
        }
      </call>
      <if expr="RC == 0">
        <script>
          logsDir=STAFResult
@@ -239,24 +239,24 @@
        <sequence>
          <message>
            'Unable to retrieve LogsDir variable, RC=%s,Result=%s.' % (RC,STAFResult)
          </message>
          </message>
          <script>
            logsDir='%s' % TMPDIR
          </script>
        </sequence>
      </else>
      </if>
      <script>
        logsReportDir='%s/reports' % logsDir
        logsTestsDir='%s/testlogs' % logsDir
      </script>
      <call function="'createFolder'">
        { 'location'   : STAF_LOCAL_HOSTNAME,
        { 'location'   : STAF_LOCAL_HOSTNAME,
          'foldername' : logsReportDir }
      </call>
      <script>
        resultQuery=[]
        textfile= '%s/results.txt' % logsReportDir
@@ -264,7 +264,7 @@
      </script>
      <iterate var="thisChild" in="listOfChildren">
        <sequence>
        <sequence>
          <stafcmd name="'STAF Command: Log Query All'">
            <location>'%s' % STAF_LOCAL_HOSTNAME </location>
            <service>'log'</service>
@@ -282,12 +282,12 @@
                'Log Query on STAX_Job_%s Completed. RC=%s' % (thisChild,RC)
              </message>
              <iterate var="line" in="resultQuery">
                <script>
                 txtfh.write('%s\n' % line)
                </script>
              </iterate>
              </iterate>
            </sequence>
            <else>
              <sequence>
@@ -302,26 +302,26 @@
        </sequence>
      </iterate>
      <script>
        txtfh.close()
      <script>
        txtfh.close()
      </script>
      <!-- Write XML File for results -->
      <script>
        import re
        xmlfile= '%s/results.xml' % logsReportDir
        xmlfh=open(xmlfile,'w')
        xmlfh=open(xmlfile,'w')
        errorfile= '%s/results.errors' % logsReportDir
        errorfh=open(errorfile,'w')
      </script>
      <!-- Build the test case dictionary object -->
      <script>
        testDict={}
        testCaseList=[]
        try:
          txtfh=open(textfile,'r')
          try:
            for line in txtfh.readlines():
              element=eval(line)
@@ -329,11 +329,11 @@
              level=element['level']
              message=element['message']
              timestamp=element['timestamp']
              startValueDict={}
              stopValueDict={}
              statusValueDict={}
              if level == 'Start':
                tcpattern=re.compile("(Testcase): (.*)")
                tcmatch = tcpattern.search(message)
@@ -344,20 +344,20 @@
                    for key in testDict[tcname].keys():
                      value=testDict[tcname][key]
                      startValueDict[key]=value
                  startValueDict['start']=timestamp
                  testDict[tcname]=startValueDict
                  testCaseList.append(tcname.strip())
                else:
                  errorfh.write('Warning: No match Start element %s.\n' % element)
              elif level == 'Stop':
                tcpattern=re.compile("(Testcase): (.*), ElapsedTime: (.*)")
                tcmatch = tcpattern.search(message)
                if tcmatch:
                  tctype=tcmatch.group(1)
                  tcname=tcmatch.group(2)
@@ -366,19 +366,19 @@
                    for key in testDict[tcname].keys():
                      value=testDict[tcname][key]
                      stopValueDict[key]=value
                  stopValueDict['stop']=timestamp
                  stopValueDict['duration']=tctime
                  testDict[tcname]=stopValueDict
                else:
                  errorfh.write('Warning: No match Stop element %s.\n' % element)
              elif level == 'Status':
                tcpattern=re.compile("(Testcase): (.*), Pass: (.*), Fail: (.*), ElapsedTime: (.*), NumStarts: (.*)")
                tcmatch = tcpattern.search(message)
                if tcmatch:
                  tctype=tcmatch.group(1)
                  tcname=tcmatch.group(2)
@@ -386,29 +386,29 @@
                  tcfail=tcmatch.group(4)
                  tctime=tcmatch.group(5)
                  tcnums=tcmatch.group(6)
                  if testDict.has_key(tcname):
                    for key in testDict[tcname].keys():
                      value=testDict[tcname][key]
                      statusValueDict[key]=value
                  statusValueDict['pass']=tcpass
                  statusValueDict['fail']=tcfail
                  testDict[tcname]=statusValueDict
                else:
                  errorfh.write('Warning: No match Status element %s.\n' % element)
              elif level == 'Info':
                errorfh.write('Warning: Info element %s.\n' % element)
              else:
                errorfh.write('Error: Unknown element %s.\n' % element)
          finally:
            txtfh.close()
        except IOError:
          errorfh.write('Error: Unable to open %s. Reason IOError.' % textfile )
      </script>
@@ -417,30 +417,30 @@
      <script>
        localstaf =test_env.staf(STAF_LOCAL_HOSTNAME)
        remotestaf=test_env.staf(STAF_REMOTE_HOSTNAME)
        stax = test_env.stax(STAF_LOCAL_HOSTNAME)
        event = test_env.event(STAF_LOCAL_HOSTNAME)
        eventman = test_env.eventmanager(STAF_LOCAL_HOSTNAME)
        email = test_env.email(STAF_LOCAL_HOSTNAME)
        http = test_env.http(STAF_LOCAL_HOSTNAME)
        dsml = test_env.dsml(STAF_LOCAL_HOSTNAME)
        xmlfh.write('&lt;qa&gt;\n')
        xmlfh.write('  &lt;functional-tests&gt;\n')
        xmlfh.write('    &lt;identification&gt;\n')
        xmlfh.write('      &lt;sut product="opends"&gt;\n')
        xmlfh.write('        &lt;name&gt;\n')
        xmlfh.write('          %s\n' % ServerName)
        xmlfh.write('        &lt;/name&gt;\n')
        xmlfh.write('        &lt;/name&gt;\n')
        xmlfh.write('        &lt;version&gt;\n')
        xmlfh.write('          %s\n' % ServerVersion)
        xmlfh.write('        &lt;/version&gt;\n')
        xmlfh.write('        &lt;/version&gt;\n')
        xmlfh.write('        &lt;buildid&gt;\n')
        xmlfh.write('          %s\n' % ServerBuildId)
        xmlfh.write('        &lt;/buildid&gt;\n')
        xmlfh.write('        &lt;revision&gt;\n')
        xmlfh.write('          %s\n' % ServerSvnRevision)
        xmlfh.write('        &lt;/revision&gt;\n')
        xmlfh.write('        &lt;/revision&gt;\n')
        xmlfh.write('        &lt;hostname&gt;\n')
        xmlfh.write('          %s\n' % STAF_REMOTE_HOSTNAME)
        xmlfh.write('        &lt;/hostname&gt;\n')
@@ -470,7 +470,7 @@
        xmlfh.write('        &lt;/jvm-bin&gt;\n')
        xmlfh.write('        &lt;os-label&gt;\n')
        xmlfh.write('          %s\n' % ServerOsString)
        xmlfh.write('        &lt;/os-label&gt;\n')
        xmlfh.write('        &lt;/os-label&gt;\n')
        xmlfh.write('        &lt;server-package&gt;\n')
        xmlfh.write('          %s\n' % ServerPackage)
        xmlfh.write('        &lt;/server-package&gt;\n')
@@ -494,8 +494,8 @@
        xmlfh.write('        &lt;md5-sum&gt;\n')
        xmlfh.write('          TDB\n')
        xmlfh.write('        &lt;/md5-sum&gt;\n')
        xmlfh.write('      &lt;/sut&gt;\n')
        xmlfh.write('      &lt;testware&gt;\n')
        xmlfh.write('      &lt;/sut&gt;\n')
        xmlfh.write('      &lt;testware&gt;\n')
        xmlfh.write('        &lt;staf&gt;\n')
        xmlfh.write('          &lt;local&gt;\n')
        xmlfh.write('            &lt;hostname&gt;\n')
@@ -529,7 +529,7 @@
        xmlfh.write('          &lt;/library&gt;\n')
        xmlfh.write('          &lt;executable&gt;\n')
        xmlfh.write('            %s\n' % stax.executable)
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;options&gt;\n')
        xmlfh.write('            %s\n' % stax.options)
        xmlfh.write('          &lt;/options&gt;\n')
@@ -546,7 +546,7 @@
        xmlfh.write('          &lt;/library&gt;\n')
        xmlfh.write('          &lt;executable&gt;\n')
        xmlfh.write('            %s\n' % event.executable)
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;options&gt;\n')
        xmlfh.write('            %s\n' % event.options)
        xmlfh.write('          &lt;/options&gt;\n')
@@ -563,7 +563,7 @@
        xmlfh.write('          &lt;/library&gt;\n')
        xmlfh.write('          &lt;executable&gt;\n')
        xmlfh.write('            %s\n' % eventman.executable)
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;options&gt;\n')
        xmlfh.write('            %s\n' % eventman.options)
        xmlfh.write('          &lt;/options&gt;\n')
@@ -580,7 +580,7 @@
        xmlfh.write('          &lt;/library&gt;\n')
        xmlfh.write('          &lt;executable&gt;\n')
        xmlfh.write('            %s\n' % email.executable)
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;options&gt;\n')
        xmlfh.write('            %s\n' % email.options)
        xmlfh.write('          &lt;/options&gt;\n')
@@ -597,7 +597,7 @@
        xmlfh.write('          &lt;/library&gt;\n')
        xmlfh.write('          &lt;executable&gt;\n')
        xmlfh.write('            %s\n' % http.executable)
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;options&gt;\n')
        xmlfh.write('            %s\n' % http.options)
        xmlfh.write('          &lt;/options&gt;\n')
@@ -614,14 +614,14 @@
        xmlfh.write('          &lt;/library&gt;\n')
        xmlfh.write('          &lt;executable&gt;\n')
        xmlfh.write('            %s\n' % dsml.executable)
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;/executable&gt;\n')
        xmlfh.write('          &lt;options&gt;\n')
        xmlfh.write('            %s\n' % dsml.options)
        xmlfh.write('          &lt;/options&gt;\n')
        xmlfh.write('          &lt;params&gt;\n')
        xmlfh.write('            %s\n' % dsml.params)
        xmlfh.write('          &lt;/params&gt;\n')
        xmlfh.write('        &lt;/service&gt;\n')
        xmlfh.write('        &lt;/service&gt;\n')
        xmlfh.write('      &lt;/testware&gt;\n')
        xmlfh.write('      &lt;tests-dir&gt;\n')
        xmlfh.write('        %s\n' % logsDir)
@@ -635,11 +635,11 @@
        xmlfh.write('    &lt;/identification&gt;\n')
        xmlfh.write('    &lt;results&gt;\n')
      </script>
      <!-- XML Report Results -->
      <script>
        for tcname in testCaseList:
          if testDict.has_key(tcname):
            tcnamesplit=tcname.split(":")
            if tcnamesplit[0]:
@@ -651,74 +651,74 @@
            else:
              tcgroup=tcname
              tcsuite=tcname
            if testDict[tcname].has_key('pass'):
              tcpass=testDict[tcname]['pass']
            else:
              tcpass='0'
            if testDict[tcname].has_key('fail'):
              tcfail=testDict[tcname]['fail']
            else:
              tcfail='0'
            if testDict[tcname].has_key('start'):
              tcstart=testDict[tcname]['start']
            else:
              tcstart='unknown'
            if testDict[tcname].has_key('stop'):
              tcstop=testDict[tcname]['stop']
            else:
              tcstop='unknown'
            if testDict[tcname].has_key('duration'):
              tcduration=testDict[tcname]['duration']
            else:
              duration='unknown'
          else:
            errorfh.write('No key for testcase %s.\n' % tcname)
          if int(tcfail) == 0 and int(tcpass) > 0:
            tcresult='pass'
          elif int(tcfail) == 0 and int(tcpass) == 0:
          elif int(tcfail) == 0 and int(tcpass) == 0:
            tcresult='unknown'
          else:
            tcresult='fail'
          tcdurationsecs=test_time().timeToSeconds(tcduration)
          xmlfh.write('      &lt;testgroup name="%s"&gt;\n' % tcgroup)
          xmlfh.write('        &lt;testsuite name="%s"&gt;\n' % tcsuite)
          xmlfh.write('          &lt;testcase group="%s" suite="%s" name="%s" result="%s" start="%s" stop="%s" duration="%s"/&gt;\n' % (tcgroup,tcsuite,tcname,tcresult,tcstart,tcstop,tcdurationsecs))
          xmlfh.write('        &lt;/testsuite&gt;\n')
          xmlfh.write('      &lt;/testgroup&gt;\n')
      </script>
      <!-- XML Report Post -->
      <script>
        xmlfh.write('    &lt;/results&gt;\n')
        xmlfh.write('  &lt;/functional-tests&gt;\n')
        xmlfh.write('&lt;/qa&gt;\n')
      </script>
      <script>
        xmlfh.close()
        errorfh.close()
        xmlfh.close()
        errorfh.close()
      </script>
      <message>
        'XML Report Written to %s.' % xmlfile
      </message>
      <!-- Generate the standard test report showing all testcases -->
      <!-- Generate the standard test report showing all testcases -->
      <script>
        _message='Generated standard test report.'
        xslfile= '%s/xsl/gen-alltests-report.xsl' % TESTS_SHARED_DIR
        htmlfile= '%s/results.html' % logsReportDir
        standardReport=report_generation()
        standardReport=report_generation()
        stringParamsDict={}
@@ -731,42 +731,42 @@
      </script>
      <message>_message</message>
      <!-- Generate the test report by test groups-->
      <!-- Generate the test report by test groups-->
      <script>
        _message='Generated groups test report.'
        xslfile= '%s/xsl/gen-groups-report.xsl' % TESTS_SHARED_DIR
        htmlfile= '%s/groups.html' % logsReportDir
        testslog= '%s/tests-log.xml' % logsTestsDir
        groupsReport=report_generation()
        groupsReport=report_generation()
        stringParamsDict={ 'tests-log' : testslog }
        try:
          groupsReport.transformReport(xslfile,xmlfile,htmlfile,stringParamsDict)
        except IOError,details:
          _message='Unable to generate groups test report %s.' % details
          _message='Unable to generate groups test report %s.' % details
        except:
          _message='Unable to generate groups test report !!!'
      </script>
      <message>_message</message>
      <!-- Generate the test report by test suites -->
      <!-- Generate the test report by test suites -->
      <script>
        _message='Generated suites test reports.'
        testGroupDirsList=os.listdir(logsTestsDir)
        for testGroupName in testGroupDirsList:
          groupDir='%s/%s' % (logsTestsDir,testGroupName)
          if os.path.isdir(groupDir):
            xmlfile='%s/results.xml' % logsReportDir
            htmlfile='%s/%s.html' % (groupDir,testGroupName)
            xslfile= '%s/xsl/gen-suites-report.xsl' % TESTS_SHARED_DIR
            suitesReport=report_generation()
            stringParamsDict={ 'group' : testGroupName, 'tests-log' : testslog }
            try:
              suitesReport.transformReport(xslfile,xmlfile,htmlfile,stringParamsDict)
            except IOError,details:
@@ -782,7 +782,7 @@
        xslfile= '%s/xsl/id.xsl' % TESTS_SHARED_DIR
        htmlfile= '%s/id.html' % logsReportDir
        idReport=report_generation()
        idReport=report_generation()
        stringParamsDict={}
@@ -793,16 +793,16 @@
        except:
          _message='Unable to generate product identification test report !!!'
      </script>
      <message>_message</message>
      <message>_message</message>
      <!-- Generate the summary text file -->
      <script>
      <script>
        _message='Generated the summary text report'
        mysummaryxsl='%s/xsl/gen-text-summary.xsl' % TESTS_SHARED_DIR
        mysummarytext='%s/summary.txt' % logsReportDir
        mysummaryxml=xmlfile
        summaryReport=report_generation()
        summaryReport=report_generation()
        stringParamsDict={}
@@ -812,13 +812,13 @@
          _message='Unable to generate summary text file %s.' % details
      </script>
      <message>_message</message>
      <if expr="SEND_MAIL_AFTER_TEST_RUN == 'TRUE'">
        <sequence>
          <message>
            'Sending Email Test Report to %s.' % SEND_MAIL_TO
          </message>
          <script>
            try:
              if SEND_MAIL_REPORT:
@@ -835,7 +835,7 @@
                MailToList=[]
            except NameError,details:
                MailToList=[]
            try:
              if SEND_MAIL_SUBJECT:
                MailSubject= SEND_MAIL_SUBJECT
@@ -843,16 +843,16 @@
                MailSubject= 'OpenDS Test Report for %s' % STAF_REMOTE_HOSTNAME
            except NameError,details:
                MailSubject= 'OpenDS Test Report for %s' % STAF_REMOTE_HOSTNAME
            MailSendTo= ' '
          </script>
          <iterate var="Recipient" in="MailToList">
            <script>
             MailSendTo='to %s %s' % (Recipient,MailSendTo)
            </script>
          </iterate>
          <stafcmd name="'STAF Command: Send test report %s' % MailSendTo">
            <location>'%s' % STAF_LOCAL_HOSTNAME </location>
            <service>'email'</service>
@@ -860,7 +860,7 @@
              'send %s contenttype "text/html" file %s subject "%s" noheader' % (MailSendTo,MailSendReport,MailSubject)
            </request>
          </stafcmd>
          <if expr="RC != 0">
            <message log="1" level="'Error'">
              'Send test report failed. RC: %s STAFResult: %s' % (RC,STAFResult)
@@ -874,6 +874,6 @@
        </sequence>
      </if>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/shared/tests/runTests.xml
File was renamed from opends/tests/staf-tests/shared/tests/runFuncTests.xml
@@ -72,7 +72,7 @@
      <iterate var="group" in="groupsToRun" >
        <sequence>
          <!-- The job that executes the tests -->
          <script>
            STAXParentID=STAXJobID
@@ -87,7 +87,7 @@
            </job-function>
            <job-function-args eval='1'>
              STAXParentID
            </job-function-args>
            </job-function-args>
            <job-scriptfiles machine="STAF_LOCAL_HOSTNAME">
              STAXJobScriptFiles
            </job-scriptfiles>
@@ -97,7 +97,7 @@
              </log>
            </job-action>
          </job>
          <if expr="RC == 0">
            <sequence>
              <message>
@@ -115,9 +115,9 @@
              </sequence>
            </else>
          </if>
        </sequence>
      </iterate>
      <!-- in this section we'll compute the coverage for all the tests
@@ -315,7 +315,7 @@
        testlog.write('&lt;/qa&gt;\n')
        testlog.close()
      </script>
      <return>listOfChildren</return>
    </sequence>
opends/tests/staf-tests/stress-tests/config/config.py
File was deleted