From 6790e17eb7c1a3eaaccfe97ac90932e3c15eea6d Mon Sep 17 00:00:00 2001 From: "jose.lausuch" Date: Wed, 4 May 2016 11:47:40 +0200 Subject: Refactor improvements JIRA: FUNCTEST-190 - Deleted unnecessary old scripts - Fixed healtcheck logging - Moved config_functest.yaml to /ci/ - Created env var CONFIG_FUNCTEST_YAML pointing to that new location - Modified all scripts which open config_functest.yaml using the new env var Change-Id: Ic4f0e40a70c02ac08287a1d621956f602bdee177 Signed-off-by: jose.lausuch --- docker/Dockerfile | 3 +- docker/common.sh | 62 ------------ docker/prepare_env.sh | 133 ------------------------ docker/run_tests.sh | 275 -------------------------------------------------- 4 files changed, 2 insertions(+), 471 deletions(-) delete mode 100755 docker/common.sh delete mode 100755 docker/prepare_env.sh delete mode 100755 docker/run_tests.sh (limited to 'docker') diff --git a/docker/Dockerfile b/docker/Dockerfile index b2560bef..8d4171af 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,7 +12,7 @@ # $ docker run -t -i \ # -e "INSTALLER_TYPE=fuel|apex|compass|joid \ # -e "INSTALLER_IP=10.20.0.2/172.30.10.73" \ -# -v $(pwd)/config_functest.yaml:/home/opnfv/functest/conf/config_functest.yaml +# -v $(pwd)/config_functest.yaml:/home/opnfv/repos/functest/ci/config_functest.yaml # opnfv/functest /bin/bash # # NOTE: providing config_functest.yaml is optional. If not provided, it will @@ -34,6 +34,7 @@ ENV creds /home/opnfv/functest/conf/openstack.creds ENV TERM xterm ENV COLORTERM gnome-terminal ENV PYTHONPATH $PYTHONPATH:/home/opnfv/repos/ +ENV CONFIG_FUNCTEST_YAML /home/opnfv/repos/functest/ci/config_functest.yaml WORKDIR /home/opnfv # Packaged dependencies diff --git a/docker/common.sh b/docker/common.sh deleted file mode 100755 index b81dedf7..00000000 --- a/docker/common.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -# -# Author: Jose Lausuch (jose.lausuch@ericsson.com) -# -# Installs the Functest framework within the Docker container -# and run the tests automatically -# -# If config_functest.yaml is given by the docker run command, -# it must be run like this: -# -# docker run -ti \ -# -e "INSTALLER_TYPE=" \ -# -e "INSTALLER_IP=" \ -# -v $(pwd)/config_functest.yaml:/home/opnfv/functest/conf/config_functest.yaml \ -# opnfv/functest /bin/bash -# -# NOTE: $(pwd)/config_functest.yaml means that it will take the one in the -# current directory. -# -# If it is not provided, take the existing one in the functest repo -# - -# this pull is to be removed right before the B release, once we build -# a release candidate docker -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -# - -mkdir -p /home/opnfv/functest/conf -config_file=/home/opnfv/functest/conf/config_functest.yaml -if [ ! -f ${config_file} ]; then - default_config_file=$(find /home/opnfv/repos -name config_functest.yaml) - cp $default_config_file $config_file - echo "config_functest.yaml not provided. Using default one" -fi - - -# Parse config_functest.yaml file -# TODO: this is not the best way to parse a yaml file in bash... - -# Directories -REPOS_DIR=$(cat $config_file | grep -w dir_repos | awk 'END {print $NF}') -FUNCTEST_REPO_DIR=$(cat $config_file | grep -w dir_repo_functest | awk 'END {print $NF}') -FUNCTEST_DIR=$(cat $config_file | grep -w dir_functest | awk 'END {print $NF}') -FUNCTEST_RESULTS_DIR=$(cat $config_file | grep -w dir_results | awk 'END {print $NF}') -FUNCTEST_CONF_DIR=$(cat $config_file | grep -w dir_functest_conf | awk 'END {print $NF}') -FUNCTEST_DATA_DIR=$(cat $config_file | grep -w dir_functest_data | awk 'END {print $NF}') -RALLY_VENV_DIR=$(cat $config_file | grep -w dir_rally_inst | awk 'END {print $NF}') - - -info () { - logger -s -t "FUNCTEST.info" "$*" -} - -error () { - logger -s -t "FUNCTEST.error" "$*" - exit 1 -} diff --git a/docker/prepare_env.sh b/docker/prepare_env.sh deleted file mode 100755 index 89c44e4f..00000000 --- a/docker/prepare_env.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/bash - -# -# Author: Jose Lausuch (jose.lausuch@ericsson.com) -# -# Installs the Functest framework within the Docker container -# and run the tests automatically -# -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -# - -usage="Script to prepare the Functest environment. - -usage: - bash $(basename "$0") [-h|--help] [-t ] - -where: - -h|--help show this help text - -examples: - $(basename "$0")" - - -# Parse parameters -while [[ $# > 0 ]] - do - key="$1" - case $key in - -h|--help) - echo "$usage" - exit 0 - shift - ;; - *) - error "unknown option $1" - exit 1 - ;; - esac - shift # past argument or value -done - -BASEDIR=`dirname $0` -source ${BASEDIR}/common.sh - -debug="" -if [[ "${CI_DEBUG,,}" == "true" ]];then - debug="--debug" -fi - - -info "######### Preparing Functest environment #########" - -# definition of available installer names -INSTALLERS=(fuel compass apex joid) - -if [ ! -f ${FUNCTEST_CONF_DIR}/openstack.creds ]; then - # If credentials file is not given, check if environment variables are set - # to get the creds using fetch_os_creds.sh later on - info "Checking environment variables INSTALLER_TYPE and INSTALLER_IP" - if [ -z ${INSTALLER_TYPE} ]; then - error "Environment variable 'INSTALLER_TYPE' is not defined." - elif [[ ${INSTALLERS[@]} =~ ${INSTALLER_TYPE} ]]; then - info "INSTALLER_TYPE env variable found: ${INSTALLER_TYPE}" - else - error "Invalid environment variable INSTALLER_TYPE=${INSTALLER_TYPE}" - fi - - if [ -z ${INSTALLER_IP} ]; then - error "Environment variable 'INSTALLER_IP' is not defined." - fi - info "INSTALLER_IP env variable found: ${INSTALLER_IP}" -fi - - -# Create directories -mkdir -p ${FUNCTEST_CONF_DIR} -mkdir -p ${FUNCTEST_DATA_DIR} -mkdir -p ${FUNCTEST_RESULTS_DIR}/ODL - - -# Create Openstack credentials file -# $creds is an env varialbe in the docker container pointing to -# /home/opnfv/functest/conf/openstack.creds -if [ ! -f ${creds} ]; then - ${REPOS_DIR}/releng/utils/fetch_os_creds.sh -d ${creds} \ - -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} - retval=$? - if [ $retval != 0 ]; then - error "Cannot retrieve credentials file from installation. Check logs." - exit $retval - fi -else - info "OpenStack credentials file given to the docker and stored in ${FUNCTEST_CONF_DIR}/openstack.creds." -fi - -# If we use SSL, by default use option OS_INSECURE=true which means that -# the cacert will be self-signed -if grep -Fq "OS_CACERT" ${creds}; then - echo "OS_INSECURE=true">>${creds}; -fi - -# Source credentials -source ${creds} - -# Check OpenStack -info "Checking that the basic OpenStack services are functional..." -${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/check_os.sh -RETVAL=$? -if [ $RETVAL -ne 0 ]; then - exit 1 -fi - -# Prepare Functest Environment -info "Preparing Functest environment..." -python ${FUNCTEST_REPO_DIR}/testcases/config_functest.py $debug start -retval=$? -if [ $retval != 0 ]; then - error "Error when configuring Functest environment" - exit $retval -fi - - -# Generate OpenStack defaults -info "Generating OpenStack defaults..." -python ${FUNCTEST_REPO_DIR}/utils/generate_defaults.py $debug - -ifconfig eth0 mtu 1450 - -echo "1" > ${FUNCTEST_CONF_DIR}/env_active diff --git a/docker/run_tests.sh b/docker/run_tests.sh deleted file mode 100755 index f51c9e19..00000000 --- a/docker/run_tests.sh +++ /dev/null @@ -1,275 +0,0 @@ -#!/bin/bash - -# -# Author: Jose Lausuch (jose.lausuch@ericsson.com) -# Morgan Richomme (morgan.richomme@orange.com) -# Installs the Functest framework within the Docker container -# and run the tests automatically -# -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -# - -usage="Script to trigger the tests automatically. - -usage: - bash $(basename "$0") [-h|--help] [-t ] - -where: - -h|--help show this help text - -r|--report push results to database (false by default) - -n|--no-clean do not clean OpenStack resources after test run - -s|--serial run Tempest tests in one thread - -t|--test run specific set of tests - one or more of the following separated by comma: - healthcheck,vping_ssh,vping_userdata,odl,onos, - tempest,rally,vims,promise,doctor - - -examples: - $(basename "$0") - $(basename "$0") --test vping_ssh,odl - $(basename "$0") -t tempest,rally" - - -BASEDIR=`dirname $0` -source ${BASEDIR}/common.sh - -report="" -clean=true -serial=false - -# Get the list of runnable tests -# Check if we are in CI mode -debug="" -if [[ "${CI_DEBUG,,}" == "true" ]];then - debug="--debug" -fi - -function clean_openstack(){ - if [ $clean == true ]; then - echo -e "\n" - info "Cleaning Openstack environment..." - python ${FUNCTEST_REPO_DIR}/utils/clean_openstack.py \ - $debug - echo -e "\n" - fi -} - -function odl_tests(){ - keystone_ip=$(openstack catalog show identity |grep publicURL| cut -f3 -d"/" | cut -f1 -d":") - # historically most of the installers use the same IP for neutron and keystone API - neutron_ip=$keystone_ip - odl_ip=$(openstack catalog show network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") - usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=') - password=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=') - odl_port=8181 - if [ $INSTALLER_TYPE == "fuel" ]; then - odl_port=8282 - elif [ $INSTALLER_TYPE == "apex" ]; then - : - elif [ $INSTALLER_TYPE == "joid" ]; then - odl_ip=$(env | grep SDN_CONTROLLER | cut -f2 -d'=') - neutron_ip=$(openstack catalog show network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":") - odl_port=8080 - : - elif [ $INSTALLER_TYPE == "compass" ]; then - : - else - error "INSTALLER_TYPE not valid." - exit 1 - fi -} -function run_test(){ - test_name=$1 - echo -e "\n\n\n\n" - echo "----------------------------------------------" - echo " Running test case: $i" - echo "----------------------------------------------" - echo "" - clean_flag="" - if [ $clean == "false" ]; then - clean_flag="-n" - fi - serial_flag="" - if [ $serial == "true" ]; then - serial_flag="-s" - fi - - case $test_name in - "healthcheck") - info "Running health check test..." - ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/healthcheck.sh - ;; - "vping_ssh") - info "Running vPing-SSH test..." - python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing_ssh.py \ - $debug $report - ;; - "vping_userdata") - info "Running vPing-userdata test... " - python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing_userdata.py \ - $debug $report - ;; - "odl") - info "Running ODL test..." - odl_tests - ODL_PORT=$odl_port ODL_IP=$odl_ip KEYSTONE_IP=$keystone_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \ - ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh - - # push results to the DB in case of CI - if [[ -n "$DEPLOY_SCENARIO" && "$DEPLOY_SCENARIO" != "none" ]]; then - odl_logs="/home/opnfv/functest/results/odl/logs/2" - odl_path="${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI" - node_name=$(env | grep NODE_NAME | cut -f2 -d'=') - python ${odl_path}/odlreport2db.py -x ${odl_logs}/output.xml -i ${INSTALLER_TYPE} -p ${node_name} -s ${DEPLOY_SCENARIO} - fi - ;; - "tempest") - info "Running Tempest tests..." - python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_tempest.py \ - $debug $serial_flag $clean_flag -m smoke $report - # 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 - ;; - "vims") - info "Running vIMS test..." - python ${FUNCTEST_REPO_DIR}/testcases/vIMS/CI/vIMS.py \ - $debug $clean_flag $report - ;; - "rally") - info "Running Rally benchmark suite..." - python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py \ - $debug $clean_flag all $report - - ;; - "bgpvpn") - info "Running BGPVPN Tempest test case..." - pushd ${repos_dir}/bgpvpn/ - pip install --no-deps -e . - popd - tempest_dir=$(ls -t /home/opnfv/.rally/tempest/ |grep for-deploy |tail -1) - if [[ $tempest_dir == "" ]]; then - error "Make sure tempest was running before" - fi - tempest_dir=/home/opnfv/.rally/tempest/$tempest_dir - pushd $tempest_dir - mkdir -p /etc/tempest/ - cp tempest.conf /etc/tempest/ - echo "[service_available] -bgpvpn = True" >> /etc/tempest/tempest.conf - ./run_tempest.sh -t -N -- networking_bgpvpn_tempest - rm -rf /etc/tempest/tempest.conf - popd - ;; - "onos") - info "Running ONOS test case..." - if [ $INSTALLER_TYPE == "joid" ]; then - python ${FUNCTEST_REPO_DIR}/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py -i joid - else - python ${FUNCTEST_REPO_DIR}/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py - fi - ;; - "promise") - info "Running PROMISE test case..." - python ${FUNCTEST_REPO_DIR}/testcases/features/promise.py $debug $report - sleep 10 # to let the instances terminate - ;; - "doctor") - info "Running Doctor test..." - python ${FUNCTEST_REPO_DIR}/testcases/features/doctor.py - ;; - "ovno") - info "Running OpenContrail test..." - ${repos_dir}/ovno/Testcases/RunTests.sh - ;; - esac - - if [ $clean == "true" ]; then - clean_openstack - fi -} - - -# Parse parameters -while [[ $# > 0 ]] - do - key="$1" - case $key in - -h|--help) - echo "$usage" - exit 0 - shift - ;; - -r|--report) - report="-r" - ;; - -n|--no-clean) - clean=false - ;; - -s|--serial) - serial=true - ;; - -t|--test|--tests) - TEST="$2" - shift - ;; - *) - echo "unknown option $1 $2" - exit 1 - ;; - esac - shift # past argument or value -done - - -tests_file="/home/opnfv/functest/conf/testcase-list.txt" -if [[ -n "$DEPLOY_SCENARIO" && "$DEPLOY_SCENARIO" != "none" ]] &&\ - [[ -f $tests_file ]]; then - arr_test=($(cat $tests_file)) -else - arr_test=(healthcheck vping_ssh vping_userdata tempest vims rally) -fi - - -info "Tests to be executed: ${arr_test[@]}" - -# 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 - -# 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 - - -# Source credentials -info "Sourcing Credentials ${FUNCTEST_CONF_DIR}/openstack.creds to run the tests.." -source ${FUNCTEST_CONF_DIR}/openstack.creds - -# Run tests -if [ "${TEST}" != "" ]; then - for i in "${arr_test_exec[@]}"; do - run_test $i - done -else - info "Executing tests..." - for i in "${arr_test[@]}"; do - run_test $i - done -fi -- cgit 1.2.3-korg