refstack-client/setup_env
cdiep 646a7b9cc7 Update default Tempest version to SHA 551e1a97(Sept 11, 2015).
Although refstack-client does install a default Tempest check
out version (the current version is SHA [1]),  refstack-client
has also offered options for user to install other versions of
Tempest if needed.  However, the "test_index_no_params" test in
Tempest was recently renamed to "test_list_no_params" in patch
[2] which was merged on Sept 16, 2015.  As such, test results
collected with any version of Tempest that's later than [3] will
never be able to obtain a pass status for the
"test_index_no_params" test case which is included in the Board
approved 2015.07 guideline.  For tests run against 2015.07, it
is important that users use a version of Tempest that doesn't
include the name change.

In order to allow for users to get a verison of Tempest that
includes recent Tempest fixes, refStack-client will be updated
its default Tempest version to [4] which is the most recent
version that doesn't include the name change.

More information about the test name change discussion can be
found in [5].

[1] ffe09dd61170bfccf7d60ef9c8eba2883ab6c148 (July 16, 2015)
[2] https://review.openstack.org/#/c/223796/
[3] eb9941ba06d87b3fb458ce472cae4c594ad8c0cf
[4] 551e1a9701e7e2b3edf6d49a2eaa62b7ab2435ad (September 11, 22015)
[5] https://review.openstack.org/#/c/229177/

Change-Id: I34e73a20e8129ac7e8bcd2a6b47c1b3591b37838
2015-10-08 10:12:57 -07:00

153 lines
5.2 KiB
Bash
Executable File

#!/bin/bash -x
CHECKOUT_POINT=551e1a9701e7e2b3edf6d49a2eaa62b7ab2435ad
# Prints help
function usage {
set +x
SCRIPT_NAME="basename ${BASH_SOURCE[0]}"
echo "Usage: ${SCRIPT_NAME} [OPTION]..."
echo "Setup RefStack client with test environment"
echo ""
echo " -h, Print this usage message"
echo " -c Tempest test runner commit. You can specify SHA or branch here"
echo " -t Tempest test runner tag. You can specify tag here"
echo " If no commit or tag is specified, tempest will be install from commit"
echo " ${CHECKOUT_POINT}"
exit 1
}
#Check that parameter is a valid tag in tempest repository
function check_tag {
tags="$(git tag)"
for tag in ${tags}; do
[[ "${tag}" == "$1" ]] && return 0;
done
return 1
}
#By default tempest uses from commit 551e1a9701e7e2b3edf6d49a2eaa62b7ab2435ad
while getopts c:t:h FLAG; do
case ${FLAG} in
c)
CHECKOUT_POINT=${OPTARG}
;;
t)
CHECKOUT_POINT="-q ${OPTARG}"
;;
h) #show help
usage
;;
\?) #unrecognized option - show help
echo -e \\n"Option -$OPTARG not allowed."
usage
;;
esac
done
shift $((OPTIND-1)) #This tells getopts to move on to the next argument.
#Install git
if [ -n "$(command -v apt-get)" ]; then
# For apt-get-based Linux distributions (Ubuntu, Debian)
# If we run script in container we need sudo
if [ ! -n "$(command -v sudo)" ]; then
apt-get update || if [ $? -ne 0 ]; then exit 1; fi
apt-get -y install sudo
else
sudo apt-get update || if [ $? -ne 0 ]; then exit 1; fi
fi
sudo apt-get -y install git
elif [ -n "$(command -v yum)" ]; then
# For yum-based distributions (RHEL, Centos)
# If we run script in container we need sudo
if [ ! -f sudo ]; then
yum -y install sudo
fi
sudo yum -y install git
elif [ -n "$(command) -v zypper" ]; then
# For zypper-based distributions (openSuSe, SELS)
# If we run script in container we need sudo
if [ ! -f sudo ]; then
zypper --gpg-auto-import-keys --non-interactive refresh
zypper --non-interactive install sudo
else
sudo zypper --gpg-auto-import-keys --non-interactive refresh
fi
sudo zypper --non-interactive install git
else
echo "Neither apt-get nor yum nor zypper found"
exit 1
fi
WORKDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
#Checkout tempest on specified tag
if [ -d "${WORKDIR}/.tempest" ]; then
while true; do
read -p "Installed tempest found.We should remove it. All data from previouse test runs will be deleted. Continue (y/n) ?" yn
case ${yn} in
[Yy]* ) rm -rf ${WORKDIR}/.tempest; break;;
[Nn]* ) exit 1;;
* ) echo "Please answer yes or no.";;
esac
done
fi
git clone https://github.com/openstack/tempest.git ${WORKDIR}/.tempest
cd ${WORKDIR}/.tempest
git checkout $CHECKOUT_POINT || if [ $? -ne 0 ]; then exit 1; fi
cd ${WORKDIR}
# Setup binary requirements
if [ -n "$(command -v apt-get)" ]; then
# For apt-get-based Linux distributions (Ubuntu, Debian)
sudo apt-get -y install curl wget tar unzip python-dev build-essential libssl-dev libxslt-dev libsasl2-dev libffi-dev libbz2-dev
elif [ -n "$(command -v yum)" ]; then
# For yum-based distributions (RHEL, Centos)
sudo yum -y install curl wget tar unzip make python-devel.x86_64 gcc gcc-c++ libffi-devel libxml2-devel bzip2-devel libxslt-devel openssl-devel
elif [ -n "$(command) -v zypper" ]; then
# For zypper-based distributions (openSuSe, SELS)
sudo zypper --non-interactive install curl wget tar unzip make python-devel.x86_64 gcc gcc-c++ libffi-devel libxml2-devel zlib-devel libxslt-devel libopenssl-devel python-xml
else
echo "Neither apt-get nor yum nor zypper found"
exit 1
fi
#Build local python interpreter if needed
if [ ! -n "$(command -v python2.7)" ]; then
PY_VERSION="2.7.8"
echo "python2.7 not found. Building python ${PY_VERSION}..."
mkdir ${WORKDIR}/.localpython
mkdir ${WORKDIR}/.python_src
cd ${WORKDIR}/.python_src
wget http://www.python.org/ftp/python/${PY_VERSION}/Python-${PY_VERSION}.tgz
tar zxvf Python-${PY_VERSION}.tgz
cd Python-${PY_VERSION}
./configure --prefix=${WORKDIR}/.localpython
make && make install
cd ${WORKDIR}
rm -rf ${WORKDIR}/.python_src
PYPATH="${WORKDIR}/.localpython/bin/python"
else
echo "python2.7 found!"
PYPATH="python2.7"
fi
#Setup virtual environments for refstack-client and tempest
VENV_VERSION='1.11.6'
wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-${VENV_VERSION}.tar.gz
tar xvfz virtualenv-${VENV_VERSION}.tar.gz
cd virtualenv-${VENV_VERSION}
if [ -d ${WORKDIR}/.venv ]; then
rm -rf ${WORKDIR}/.venv
fi
python virtualenv.py ${WORKDIR}/.venv --python="${PYPATH}"
python virtualenv.py ${WORKDIR}/.tempest/.venv --python="${PYPATH}"
cd ..
rm -rf virtualenv-${VENV_VERSION}
rm virtualenv-${VENV_VERSION}.tar.gz
${WORKDIR}/.venv/bin/pip install -r ${WORKDIR}/requirements.txt
${WORKDIR}/.tempest/.venv/bin/pip install -r ${WORKDIR}/.tempest/requirements.txt