| | |
| | | # |
| | | # 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 ${*} |