diff options
Diffstat (limited to 'docker/prepare_env.sh')
-rwxr-xr-x | docker/prepare_env.sh | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/docker/prepare_env.sh b/docker/prepare_env.sh new file mode 100755 index 000000000..48320d4cc --- /dev/null +++ b/docker/prepare_env.sh @@ -0,0 +1,210 @@ +#!/bin/bash + +# +# Author: Jose Lausuch (jose.lausuch@ericsson.com) +# +# Installs the Functest framework within the Docker container +# and run the tests automatically +# + +usage="Script to prepare the Functest environment. + +usage: + bash $(basename "$0") [--offline] [-h|--help] [-t <test_name>] + +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 + +info "######### Preparing Functest environment #########" +if [ $offline == false ]; then + info "MODE: online" +else + info "MODE: offline" +fi + +# 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 + + +if [ $offline == false ]; then + # Update repos + info "Updating Releng repository...." + cd ${RELENG_REPO_DIR} + if [ ${RELENG_BRANCH} != "master" ]; then + info "Releng repo: checkout ${RELENG_BRANCH} branch..." + git checkout ${RELENG_BRANCH} + fi + info "Releng repo: pulling to latest..." + git pull + if [ ${RELENG_COMMIT} != "latest" ]; then + info "Releng repo: given commit is ${RELENG_COMMIT}. Reseting..." + git reset --hard ${RELENG_COMMIT} + fi + + info "Updating Rally repository...." + cd ${RALLY_REPO_DIR} + if [ ${RALLY_BRANCH} != "master" ]; then + info "Rally repo: checkout ${RALLY_BRANCH} branch..." + git checkout ${RALLY_BRANCH} + fi + info "Rally repo: pulling to latest..." + git pull + # We leave the reset command for later. + + info "Updating vIMS test repository...." + cd ${VIMS_REPO_DIR} + if [ ${VIMS_BRANCH} != "stable" ]; then + info "Releng repo: checkout ${VIMS_TEST_BRANCH} branch..." + git checkout ${VIMS_BRANCH} + fi + info "vIMS test repo: pulling to latest..." + git pull + if [ ${VIMS_COMMIT} != "latest" ]; then + info "vIMS test repo: given commit is ${VIMS_TEST_COMMIT}. Reseting..." + git reset --hard ${VIMS_COMMIT} + fi + + info "Updating BGPVPN repository...." + cd ${BGPVPN_REPO_DIR} + if [ ${BGPVPN_BRANCH} != "master" ]; then + info "BGPVPN repo: checkout ${BGPVPN_BRANCH} branch..." + git checkout ${BGPVPN_BRANCH} + fi + info "BGPVPN repo: pulling to latest..." + git pull + if [ ${BGPVPN_COMMIT} != "latest" ]; then + info "BGPVPN repo: given commit is ${BGPVPN_COMMIT}. Reseting..." + git reset --hard ${BGPVPN_COMMIT} + fi + + info "Updating ONOS repository...." + cd ${ONOS_REPO_DIR} + if [ ${ONOS_BRANCH} != "master" ]; then + info "ONOS repo: checkout ${ONOS} branch..." + git checkout ${ONOS_BRANCH} + fi + info "ONOS repo: pulling to latest..." + git pull + if [ ${ONOS_COMMIT} != "latest" ]; then + info "ONOS repo: given commit is ${ONOS_COMMIT}. Reseting..." + git reset --hard ${ONOS_COMMIT} + fi + + info "Updating PROMISE repository...." + cd ${PROMISE_REPO_DIR} + if [ ${PROMISE_BRANCH} != "master" ]; then + info "PROMISE repo: checkout ${PROMISE} branch..." + git checkout ${PROMISE_BRANCH} + fi + info "PROMISE repo: pulling to latest..." + git pull + if [ ${PROMISE_COMMIT} != "latest" ]; then + info "PROMISE repo: given commit is ${PROMISE_COMMIT}. Reseting..." + git reset --hard ${PROMISE_COMMIT} + fi + +fi + +# We do this regardless if its online or offline mode. +# Assumption: the docker image contains a newer rally repo than the given commit. +if [ ${RALLY_COMMIT} != "latest" ]; then + cd ${RALLY_REPO_DIR} + info "Rally repo: given commit is ${RALLY_COMMIT}. Reseting..." + git reset --hard ${RALLY_COMMIT} +fi + + +# Create directories +mkdir -p ${FUNCTEST_CONF_DIR} +mkdir -p ${FUNCTEST_DATA_DIR} +mkdir -p ${FUNCTEST_RESULTS_DIR}/ODL + + + +# Create Openstack credentials file +if [ ! -f ${FUNCTEST_CONF_DIR}/openstack.creds ]; then + ${REPOS_DIR}/releng/utils/fetch_os_creds.sh -d ${FUNCTEST_CONF_DIR}/openstack.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 +# Source credentials +source ${FUNCTEST_CONF_DIR}/openstack.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 "Functest: prepare 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 + +ifconfig eth0 mtu 1450 + +echo "1" > ${FUNCTEST_CONF_DIR}/env_active |