Merge "Bug fix: yardstick result return no content"
[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\n"
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 "Composing up dockers"
111             docker-compose -f /home/opnfv/bottlenecks/docker/bottleneck-compose/docker-compose.yml up -d
112             info "Pulling tutum/influxdb for yardstick"
113             docker pull tutum/influxdb:0.13
114             info "Copying testing scripts to docker"
115             docker cp /home/opnfv/bottlenecks/run_posca.sh bottleneckcompose_bottlenecks_1:/home/opnfv/bottlenecks
116             sleep 5
117             info "Running posca test suite"
118             docker exec bottleneckcompose_bottlenecks_1 bash /home/opnfv/bottlenecks/run_posca.sh
119         ;;
120     esac
121 }
122
123 while [[ $# > 0 ]]
124     do
125     key="$1"
126     case $key in
127         -h|--help)
128             echo "$usage"
129             exit 0
130             shift
131         ;;
132         -r|--report)
133             report="-r"
134         ;;
135         -s|--suite)
136             SUITE="$2"
137             shift
138         ;;
139         *)
140             echo "unkown option $1 $2"
141             exit 1
142         ;;
143      esac
144      shift
145 done
146
147 BASEDIR=`dirname $0`
148 source ${BASEDIR}/common.sh
149
150 #Add random key generation
151 if [ ! -d $Bottlenecks_key_dir/bottlenecks_key ]; then
152     mkdir $Bottlenecks_key_dir/bottlenecks_key
153 else
154     rm -rf $Bottlenecks_key_dir/bottlenecks_key
155     mkdir $Bottlenecks_key_dir/bottlenecks_key
156 fi
157 chmod 700 $Bottlenecks_key_dir/bottlenecks_key
158
159 ssh-keygen -t rsa -f $Bottlenecks_key_dir/bottlenecks_key/bottlenecks_key -q -N ""
160 chmod 600 $Bottlenecks_key_dir/bottlenecks_key/*
161
162 #check the test suite name is correct
163 if [ "${SUITE}" != "" ]; then
164     suite_exec=(${SUITE//,/ })
165     for i in "${suite_exec[@]}"; do
166         if [[ " ${arr_test_suite[*]} " != *" $i "* ]]; then
167             error "unkown test suite: $i"
168         fi
169     done
170     info "Tests to execute: ${SUITE}"
171 fi
172
173 # Source credentials
174 info "Sourcing Credentials openstack.creds to run the tests.."
175 source /home/opnfv/bottlenecks/config/openstack.creds
176
177 #run tests
178 if [ "${SUITE}" != "" ]; then
179     for i in "${suite_exec[@]}"; do
180         run_test $i
181     done
182 fi