From 98a2966601137e094af49059a2d419c1143b1f82 Mon Sep 17 00:00:00 2001 From: "jose.lausuch" Date: Wed, 21 Oct 2015 18:22:46 +0200 Subject: Add possibility to run specific set of tests JIRA: FUNCTEST-29 Change-Id: I20f1556911866cc7922cff9923ef7d01a95355ad Signed-off-by: jose.lausuch --- docker/prepare_env.sh | 48 +++++++++--- docker/run_tests.sh | 198 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 166 insertions(+), 80 deletions(-) diff --git a/docker/prepare_env.sh b/docker/prepare_env.sh index eaa9b4f0..42b1e1c4 100755 --- a/docker/prepare_env.sh +++ b/docker/prepare_env.sh @@ -7,15 +7,47 @@ # and run the tests automatically # +usage="Script to prepare the Functest environment. + +usage: + bash $(basename "$0") [--offline] [-h|--help] [-t ] + +where: + -o|--offline optional offline mode (experimental) + -h|--help show this help text + +examples: + $(basename "$0") + $(basename "$0") --offline" + +offline=false + +# Parse parameters +while [[ $# > 0 ]] + do + key="$1" + case $key in + -h|--help) + echo "$usage" + exit 0 + shift + ;; + -o|--offline) + offline=true + ;; + *) + error "unknown option $1" + exit 1 + ;; + esac + shift # past argument or value +done + BASEDIR=`dirname $0` source ${BASEDIR}/common.sh # Support for Functest offline # NOTE: Still not 100% working when running the tests -offline=false -if [ ! -z "$1" ] && [ $1 == "--offline" ]; then - offline=true -fi info "######### Preparing Functest environment #########" if [ $offline == false ]; then @@ -86,8 +118,6 @@ mkdir -p ${FUNCTEST_CONF_DIR} mkdir -p ${FUNCTEST_DATA_DIR} mkdir -p ${FUNCTEST_RESULTS_DIR}/ODL -# Detect type of installer -# NOTE: this is tricky, since the IPs will have to be the same ALWAYS # Create Openstack credentials file @@ -95,7 +125,7 @@ ${REPOS_DIR}/releng/utils/fetch_os_creds.sh -d ${FUNCTEST_CONF_DIR}/openstack.cr -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} retval=$? if [ $retval != 0 ]; then - echo "Cannot retrieve credentials file from installation. Check logs." + error "Cannot retrieve credentials file from installation. Check logs." exit $retval fi @@ -105,11 +135,11 @@ source ${FUNCTEST_CONF_DIR}/openstack.creds # Prepare Functest Environment -echo "Functest: prepare Functest environment" +info "Functest: prepare Functest environment" python ${FUNCTEST_REPO_DIR}/testcases/config_functest.py --debug ${FUNCTEST_REPO_DIR}/ start retval=$? if [ $retval != 0 ]; then - echo "Error when configuring Functest environment" + error "Error when configuring Functest environment" exit $retval fi diff --git a/docker/run_tests.sh b/docker/run_tests.sh index ef3125fc..c794d3bf 100755 --- a/docker/run_tests.sh +++ b/docker/run_tests.sh @@ -7,91 +7,147 @@ # and run the tests automatically # -BASEDIR=`dirname $0` -source ${BASEDIR}/common.sh +usage="Script to trigger the tests automatically. + +usage: + bash $(basename "$0") [--offline] [-h|--help] [-t ] + +where: + -o|--offline optional offline mode (experimental) + -h|--help show this help text + -t|--test run specific set of tests + one or more of the following: vping,odl,rally,tempest. Separated by comma. + + +examples: + $(basename "$0") + $(basename "$0") --test vping,odl + $(basename "$0") --offline -t tempest,rally" -if [ ! -f ${FUNCTEST_CONF_DIR}/env_active ]; then - error "The Functest environment is not installed. \ - Please run prepare_env.sh before running this script...." -fi # Support for Functest offline # NOTE: Still not 100% working when running the tests offline=false -if [ ! -z "$1" ] && [ $1 == "--offline" ]; then - offline=true -fi +arr_test=(vping odl rally tempest) + + +function run_test(){ + test_name=$1 + echo "----------------------------------------------" + echo "------------- Running $i test case " + echo "----------------------------------------------" + case $test_name in + "vping") + info "Running vPing test..." + python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing.py --debug ${FUNCTEST_REPO_DIR}/ -r + ;; + "odl") + info "Running ODL test..." + if [ $INSTALLER_TYPE == "fuel" ]; then + odl_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") + neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") + usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=') + pass=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=') + odl_port=8181 + ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$pass \ + ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh + elif [ $INSTALLER_TYPE == "foreman" ]; then + #odl_port=8081 + ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh + else + error "INSTALLER_TYPE not valid." + exit 1 + fi + # save ODL results + odl_logs="${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/logs" + if [ -d ${odl_logs} ]; then + cp -Rf ${odl_logs} ${FUNCTEST_CONF_DIR}/ODL/ + fi + ;; + "rally") + info "Running Rally benchmark suite..." + python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally.py --debug ${FUNCTEST_REPO_DIR}/ all + ;; + "tempest") + info "Running Tempest smoke tests..." + rally verify start smoke + rally verify list + # save tempest.conf for further troubleshooting + tempest_conf="${RALLY_VENV_DIR}/tempest/for-deployment-*/tempest.conf" + if [ -f ${tempest_conf} ]; then + cp $tempest_conf ${FUNCTEST_CONF_DIR} + fi + ;; + esac +} + + +# Parse parameters +while [[ $# > 0 ]] + do + key="$1" + case $key in + -h|--help) + echo "$usage" + exit 0 + shift + ;; + -o|--offline) + offline=true + ;; + -t|--tests) + TEST="$2" + shift + ;; + *) + echo "unknown option $1 $2" + exit 1 + ;; + esac + shift # past argument or value +done +BASEDIR=`dirname $0` +source ${BASEDIR}/common.sh -# Source credentials -info "Sourcing Credentials ${FUNCTEST_CONF_DIR}/openstack.creds again to run the tests.." -source ${FUNCTEST_CONF_DIR}/openstack.creds +# Check that the given tests are correct +if [ "${TEST}" != "" ]; then + arr_test_exec=(${TEST//,/ }) + for i in "${arr_test_exec[@]}"; do + if [[ " ${arr_test[*]} " != *" $i "* ]]; then + error "Unknown test: $i. Available tests are: ${arr_test[@]}" + fi + done + info "Tests to execute: ${TEST}." +fi -# vPing -echo "----------------------------------------------" -echo "---------- Running vPING test case ----------" -echo "----------------------------------------------" -info "Running vPing" -python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing.py --debug ${FUNCTEST_REPO_DIR}/ -r - - - -# ODL -echo "----------------------------------------------" -echo "----------- Running ODL test case -----------" -echo "----------------------------------------------" -info "Functest: run ODL suite" -if [ $INSTALLER_TYPE == "fuel" ]; then - odl_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") - neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") - usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=') - pass=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=') - odl_port=8181 - ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$pass \ - ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh -elif [ $INSTALLER_TYPE == "foreman" ]; then - #odl_port=8081 - ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh +if [ $offline == false ]; then + info "MODE: online" else - error "INSTALLER_TYPE not valid." - exit 1 + info "MODE: offline" fi +# Check that the functest environment has been installed +if [ ! -f ${FUNCTEST_CONF_DIR}/env_active ]; then + error "The Functest environment is not installed. \ + Please run prepare_env.sh before running this script...." +fi -# rally -echo "----------------------------------------------" -echo "--------- Running Rally bench suite ---------" -echo "----------------------------------------------" -info "Running Rally Bench suites" -python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally.py --debug ${FUNCTEST_REPO_DIR}/ all - - - -# tempest -echo "----------------------------------------------" -echo "-------- Running Tempest smoke tests --------" -echo "----------------------------------------------" -info "Running Tempest suite..." -rally verify start smoke -rally verify list - - - - -# collect results -# NOTE: To be removed when all the resuls are pushed to the DB -info "Functest: copy results and clean Functest environment" +# Source credentials +info "Sourcing Credentials ${FUNCTEST_CONF_DIR}/openstack.creds to run the tests.." +source ${FUNCTEST_CONF_DIR}/openstack.creds -# save ODL results -odl_logs="${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/logs" -if [ -d ${tempest_conf} ]; then - cp -Rf ${odl_logs} ${FUNCTEST_CONF_DIR}/ODL/ -fi -# save tempest.conf for further troubleshooting -tempest_conf="${RALLY_VENV_DIR}/tempest/for-deployment-*/tempest.conf" -if [ -f ${tempest_conf} ]; then - cp $tempest_conf ${FUNCTEST_CONF_DIR} +# Run tests +if [ "${TEST}" != "" ]; then + for i in "${arr_test_exec[@]}"; do + run_test $i + done +else + info "Executing all the tests" + for i in "${arr_test[@]}"; do + run_test $i + done fi -- cgit 1.2.3-korg