bugfix: fix bugs for running 'teststory run'
[bottlenecks.git] / run_tests.sh
index 62f8738..eb78824 100755 (executable)
 usage="Script to run the tests in bottlenecks auto.
 
 usage:
-    bash $(basename "$0") [-h|--help] [-s <test suite>]
+    bash $(basename "$0") [-h|--help] [-s <test suite>] [-c <test case>]
 
 where:
     -h|--help         show the help text
     -r|--report       push results to DB(true by default)
-    -s|--suite        run specific test suite
-      <test suite>    one of the following:
-                            rubbos, vstf
+    -s|--teststory    run specific test story
+      <test story>        one of the following:
+                              (rubbos, vstf, posca_factor_test)
+                      user can also define their own test story and pass as var to this file,
+                      please refer to testsuites/posca/testsuite_story/ for details
+    -c|--testcase     run specific test case
+      <test case>         one of the following:
+                              (posca_factor_system_bandwidth, posca_factor_ping)
 
 examples:
     $(basename "$0")
-    $(basename "$0") -s rubbos"
+    $(basename "$0") -s posca_factor_test"
+
+Bottlenecks_key_dir="/home/opnfv/bottlenecks/utils/infra_setup"
+POSCA_SCRIPT="/home/opnfv/bottlenecks/testsuites/posca"
+SUITE_PREFIX="/home/opnfv/bottlenecks/testsuites/posca/testcase_cfg"
 
 report=true
 
-arr_test_suite=(rubbos vstf posca)
+#TO-DO add auto-find for test story as for test case
+all_test_story=(rubbos vstf posca_factor_test)
 
-Bottlenecks_key_dir="/home/opnfv/bottlenecks/utils/infra_setup"
-
-function check_testcase(){
-
-    check_suite="$1"
-    case $check_suite in
-         "-rubbos")
-             SUITE_PREFIX=$SUITE_PREFIX_CONFIG/rubbos/testcase_cfg
-         ;;
-         "-vstf")
-             SUITE_PREFIX=$SUITE_PREFIX_CONFIG/vstf/testcase_cfg
-         ;;
-         "-posca")
-             SUITE_PREFIX=$SUITE_PREFIX_CONFIG/posca/testcase_cfg
-         ;;
-    esac
+find $SUITE_PREFIX -name "*yaml" > /tmp/all_testcases.yaml
+all_testcases_posca=`cat /tmp/all_testcases.yaml | awk -F '/' '{print $NF}' | awk -F '.' '{print $1}'`
+all_test_case=(${all_testcases_posca})
 
-    TEST_CASE=$2
-
-    #find all the test case yaml files first
-    find $SUITE_PREFIX -name "*yaml" > /tmp/all_testcases.yaml
-    all_testcases_insuite=`cat /tmp/all_testcases.yaml | awk -F '/' '{print $NF}' | awk -F '.' '{print $1}'`
-    all_testcases=(${all_testcases_insuite})
-
-    if [ "${TEST_CASE}" != "" ]; then
-       testcase_exec=(${TEST_CASE// /})
-       for i in "${testcase_exec[@]}"; do
-           if [[ " ${all_testcases[*]} " != *" $i "* ]]; then
-               error "unknown test case: $i. available test cases are: ${all_test_cases[@]}"
-           fi
-       done
-       info "tests to execute: ${TEST_CASE}."
-    else
-       error "lack of testcase name"
-    fi
-}
 function run_test(){
 
-    test_suite=$1
-    echo "Running test suite $test_suite"
+    test_exec=$1
 
-    case $test_suite in
+    case $test_exec in
         "rubbos")
-            info "Running rubbos test suite"
-            test_file="/home/opnfv/bottlenecks/testsuites/rubbos/testsuite_story/rubbos_story1"
-            if [[ -f $test_file ]]; then
-                testcases=($(cat $test_file))
-            else
-                error "no rubbos test suite file"
-            fi
-
-            for i in "${testcases[@]}"; do
-                #check if the testcase is legal or not
-                check_testcase -rubbos $i
-                #adjust config parameters, different test suite has different methods, take rubbos as an example
-                #run test case, different test suite has different methods
-                file=${BASEDIR}/testsuites/rubbos/testcase_cfg/${i}.yaml
-                python /home/opnfv/bottlenecks/testsuites/rubbos/run_rubbos.py -c $file
-            done
+            info "After OPNFV Colorado release, Rubbos testsuite is not updating anymore.
+                  This entrance for running Rubbos within Bottlenecks is no longer supported.
+                  This testsuite is also not in the release plan with Bottlenecks since then.
+                  If you want to run Rubbos, please refer to earlier releases."
         ;;
         "vstf")
