blob: 30d255b87cfeb377b18accf4d21dd0fd0ea6e023 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# --- Function definitions ---
func_check_required_env ()
#-------------------------
# Check that EITHER:
# QPID_DIR is set (for running against svn QPID)
# OR
# QPID_PREFIX is set (for running against installed QPID
# Will exit with error code 1 if neither of these is defined.
# Params: None
# Returns: 0 if env vars ok, 1 otherwise
{
if test -z "${QPID_DIR}" -a -z "${QPID_PREFIX}"; then
# Try to find qpidd in the normal installed location
if test -x /usr/sbin/qpidd; then
QPID_PREFIX=/usr
else
echo "ERROR: Could not find installed Qpid"
echo "Either of the following must be set in the environment for this script to run:"
echo " QPID_DIR for running against a Qpid svn build"
echo " QPID_PREFIX for running against an installed Qpid"
return 1
fi
fi
return 0
}
func_check_qpid_python ()
#------------------------
# Check that Qpid python environment is ok
# Params: None
# Returns: 0 if Python environment is ok; 1 otherwise
{
if ! python -c "import qpid" ; then
cat <<EOF
=========== WARNING: PYTHON TESTS DISABLED ==============
Unable to load python qpid module - skipping python tests.
PYTHONPATH=${PYTHONPATH}
===========================================================
EOF
return 1
fi
return 0
}
func_set_env ()
#--------------
# Set up the environment based on value of ${QPID_DIR}: if ${QPID_DIR} exists, assume a svn checkout,
# otherwise set up for an installed or prefix test.
# Params: None
# Returns: Nothing
{
if test "${QPID_DIR}" -a -d "${QPID_DIR}" ; then
# QPID_DIR is defined for source tree builds by the --with-qpid-checkout configure option.
# QPID_BLD is defined as the build directory, either $QPID_DIR/cpp or separately specified with
# the --with-qpid-build option for VPATH builds.
# Check QPID_BLD is also set
if test -z ${QPID_BLD}; then
QPID_BLD="${QPID_DIR}/cpp"
fi
# Paths and dirs
#if test -z ${abs_srcdir}; then
# abs_srcdir=`pwd`
#fi
source $QPID_BLD/src/tests/test_env.sh
# Override these two settings from test_env.sh:
export RECEIVER_EXEC=$QPID_TEST_EXEC_DIR/qpid-receive
export SENDER_EXEC=$QPID_TEST_EXEC_DIR/qpid-send
echo "abs_srcdir=$abs_srcdir"
export STORE_LIB="`pwd`/../lib/.libs/msgstore.so"
export STORE_ENABLE=1
export CLUSTER_LIB="${QPID_BLD}/src/.libs/cluster.so"
PYTHON_DIR="${QPID_DIR}/python"
export PYTHONPATH="${PYTHONPATH}":"${PYTHON_DIR}":"${QPID_DIR}/extras/qmf/src/py":"${QPID_DIR}/tools/src/py":"${QPID_DIR}/cpp/src/tests":"${abs_srcdir}"
# Libraries
# Executables
export QPIDD_EXEC="${QPID_BLD}/src/qpidd"
# Test data
else
# Set up the environment based on value of ${QPID_PREFIX} for testing against an installed qpid
# Alternatively, make sure ${QPID_BIN_DIR}, ${QPID_SBIN_DIR}, ${QPID_LIB_DIR} and ${QPID_LIBEXEC_DIR} are set for
# the installed location.
if test "${QPID_PREFIX}" -a -d "${QPID_PREFIX}" ; then
QPID_BIN_DIR=${QPID_PREFIX}/bin
QPID_SBIN_DIR=${QPID_PREFIX}/sbin
QPID_LIB_DIR=${QPID_PREFIX}/lib
QPID_LIBEXEC_DIR=${QPID_PREFIX}/libexec
fi
# These four env vars must be set prior to calling this script
func_checkpaths QPID_BIN_DIR QPID_SBIN_DIR QPID_LIB_DIR QPID_LIBEXEC_DIR
# Paths and dirs
export PYTHON_DIR="${QPID_BIN_DIR}"
export PYTHONPATH="${PYTHONPATH}":"${QPID_LIB_DIR}/python":"${QPID_LIBEXEC_DIR}/qpid/tests":"${QPID_LIB_DIR}/python2.4"
# Libraries
# Executables
export QPIDD_EXEC="${QPID_SBIN_DIR}/qpidd"
# Test Data
fi
}
func_mk_data_dir ()
#------------------
# Create a data dir at ${TMP_DATA_DIR} if not present, clear it otherwise.
# Set TMP_DATA_DIR if it is not set.
# Params: None
# Returns: Nothing
{
if test -z "${TMP_DATA_DIR}"; then
TMP_DATA_DIR=/tmp/python_tests
echo "TMP_DATA_DIR not set; using ${TMP_DATA_DIR}"
fi
# Delete old test dirs if they exist
if test -d "${TMP_DATA_DIR}" ; then
rm -rf "${TMP_DATA_DIR}/*"
fi
mkdir -p "${TMP_DATA_DIR}"
export TMP_DATA_DIR
}
func_checkvar ()
#---------------
# Check that an environment var is set (ie non-zero length)
# Params: $1 - env var to be checked
# Returns: 0 = env var is set (ie non-zero length)
# 1 = env var is not set
{
local loc_VAR=$1
if test -z ${!loc_VAR}; then
echo "WARNING: environment variable ${loc_VAR} not set."
return 1
fi
return 0
}
func_checkpaths ()
#-----------------
# Check a list of paths (each can contain ':'-separated sub-list) is set and valid (ie each path exists as a dir)
# Params: $@ - List of path env vars to be checked
# Returns: Nothing
{
local loc_PATHS=$@
for path in ${loc_PATHS}; do
func_checkvar ${path}
if test $? == 0; then
local temp_IFS=${IFS}
IFS=":"
local pl=${!path}
for p in ${pl[@]}; do
if test ! -d ${p}; then
echo "WARNING: Directory ${p} in var ${path} not found."
fi
done
IFS=${temp_IFS}
fi
done
}
func_checklibs ()
#----------------
# Check that a list of libs is set and valid (ie each lib exists as an executable file)
# Params: $@ - List of lib values to be checked
# Returns: Nothing
{
local loc_LIBS=$@
for lib in ${loc_LIBS[@]}; do
func_checkvar ${lib}
if test $? == 0; then
if test ! -x ${!lib}; then
echo "WARNING: Library ${lib}=${!lib} not found."
fi
fi
done
}
func_checkexecs ()
#-----------------
# Check that a list of executable is set and valid (ie each exec exists as an executable file)
# Params: $@ - List of exec values to be checked
# Returns: Nothing
{
local loc_EXECS=$@
for exec in ${loc_EXECS[@]}; do
func_checkvar ${exec}
if test $? == 0; then
if test ! -x ${!exec}; then
echo "WARNING: Executable ${exec}=${!exec} not found or is not executable."
fi
fi
done
}
#--- Start of script ---
func_check_required_env || exit 1 # Cannot run, exit with error
srcdir=`dirname $0`
if test -z ${abs_srcdir}; then
abs_srcdir=${srcdir}
fi
func_set_env
func_check_qpid_python || exit 0 # A warning, not a failure.
func_mk_data_dir
# Check expected environment vars are set
func_checkpaths PYTHON_DIR PYTHONPATH TMP_DATA_DIR
func_checklibs STORE_LIB CLUSTER_LIB
func_checkexecs QPIDD_EXEC QPID_CONFIG_EXEC QPID_ROUTE_EXEC SENDER_EXEC RECEIVER_EXEC
FAILING_PYTHON_TESTS="${abs_srcdir}/failing_python_tests.txt"