add united test suite entrance script 73/11573/1
authorMatthewLi <matthew.lijun@huawei.com>
Thu, 24 Mar 2016 09:29:44 +0000 (05:29 -0400)
committerMatthewLi <matthew.lijun@huawei.com>
Thu, 24 Mar 2016 09:29:44 +0000 (05:29 -0400)
Change-Id: I60bb338604811f9875c69c2e71d8af5173985847
JIRA: BOTTLENECK-45

ci/run_tests.sh [new file with mode: 0755]

diff --git a/ci/run_tests.sh b/ci/run_tests.sh
new file mode 100755 (executable)
index 0000000..95f53d5
--- /dev/null
@@ -0,0 +1,146 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
+#
+# 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 run the tests in bottlenecks auto.
+
+usage:
+    bash $(basename "$0") [-h|--help] [-s <test suite>]
+
+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
+
+examples:
+    $(basename "$0")
+    $(basename "$0") -s rubbos"
+
+report=true
+
+arr_test_suite=(rubbos vstf)
+
+function check_testcase(){
+
+    check_suite="$1"
+    case $check_suite in
+         "-rubbos")
+             $SUITE_PREFIX=$SUITE_PREFIX_CONFIG/rubbos
+         ;;
+         "-vstf")
+             $SUITE_PREFIX=$SUITE_PREFIX_CONFIG/vstf
+         ;;
+    esac
+
+    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_test_cases[*]} " != *" $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"
+
+    case $test_suite in
+        "rubbos")
+            info "Running rubbos test suite"
+            test_file="/home/opnfv/bottlenecks/config/testcase_conf/rubbos.yaml"
+            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
+
+            done
+        ;;
+        "vstf")
+            info "Running vstf test suite"
+            test_file="/home/opnfv/bottlenecks/config/testcase_conf/vstf.yaml"
+            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
+            done
+        ;;
+    esac
+}
+
+while [[ $# > 0 ]]
+    do
+    key="$1"
+    case $key in
+        -h|--help)
+            echo "$usage"
+            exit 0
+            shift
+        ;;
+        -r|--report)
+            report="-r"
+        ;;
+        -s|--suite)
+            SUITE="$2"
+            shift
+        ;;
+        *)
+            echo "unkown option $1 $2"
+            exit 1
+        ;;
+     esac
+     shift
+done
+
+BASEDIR=`dirname $0`
+source ${BASEDIR}/common.sh
+
+#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"
+        fi
+    done
+    info "Tests to execute: ${SUITE}"
+fi
+
+#run tests
+if [ "${SUITE}" != "" ]; then
+    for i in "${suite_exec[@]}"; do
+        run_test $i
+    done
+fi