-            info "Running vstf test suite"
-            test_file="/home/opnfv/bottlenecks/testsuites/vstf/testsuite_story/vstf_story1"
-            if [[ -f $test_file ]]; then
-                testcases=($(cat $test_file))
-            else
-                error "no vstf test suite file "
-            fi
-
-            for i in "${testcases[@]}"; do
-                #check if the testcase is legal or not
-                check_testcase -vstf $i
-                #adjust config parameters
-                #run test case
-                file=${BASEDIR}/testsuites/vstf/testcase_cfg/${i}.yaml
-                python /home/opnfv/bottlenecks/testsuites/vstf/run_vstf.py -c $file
-            done
+            info "After OPNFV Colorado release, VSTF testsuite is not updating anymore.
+                  This entrance for running VSTF within Bottlenecks is no longer supported.
+                  This testsuite is also not in the release plan with Bottlenecks since then.
+                  If you want to run VSTF, please refer to earlier releases."
         ;;
-        "posca")
-            info "Running posca test suite"
-            test_file="/home/opnfv/bottlenecks/testsuites/posca/testsuite_story/posca_factor_test"
-            if [[ -f $test_file ]]; then
-                testcases=($(cat $test_file))
-            else
-                error "no posca test suite file "
-            fi
-
-            for i in "${testcases[@]}"; do
-                #check if the testcase is legal or not
-                check_testcase -posca $i
-                #adjust config parameters
-                #run test case
-                file=${BASEDIR}/testsuites/posca/testcase_cfg/${i}.yaml
-                python /home/opnfv/bottlenecks/testsuites/posca/run_posca.py -c $file
-            done
+        *)
+            info "Composing up dockers"
+            docker-compose -f /home/opnfv/bottlenecks/docker/bottleneck-compose/docker-compose.yml up -d
+            info "Pulling tutum/influxdb for yardstick"
+            docker pull tutum/influxdb:0.13
+#            info "Copying testing scripts to docker"
+#            docker cp /home/opnfv/bottlenecks/run_posca.sh bottleneckcompose_bottlenecks_1:/home/opnfv/bottlenecks
+            sleep 5
+            info "Running posca test story: $test_exec"
+            docker exec bottleneckcompose_bottlenecks_1 python ${POSCA_SCRIPT}/run_posca.py $test_level $test_exec
         ;;
     esac
 }
@@ -139,8 +85,12 @@ while [[ $# > 0 ]]
         -r|--report)
             report="-r"
         ;;
-        -s|--suite)
-            SUITE="$2"
+        -s|--teststory)
+            teststory="$2"
+            shift
+        ;;
+        -c|--testcase)
+            testcase="$2"
             shift
         ;;
         *)
@@ -167,23 +117,48 @@ ssh-keygen -t rsa -f $Bottlenecks_key_dir/bottlenecks_key/bottlenecks_key -q -N
 chmod 600 $Bottlenecks_key_dir/bottlenecks_key/*
 
 #check the test suite name is correct
-if [ "${SUITE}" != "" ]; then
-    suite_exec=(${SUITE//,/ })
-    for i in "${suite_exec[@]}"; do
-        if [[ " ${arr_test_suite[*]} " != *" $i "* ]]; then
-            error "unkown test suite: $i"
+if [ "${teststory}" != "" ]; then
+    teststory_exec=(${teststory//,/ })
+    for i in "${teststory_exec[@]}"; do
+        if [[ " ${all_test_story[*]} " != *" $i "* ]]; then
+            error "Unkown test story: $i"
         fi
     done
-    info "Tests to execute: ${SUITE}"
 fi
 
-# Source credentials
-info "Sourcing Credentials openstack.creds to run the tests.."
-source /home/opnfv/bottlenecks/config/openstack.creds
+#check the test case name is correct
+if [ "${testcase}" != "" ]; then
+    testcase_exec=(${testcase//,/ })
+    for i in "${testcase_exec[@]}"; do
+        if [[ " ${all_test_case[*]} " != *" $i "* ]]; then
+            error "Unkown test case: $i"
+        fi
+    done
+fi
+
+#clean up correlated docker images
+bash ${BASEDIR}/docker/docker_cleanup.sh -d bottlenecks --debug
+bash ${BASEDIR}/docker/docker_cleanup.sh -d yardstick --debug
+bash ${BASEDIR}/docker/docker_cleanup.sh -d kibana --debug
+bash ${BASEDIR}/docker/docker_cleanup.sh -d elasticsearch --debug
+bash ${BASEDIR}/docker/docker_cleanup.sh -d influxdb --debug
 
 #run tests
-if [ "${SUITE}" != "" ]; then
-    for i in "${suite_exec[@]}"; do
+if [ "${teststory}" != "" ]; then
+    test_level="teststory"
+    for i in "${teststory_exec[@]}"; do
+        info "Start to run test story $i"
         run_test $i
     done
 fi
+
+if [ "${testcase}" != "" ]; then
+    test_level="testcase"
+    for i in "${testcase_exec[@]}"; do
+        info "Start to run test case $i"
+        run_test $i
+    done
+fi
+
+# echo "Bottlenecks: cleaning up docker-compose images and dockers"
+# docker-compose -f $BASEDIR/docker/bottleneck-compose/docker-compose.yml down --rmi all
\ No newline at end of file