summaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorjose.lausuch <jose.lausuch@ericsson.com>2016-05-04 11:47:40 +0200
committerjose.lausuch <jose.lausuch@ericsson.com>2016-05-04 14:35:07 +0200
commit6790e17eb7c1a3eaaccfe97ac90932e3c15eea6d (patch)
tree06697206e1323dd3acdce742a2e1e5d5bb4b232f /docker
parent7ad2ce42a2bc2c8dc17fbc9423da71a95fed4d87 (diff)
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 <jose.lausuch@ericsson.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/Dockerfile3
-rwxr-xr-xdocker/common.sh62
-rwxr-xr-xdocker/prepare_env.sh133
-rwxr-xr-xdocker/run_tests.sh275
4 files changed, 2 insertions, 471 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index b2560bef2..8d4171afb 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 b81dedf7e..000000000
--- 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=<something>" \
-# -e "INSTALLER_IP=<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 89c44e4f6..000000000
--- 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 <test_name>]
-
-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 f51c9e194..000000000
--- 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 <test_name>]
-
-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
- <test_name> 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