Use rally cert script
[functest.git] / docker / run_tests.sh
index 46fe6cd..50a1296 100755 (executable)
 
 #
 # 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") [--offline] [-h|--help] [-t <test_name>]
+    bash $(basename "$0") [-h|--help] [-t <test_name>]
 
 where:
-    -o|--offline      optional offline mode (experimental)
     -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
     -t|--test         run specific set of tests
-      <test_name>     one or more of the following: vping,odl,rally,tempest,vims,onos, promise. Separated by comma.
+      <test_name>     one or more of the following: vping,odl,rally,tempest,vims,onos,promise,ovno. Separated by comma.
 
 
 examples:
     $(basename "$0")
     $(basename "$0") --test vping,odl
-    $(basename "$0") --offline -t tempest,rally"
+    $(basename "$0") -t tempest,rally"
 
 
 # Support for Functest offline
 # NOTE: Still not 100% working when running the tests
 offline=false
 report=""
+clean=true
 # Get the list of runnable tests
 # Check if we are in CI mode
-if [ -n "$DEPLOY_SCENARIO" ]; then
-     testcase=`cat /home/opnfv/functest/conf/testcase-list.txt`
-     arr_test=("$testcase")
-elif
-    arr_test=(vping odl tempest vims rally)
-fi
+
 
 function clean_openstack(){
-    python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py \
-        --debug
+    if [ $clean == true ]; then
+        echo -e "\n\nCleaning Openstack environment..."
+        python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py \
+            --debug
+        echo -e "\n\n"
+    fi
 }
 
+function odl_tests(){
+    neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+    odl_ip=$(keystone catalog --service 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
+        :
+    elif [ $INSTALLER_TYPE == "compass" ]; then
+        :
+    else
+        error "INSTALLER_TYPE not valid."
+        exit 1
+    fi
+}
 function run_test(){
     test_name=$1
+    echo ""
     echo "----------------------------------------------"
-    echo "------------- Running $i test case  "
+    echo "  Running test cases: $i"
     echo "----------------------------------------------"
+    echo ""
     case $test_name in
         "vping")
             info "Running vPing test..."
+            python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing2.py \
+                --debug ${report}
+        ;;
+        "vping_userdata")
+            info "Running vPing test using userdata/cloudinit.... "
             python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing.py \
                 --debug ${report}
         ;;
         "odl")
             info "Running ODL test..."
-            neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
-            odl_ip=$(keystone catalog --service 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
-                pass
-            elif [ $INSTALLER_TYPE == "joid" ]; then
-                pass
-            elif [ $INSTALLER_TYPE == "compass" ]; then
-                pass
-            else
-                error "INSTALLER_TYPE not valid."
-                exit 1
-            fi
+            odl_tests
             ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \
                 ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh
 
-            # 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/
+            # 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")
@@ -103,24 +121,43 @@ function run_test(){
         "rally")
             info "Running Rally benchmark suite..."
             cinder type-create volume-test #provisional
-            python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally.py \
+            python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py \
                 --debug all ${report}
             cinder type-delete $(cinder type-list|grep test|awk '{print $2}')
             clean_openstack
 
         ;;
-        "bgpvpn_template")
+        "bgpvpn")
             info "Running BGPVPN Tempest test case..."
-            tempest_dir=$(find /root/.rally -type d -name for-deploy*)
-            # TODO:
-            # do the call of your test case here.
-            # the bgpvpn repo is cloned in $BGPVPN_REPO_DIR
-            # tempest is installed in $tempest_dir
-            # Suggestion:
-            #   mkdir ${tempest_dir}/tempest/api/bgpvpn/
-            #   cp ${BGPVPN_REPO_DIR}/networking_bgpvpn_tempest/<whatever you need> \
-            #       ${tempest_dir}/tempest/api/bgpvpn/
-            #   ${tempest_dir}/run_tempest.sh tempest.api.bgpvpn.<test_case_name>
+            tempest_dir=$(ls -t /home/opnfv/.rally/tempest/ |grep for-deploy |tail -1)
+            if [[ $tempest_dir == "" ]]; then
+                echo "Make sure tempest was running before"
+                exit 1
+            fi
+            tempest_dir=/home/opnfv/.rally/tempest/$tempest_dir
+            pushd $tempest_dir
+              . .venv/bin/activate
+              pip install --no-deps -e ~/repos/bgpvpn/.
+              cp tempest.conf /etc/tempest/
+              echo "[service_available]
+bgpvpn = True" >> /etc/tempest/tempest.conf
+              ./run_tempest.sh -- networking_bgpvpn_tempest
+              rm -rf /etc/tempest/tempest.conf
+            popd
+        ;;
+        "odl-vpnservice")
+            info "Running VPNSERVICE Robot test case..."
+            odl_tests
+            cp ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt \
+                ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt.bak
+            echo "
+test/csit/suites/vpnservice
+" > ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt
+            ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \
+                ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh
+            cp ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt.bak \
+                ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/test_list.txt
+            # TODO: copy logs
        ;;
         "onos")
             info "Running ONOS test case..."
@@ -128,8 +165,18 @@ function run_test(){
       ;;
         "promise")
             info "Running PROMISE test case..."
+            python ${FUNCTEST_REPO_DIR}/testcases/features/promise.py --debug all ${report}
+            clean_openstack
+        ;;
+        "doctor")
+            info "Running Doctor test..."
+            python ${FUNCTEST_REPO_DIR}/testcases/features/doctor.py
+        ;;
+        "ovno")
+            info "Running OpenContrail test..."
             # TODO
-   esac
+        ;;
+    esac
 }
 
 
@@ -149,6 +196,9 @@ while [[ $# > 0 ]]
         -r|--report)
             report="-r"
         ;;
+        -n|--no-clean)
+            clean=false
+        ;;
         -t|--test|--tests)
             TEST="$2"
             shift
@@ -161,6 +211,16 @@ while [[ $# > 0 ]]
     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=(vping tempest vims rally)
+fi
+echo "arr_test: "${arr_test[@]}
+
 BASEDIR=`dirname $0`
 source ${BASEDIR}/common.sh
 
@@ -199,7 +259,7 @@ if [ "${TEST}" != "" ]; then
         run_test $i
     done
 else
-    info "Executing all the tests"
+    info "Executing tests..."
     for i in "${arr_test[@]}"; do
         run_test $i
     done