Merge "POSCA test case complete"
[bottlenecks.git] / run_tests.sh
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2016 Huawei Technologies Co.,Ltd and others.
4 #
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10
11 usage="Script to run the tests in bottlenecks auto.
12
13 usage:
14     bash $(basename "$0") [-h|--help] [-s <test suite>]
15
16 where:
17     -h|--help         show the help text
18     -r|--report       push results to DB(true by default)
19     -s|--suite        run specific test suite
20       <test suite>    one of the following:
21                             rubbos, vstf
22
23 examples:
24     $(basename "$0")
25     $(basename "$0") -s rubbos"
26
27 report=true
28
29 arr_test_suite=(rubbos vstf posca)
30
31 Bottlenecks_key_dir="/home/opnfv/bottlenecks/utils/infra_setup"
32
33 function check_testcase(){
34
35     check_suite="$1"
36     case $check_suite in
37          "-rubbos")
38              SUITE_PREFIX=$SUITE_PREFIX_CONFIG/rubbos/testcase_cfg
39          ;;
40          "-vstf")
41              SUITE_PREFIX=$SUITE_PREFIX_CONFIG/vstf/testcase_cfg
42          ;;
43          "-posca")
44              SUITE_PREFIX=$SUITE_PREFIX_CONFIG/posca/testcase_cfg
45          ;;
46     esac
47
48     TEST_CASE=$2
49
50     #find all the test case yaml files first
51     find $SUITE_PREFIX -name "*yaml" > /tmp/all_testcases.yaml
52     all_testcases_insuite=`cat /tmp/all_testcases.yaml | awk -F '/' '{print $NF}' | awk -F '.' '{print $1}'`
53     all_testcases=(${all_testcases_insuite})
54
55     if [ "${TEST_CASE}" != "" ]; then
56        testcase_exec=(${TEST_CASE// /})
57        for i in "${testcase_exec[@]}"; do
58            if [[ " ${all_testcases[*]} " != *" $i "* ]]; then
59                error "unknown test case: $i. available test cases are: ${all_test_cases[@]}"
60            fi
61        done
62        info "tests to execute: ${TEST_CASE}."
63     else
64        error "lack of testcase name"
65     fi
66 }
67 function run_test(){
68
69     test_suite=$1
70     echo "Running test suite $test_suite"
71
72     case $test_suite in
73         "rubbos")
74             info "Running rubbos test suite"
75             test_file="/home/opnfv/bottlenecks/testsuites/rubbos/testsuite_story/rubbos_story1"
76             if [[ -f $test_file ]]; then
77                 testcases=($(cat $test_file))
78             else
79                 error "no rubbos test suite file"
80             fi
81
82             for i in "${testcases[@]}"; do
83                 #check if the testcase is legal or not
84                 check_testcase -rubbos $i
85                 #adjust config parameters, different test suite has different methods, take rubbos as an example
86                 #run test case, different test suite has different methods
87                 file=${BASEDIR}/testsuites/rubbos/testcase_cfg/${i}.yaml
88                 python /home/opnfv/bottlenecks/testsuites/rubbos/run_rubbos.py -c $file
89             done
90         ;;
91         "vstf")
92             info "Running vstf test suite"
93             test_file="/home/opnfv/bottlenecks/testsuites/vstf/testsuite_story/vstf_story1"
94             if [[ -f $test_file ]]; then
95                 testcases=($(cat $test_file))
96             else
97                 error "no vstf test suite file "
98             fi
99
100             for i in "${testcases[@]}"; do
101                 #check if the testcase is legal or not
102                 check_testcase -vstf $i
103                 #adjust config parameters
104                 #run test case
105                 file=${BASEDIR}/testsuites/vstf/testcase_cfg/${i}.yaml
106                 python /home/opnfv/bottlenecks/testsuites/vstf/run_vstf.py -c $file
107             done
108         ;;
109         "posca")
110             info "Running posca test suite"
111             test_file="/home/opnfv/bottlenecks/testsuites/posca/testsuite_story/posca_factor_test"
112             if [[ -f $test_file ]]; then
113                 testcases=($(cat $test_file))
114             else
115                 error "no posca test suite file "
116             fi
117
118             for i in "${testcases[@]}"; do
119                 #check if the testcase is legal or not
120                 check_testcase -posca $i
121                 #adjust config parameters
122                 #run test case
123                 file=${BASEDIR}/testsuites/posca/testcase_cfg/${i}.yaml
124                 python /home/opnfv/bottlenecks/testsuites/posca/run_posca.py -c ${i}
125             done
126         ;;
127     esac
128 }
129
130 while [[ $# > 0 ]]
131     do
132     key="$1"
133     case $key in
134         -h|--help)
135             echo "$usage"
136             exit 0
137             shift
138         ;;
139         -r|--report)
140             report="-r"
141         ;;
142         -s|--suite)
143             SUITE="$2"
144             shift
145         ;;
146         *)
147             echo "unkown option $1 $2"
148             exit 1
149         ;;
150      esac
151      shift
152 done
153
154 BASEDIR=`dirname $0`
155 source ${BASEDIR}/common.sh
156
157 #Add random key generation
158 if [ ! -d $Bottlenecks_key_dir/bottlenecks_key ]; then
159     mkdir $Bottlenecks_key_dir/bottlenecks_key
160 else
161     rm -rf $Bottlenecks_key_dir/bottlenecks_key
162     mkdir $Bottlenecks_key_dir/bottlenecks_key
163 fi
164 chmod 700 $Bottlenecks_key_dir/bottlenecks_key
165
166 ssh-keygen -t rsa -f $Bottlenecks_key_dir/bottlenecks_key/bottlenecks_key -q -N ""
167 chmod 600 $Bottlenecks_key_dir/bottlenecks_key/*
168
169 #check the test suite name is correct
170 if [ "${SUITE}" != "" ]; then
171     suite_exec=(${SUITE//,/ })
172     for i in "${suite_exec[@]}"; do
173         if [[ " ${arr_test_suite[*]} " != *" $i "* ]]; then
174             error "unkown test suite: $i"
175         fi
176     done
177     info "Tests to execute: ${SUITE}"
178 fi
179
180 # Source credentials
181 info "Sourcing Credentials openstack.creds to run the tests.."
182 source /home/opnfv/bottlenecks/config/openstack.creds
183
184 #run tests
185 if [ "${SUITE}" != "" ]; then
186     for i in "${suite_exec[@]}"; do
187         run_test $i
188     done
189 fi