From e4c24d2ea935b43d13791b11509a0e9329be4e79 Mon Sep 17 00:00:00 2001
From: al_xipe <al_xipe@localhost>
Date: Fri, 13 Oct 2006 05:37:10 +0000
Subject: [PATCH] finalize the move to ant for the integration tests
---
opendj-sdk/opends/tests/integration-tests-testng/build.xml | 226 ++++++++++++++++++++++--
opendj-sdk/opends/tests/integration-tests-testng/build.sh | 263 +---------------------------
2 files changed, 216 insertions(+), 273 deletions(-)
diff --git a/opendj-sdk/opends/tests/integration-tests-testng/build.sh b/opendj-sdk/opends/tests/integration-tests-testng/build.sh
index 0444bda..a160cab 100755
--- a/opendj-sdk/opends/tests/integration-tests-testng/build.sh
+++ b/opendj-sdk/opends/tests/integration-tests-testng/build.sh
@@ -25,261 +25,26 @@
#
# Portions Copyright 2006 Sun Microsystems, Inc.
-OLD_DIR=`pwd`
-
-[ -z "${DEBUG}" ] || set -x
-
-die() {
- rc=$1
- shift
- echo $@
- exit $rc
-}
# Change to the location of this build script.
cd `dirname $0`
-# save the path to the functional tests in a variable
-ft_home=`pwd`
-# save the path to directory server in a variable
-cd ../..
-ds_home=`pwd`
-
-# change to the functional test directory
-cd ${ft_home}
-
-# check for java
-if [ -z "${JAVA_HOME}" ]; then
- JAVA_HOME=`java -cp ${ds_home}/resource FindJavaHome`
- if [ -z "${JAVA_HOME}" ]; then
- die 10 "Please set JAVA_HOME to the root of a Java 5.0 installation."
- else
- export JAVA_HOME
- fi
-else
+# See if JAVA_HOME is set. If not, then see if there is a java executable in
+# the path and try to figure it out.
+if test -z "${JAVA_HOME}"
+then
+ JAVA_HOME=`java -cp ../../resource FindJavaHome`
+ if test -z "${JAVA_HOME}"
+ then
+ echo "Please set JAVA_HOME to the root of a Java 5.0 installation."
+ exit 1
+ else
export JAVA_HOME
+ fi
fi
-# Make sure that the TestNG JAR file is in the CLASSPATH so that ant will be
-# able to find it.
-testng_jar=${ds_home}/tests/integration-tests-testng/ext/testng/lib/testng-5.0.2-jdk15.jar
-if [ -f "${testng_jar}" ]; then
- CLASSPATH="${ds_home}/tests/integration-tests-testng/ext/testng/lib/testng-5.0.2-jdk15.jar"
- export CLASSPATH
-else
- die 11 "Could not find junit library in ${ds_home}/ext/testng/lib"
-fi
-
-
-ANT_HOME=${ds_home}/ext/ant
-if [ -d "${ANT_HOME}" ]; then
- export ANT_HOME
-else
- die 12 "Could not find ant in ${ANT_HOME}"
-fi
-
-# check if the product is built
-# Let's wait on this for now.
-if [ ! -d "${ds_home}/build" ]; then
- # Do you want to build directory server ?
- # maybe the question should be asked interactively, I don't know
- echo "Could not find the openDS bits, starting a build of openDS now"
- cd ${ds_home}
- ./build.sh package
- cd ${ft_home}
-fi
-
-# generate the testcase from the template
-hostname=`uname -n`
-template_home="${ft_home}/src/server/org/opends/server/"
-integration_home="${template_home}/integration"
-testcase_file="DirectoryServerAcceptanceTestCase.java"
-template_file="${testcase_file}.template"
-#cat ${template_home}/${template_file}|sed "s|<hostname>|${hostname}|"|sed "s|<integration_home>|$integration_home|" > ${template_home}/${testcase_file}
-
-echo "Starting the build for the integration test suites"
+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 --noconfig ${*}
-
-if [ $? -eq 0 ]; then
- echo "Successfully built the integration test suite"
- echo " "
- echo "There are two options for running the integration test suites."
- echo " "
- echo "Option 1 - You must have OpenDS freshly installed and started."
- echo "You must also set the variables in ${ft_home}/ext/testng/testng.xml"
- echo "For option 1, execute"
- echo "${ft_home}/test.sh [OpenDS home directory]"
- echo " "
- echo "Option 2 (recommended) - Let the test.sh script install and start OpenDS."
- echo "The file, ${ft_home}/ext/testng/testng.xml,"
- echo "will also be automatically generated."
- echo "For option 2, execute"
- echo "${ft_home}/test.sh installOpenDS [OpenDS installation directory] [port number]"
- echo " "
- cat > ${ft_home}/test.sh <<EOF
-#!/bin/sh
-if [ \$# != 1 -a \$# != 3 ]
-then
-echo "If you already have an OpenDS installed and started,"
-echo "usage: ${ft_home}/test.sh [OpenDS home]"
-echo " "
-echo "If you wish the test.sh script to install OpenDS, start OpenDS, generate a TestNG xml file, and start the integration tests,"
-echo "usage: ${ft_home}/test.sh installOpenDS [OpenDS install directory] [port number]"
-exit
-fi
-[ -z "\${DEBUG}" ] || set -x
-if [ \$# = 1 ]
-then
-OPENDS_HOME=\${1}
-cd \${OPENDS_HOME}
-echo "OpenDS Integration Tests have started........."
-CLASSPATH="${ds_home}/tests/integration-tests-testng/ext/testng/lib/testng-5.0.2-jdk15.jar:${ds_home}/build/integration-tests:\${OPENDS_HOME}/lib/OpenDS.jar:\${OPENDS_HOME}/lib/je.jar"
-java -ea -cp \${CLASSPATH} org.testng.TestNG -d /tmp/testng -listener org.opends.server.OpenDSTestListener ${ft_home}/ext/testng/testng.xml
-else
-OPENDS_INSTALL_DIR=\${2}
-OPENDS_PORT=\${3}
-OPENDS_HOME=\${OPENDS_INSTALL_DIR}/OpenDS-0.1
-HOSTNAME=\`hostname\`
-INTEG_TEST_DIR=`pwd`
-if [ -d \${OPENDS_INSTALL_DIR} ]
-then
-echo "Directory, \${OPENDS_INSTALL_DIR} currently exists"
-else
-echo "Directory, \${OPENDS_INSTALL_DIR} does not exist, creating it......"
-mkdir -p \${OPENDS_INSTALL_DIR}
-fi
-
-if [ -d \${INTEG_TEST_DIR}/opends/logs ]
-then
-echo "Directory, \${INTEG_TEST_DIR}/opends/logs currently exists"
-else
-echo "Directory, \${INTEG_TEST_DIR}/opends/logs does not exist, creating it......"
-mkdir -p \${INTEG_TEST_DIR}/opends/logs
-fi
-
-if [ -d \${INTEG_TEST_DIR}/opends/backup ]
-then
-echo "Directory, \${INTEG_TEST_DIR}/opends/backup currently exists"
-else
-echo "Directory, \${INTEG_TEST_DIR}/opends/backup does not exist, creating it......"
-mkdir -p \${INTEG_TEST_DIR}/opends/backup
-fi
-
-if [ -d \${INTEG_TEST_DIR}/opends/reports ]
-then
-echo "Directory, \${INTEG_TEST_DIR}/opends/reports currently exists"
-else
-echo "Directory, \${INTEG_TEST_DIR}/opends/reports does not exist, creating it......"
-mkdir -p \${INTEG_TEST_DIR}/opends/reports
-fi
-
-cp \${INTEG_TEST_DIR}/ext/testng/testng.xml \${INTEG_TEST_DIR}/ext/testng/testng.xml.save
-
-cat > \${INTEG_TEST_DIR}/ext/testng/testng.xml <<EOF2
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="OpenDS" verbose="1" >
- <parameter name="hostname" value="\${HOSTNAME}"/>
- <parameter name="port" value="\${OPENDS_PORT}"/>
- <parameter name="sport" value="636"/>
- <parameter name="bindDN" value="cn=Directory Manager"/>
- <parameter name="bindPW" value="password"/>
- <parameter name="integration_test_home" value="\${INTEG_TEST_DIR}/src/server/org/opends/server/integration"/>
- <parameter name="logDir" value="\${INTEG_TEST_DIR}/opends/logs"/>
- <parameter name="dsee_home" value="\${OPENDS_HOME}"/>
- <parameter name="backupDir" value="\${INTEG_TEST_DIR}/opends/backup"/>
- <parameter name="exportDir" value="\${INTEG_TEST_DIR}/opends"/>
-
- <packages>
- <package name="org.opends.server.integration.quickstart"/>
- <package name="org.opends.server.integration.bob"/>
- <package name="org.opends.server.integration.frontend"/>
- <package name="org.opends.server.integration.schema"/>
- <package name="org.opends.server.integration.core"/>
- <package name="org.opends.server.integration.security"/>
- <package name="org.opends.server.integration.backend"/>
- </packages>
-
- <test name="precommit">
- <groups>
- <run>
- <include name="precommit"/>
- <exclude name="broken"/>
- </run>
- </groups>
- </test>
-
- <test name="integration-tests">
- <groups>
- <define name="all">
- <include name="quickstart"/>
- <include name="bob"/>
- <include name="frontend"/>
- <include name="schema"/>
- <include name="core"/>
- <include name="security"/>
- <include name="backend"/>
- </define>
-
- <define name="quickstart">
- <include name="quickstart"/>
- </define>
-
- <define name="bob">
- <include name="bob"/>
- </define>
-
- <define name="frontend">
- <include name="frontend"/>
- </define>
-
- <define name="schema">
- <include name="schema"/>
- </define>
-
- <define name="core">
- <include name="core"/>
- </define>
-
- <define name="security">
- <include name="security"/>
- </define>
-
- <define name="backend">
- <include name="backend"/>
- </define>
-
- <run>
- <include name="all"/>
- </run>
- </groups>
- </test>
-
-</suite>
-EOF2
-
-cp ${ds_home}/build/package/OpenDS-0.1.zip \${OPENDS_INSTALL_DIR}
-cd \${OPENDS_INSTALL_DIR}
-unzip OpenDS-0.1.zip
-echo "OpenDS has been installed in \${OPENDS_INSTALL_DIR}"
-
-echo "Configuring OpenDS to use port \${OPENDS_PORT}"
-\${OPENDS_HOME}/bin/configure-ds.sh -p \${OPENDS_PORT}
-
-echo "Starting OpenDS and the OpenDS Integration Tests...."
-\${OPENDS_HOME}/bin/start-ds.sh -nodetach&
-sleep 30
-
-echo "OpenDS Integration Tests have started........."
-CLASSPATH="${ds_home}/tests/integration-tests-testng/ext/testng/lib/testng-5.0.2-jdk15.jar:${ds_home}/build/integration-tests:\${OPENDS_HOME}/lib/OpenDS.jar:\${OPENDS_HOME}/lib/je.jar"
-java -ea -cp \${CLASSPATH} org.testng.TestNG -d /tmp/testng -listener org.opends.server.OpenDSTestListener ${ft_home}/ext/testng/testng.xml
-
-echo "The output from OpenDS is in \${INTEG_TEST_DIR}/opends/logs"
-fi
-cd ${ds_home}/tests/integration-tests-testng
-EOF
- chmod 755 ${ft_home}/test.sh
-else
- die 14 "Error when running ant"
-fi
+$ANT_HOME/bin/ant --noconfig ${*}
diff --git a/opendj-sdk/opends/tests/integration-tests-testng/build.xml b/opendj-sdk/opends/tests/integration-tests-testng/build.xml
index bb6b333..e6b57a3 100644
--- a/opendj-sdk/opends/tests/integration-tests-testng/build.xml
+++ b/opendj-sdk/opends/tests/integration-tests-testng/build.xml
@@ -25,62 +25,240 @@
! Portions Copyright 2006 Sun Microsystems, Inc.
! -->
-<project name="Directory Server" basedir="." default="all">
+<project name="opends-tests-integration" basedir="." default="all">
<description>
This is the build script for the functional tests for the
OpenDS Directory Server. See the
BUILDING file in this directory for build instructions.
</description>
+
+ <!-- General build-wide properties -->
+ <property name="opends.dir" location="../.." />
+ <property name="tests.src.dir" location="src/server" />
+ <property name="tests.build.dir"
+ location="${opends.dir}/build/integration-tests" />
+ <property name="lib.dir" location="${opends.dir}/lib" />
+ <property name="ext.dir" location="${opends.dir}/ext" />
+ <property name="testng.dir" location="${ext.dir}/testng" />
+ <property name="testng.lib.dir" location="${testng.dir}/lib" />
- <!-- General server-wide properties -->
- <property name="opends.dir" location="../.." />
- <property name="src.dir" location="src/server" />
- <property name="built.dir"
- location="${opends.dir}/build/integration-tests" />
- <property name="ds.classes" location="${opends.dir}/build/classes" />
- <property name="lib.dir" location="${opends.dir}/lib" />
- <property name="ext.dir" location="${opends.dir}/ext" />
+ <property name="opends.build.dir" location="${opends.dir}/build" />
+ <property name="opends.package.dir" location="${opends.build.dir}/package" />
+ <property name="opends.classes" location="${opends.build.dir}/classes" />
+ <!-- default configuration values for opends -->
+ <property name="install.dir.default" value="${basedir}/install" />
+ <property name="product.version" value="0.1" />
+ <property name="product.name" value="OpenDS" />
+ <!-- generate the timestamp we'll use to tag/store the test results -->
+ <tstamp>
+ <format property="run.time" pattern="yyyy.mm.dd-HH.mm.ss" />
+ </tstamp>
+
+ <!-- assertion to determine the operating system -->
+ <condition property="isWindows">
+ <os family="windows"/>
+ </condition>
+ <condition property="isUnix">
+ <not>
+ <os family="windows"/>
+ </not>
+ </condition>
+
+ <!-- edit or create this file if you need custom port or install path
+ it can have any of the following properties
+ port.ldap
+ install.dir
+ -->
+ <property file="integration-tests.properties" />
+
<!-- The build target that should be used to build everything. -->
<target name="all"
- depends="clean,functests"
+ depends="uninstall,clean,tests,install,configure,start,run-tests,stop"
description="Build using all defined targets." />
<!-- Remove all dynamically-generated build files. -->
<target name="clean"
description="Clean up any files generated during the build process">
-
- <delete dir="${built.dir}" />
+ <delete dir="${tests.build.dir}" />
</target>
+
+ <!-- Compile the functional tests source files. -->
+ <target name="tests"
+ description="Compile the functional tests source files.">
+ <mkdir dir="${tests.build.dir}" />
- <!-- Compile the Directory Server source files. -->
- <target name="functests"
- description="Compile the functional test source files.">
-
- <mkdir dir="${built.dir}" />
-
- <javac srcdir="${src.dir}" destdir="${built.dir}" optimize="true"
+ <javac srcdir="${tests.src.dir}" destdir="${tests.build.dir}" optimize="true"
debug="on" debuglevel="lines,source" source="1.5" target="1.5"
deprecation="true" fork="true" >
<compilerarg value="-Xlint:all" />
-
<classpath>
+ <!-- libraries required to build -->
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
-
- <fileset dir="${ext.dir}">
+ <!-- include the testng library to build the test cases -->
+ <fileset dir="${testng.lib.dir}">
<include name="*.jar" />
</fileset>
-
- <pathelement location="${ds.classes}" />
+ <pathelement location="${opends.classes}" />
</classpath>
</javac>
</target>
+
+ <target name="run-tests"
+ description="run the integration test suite"
+ depends="set-default-install-props">
+ <taskdef resource="testngtasks">
+ <classpath>
+ <fileset dir="${testng.lib.dir}">
+ <include name="*.jar" />
+ </fileset>
+ </classpath>
+ </taskdef>
+
+ <property name="run.dir" value="${basedir}/run/${run.time}" />
+ <mkdir dir="${run.dir}" />
+ <mkdir dir="${run.dir}/logs" />
+ <mkdir dir="${run.dir}/backup" />
+ <mkdir dir="${run.dir}/report" />
+ <echo message="generating tests xml file ..."/>
+ <copy file="testng.xml.stubs"
+ tofile="testng.xml"
+ overwrite="true" >
+ <filterchain>
+ <expandproperties/>
+ </filterchain>
+ </copy>
+ <fileset id="testng.xml" dir="${basedir}" >
+ <include name="testng.xml" />
+ </fileset>
+ <testng outputdir="${run.dir}/report"
+ haltonfailure="true"
+ enableAssert="false"
+ listener="org.opends.server.OpenDSTestListener"
+ dumpCommand="true">
+ <classpath>
+ <!-- where to get the testng library -->
+ <fileset dir="${testng.lib.dir}">
+ <include name="*.jar" />
+ </fileset>
+ <!-- where to get the test classes -->
+ <pathelement location="${tests.build.dir}" />
+ <!-- where to get the server classes -->
+ <pathelement location="${opends.classes}"/>
+ </classpath>
+
+ <!-- where to get the test suite definition -->
+ <xmlfileset dir="${basedir}" includes="testng.xml"/>
+ </testng>
+ </target>
+
+ <target name="set-default-install-props"
+ description="defines the default values if no custom values were provided">
+ <property name="install.dir" value="${install.dir.default}" />
+ <property name="port.ldap" value="1389" />
+ <property name="port.ssl" value="1636" />
+ <property name="host.name" value="localhost" />
+ <property name="bindDN" value="cn=Directory Manager" />
+ <property name="password" value="password" />
+ <property name="full.install.dir"
+ value="${install.dir}/${product.name}-${product.version}" />
+ </target>
+
+ <target name="install"
+ description="deploy the server bits"
+ depends="set-default-install-props" >
+ <property name="config.file"
+ location="${full.install.dir}/config/config.ldif"/>
+ <!-- Set the defaults
+ Does not override the custom values provided in the
+ integration-tests.properties file if any -->
+ <mkdir dir="${install.dir}"/>
+ <unzip dest="${install.dir}">
+ <fileset dir="${opends.package.dir}">
+ <include name="*.zip"/>
+ </fileset>
+ </unzip>
+ </target>
+
+ <target name="configure"
+ description="configures opends to listen on the right port number"
+ depends="set-default-install-props"
+ >
+ <java classname="org.opends.server.tools.ConfigureDS">
+ <!-- building the classpath to run the configurator -->
+ <classpath>
+ <pathelement path="${full.install.dir}/classes"/>
+ <fileset dir="${full.install.dir}">
+ <include name="lib/*.jar"/>
+ </fileset>
+ </classpath>
+
+ <!-- provide the arguments here -->
+ <arg value="--configClass" />
+ <arg value="org.opends.server.config.ConfigFileHandler" />
+ <arg value="--configFile" />
+ <arg value="${full.install.dir}/config/config.ldif" />
+ <arg line="-p ${port.ldap}" />
+ </java>
+ </target>
+
+ <!-- Windows specific start / stop / configure commands -->
+ <target name="start-windows" if="isWindows">
+ <echo message="Starting in the background ..."/>
+ <exec
+ executable="${full.install.dir}\bin\start-ds.bat"
+ spawn="true" />
+ </target>
+ <target name="stop-windows" if="isWindows" >
+ <echo message="Stopping ..." />
+ <exec
+ executable="${full.install.dir}\bin\stop-ds.bat">
+ <arg line="-h ${host.name}"/>
+ <arg line="-p ${port.ldap}"/>
+ <arg line="-w ${password}"/>
+ <arg value="-D"/>
+ <arg value="${bindDN}"/>
+ </exec>
+ </target>
+ <!-- Unix specific start / stop / configure commands -->
+ <target name="start-unix" if="isUnix" >
+ <echo message="Starting in the background ..."/>
+ <exec
+ executable="${full.install.dir}/bin/start-ds.sh"
+ spawn="true" />
+ </target>
+ <target name="stop-unix" if="isUnix" >
+ <echo message="Stopping ..." />
+ <exec
+ executable="${full.install.dir}/bin/stop-ds.sh" >
+ <arg line="-h ${host.name}"/>
+ <arg line="-p ${port.ldap}"/>
+ <arg line="-w ${password}"/>
+ <arg value="-D"/>
+ <arg value="${bindDN}"/>
+ </exec>
+ </target>
+
+ <!-- platform independent start / stop targets -->
+ <target name="start"
+ description="stop the server"
+ depends="set-default-install-props,start-windows,start-unix" />
+ <target name="stop"
+ description="stop the server"
+ depends="set-default-install-props,stop-windows,stop-unix" />
+
+ <target name="uninstall"
+ description="Uninstalls the server"
+ depends="set-default-install-props" >
+ <delete dir="${install.dir}" />
+ </target>
+
</project>
--
Gitblit v1.10.0