341aab590d0f219f0e57cc02099ed68d448fdf7e
[releng.git] / jjb / bottlenecks / bottlenecks-run-suite.sh
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10 #set -e
11 [[ $GERRIT_REFSPEC_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
12 BOTTLENECKS_IMAGE=opnfv/bottlenecks
13 REPORT="True"
14
15 RELENG_REPO=${WORKSPACE}/releng
16 [ -d ${RELENG_REPO} ] && rm -rf ${RELENG_REPO}
17 git clone https://gerrit.opnfv.org/gerrit/releng ${RELENG_REPO} >${redirect}
18
19 OPENRC=/tmp/admin_rc.sh
20 OS_CACERT=/tmp/os_cacert
21
22 BOTTLENECKS_CONFIG=/tmp
23
24 if [[ $SUITE_NAME == *posca* ]]; then
25     POSCA_SCRIPT=/home/opnfv/bottlenecks/testsuites/posca
26
27     # Preparing OpenStack RC and Cacert files
28     echo "BOTTLENECKS INFO: fetching os credentials from $INSTALLER_TYPE"
29     if [[ $INSTALLER_TYPE == 'compass' ]]; then
30         if [[ ${BRANCH} == 'master' ]]; then
31             ${RELENG_REPO}/utils/fetch_os_creds.sh -d ${OPENRC} -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} -o ${OS_CACERT} >${redirect}
32             if [[ -f ${OS_CACERT} ]]; then
33                 echo "BOTTLENECKS INFO: successfully fetching os_cacert for openstack: ${OS_CACERT}"
34             else
35                 echo "BOTTLENECKS ERROR: couldn't find os_cacert file: ${OS_CACERT}, please check if the it's been properly provided."
36                 exit 1
37             fi
38         else
39             ${RELENG_REPO}/utils/fetch_os_creds.sh -d ${OPENRC} -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}  >${redirect}
40         fi
41     fi
42
43     if [[ -f ${OPENRC} ]]; then
44         echo "BOTTLENECKS INFO: openstack credentials path is ${OPENRC}"
45         if [[ $INSTALLER_TYPE == 'compass' && ${BRANCH} == 'master' ]]; then
46             echo "BOTTLENECKS INFO: writing ${OS_CACERT} to ${OPENRC}"
47             echo "export OS_CACERT=${OS_CACERT}" >> ${OPENRC}
48         fi
49         cat ${OPENRC}
50     else
51         echo "BOTTLENECKS ERROR: couldn't find openstack rc file: ${OPENRC}, please check if the it's been properly provided."
52         exit 1
53     fi
54
55     # Finding and crearting POD description files from different deployments
56     ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
57
58     if [ "$INSTALLER_TYPE" == "fuel" ]; then
59         echo "Fetching id_rsa file from jump_server $INSTALLER_IP..."
60         sshpass -p r00tme sudo scp $ssh_options root@${INSTALLER_IP}:~/.ssh/id_rsa ${BOTTLENECKS_CONFIG}/id_rsa
61     fi
62
63     if [ "$INSTALLER_TYPE" == "apex" ]; then
64         echo "Fetching id_rsa file from jump_server $INSTALLER_IP..."
65         sudo scp $ssh_options stack@${INSTALLER_IP}:~/.ssh/id_rsa ${BOTTLENECKS_CONFIG}/id_rsa
66     fi
67
68     set +e
69
70     sudo pip install virtualenv
71
72     cd ${RELENG_REPO}/modules
73     sudo virtualenv venv
74     source venv/bin/activate
75     sudo pip install -e ./ >/dev/null
76     sudo pip install netaddr
77
78     if [[ ${INSTALLER_TYPE} == compass ]]; then
79         options="-u root -p root"
80     elif [[ ${INSTALLER_TYPE} == fuel ]]; then
81         options="-u root -p r00tme"
82     elif [[ ${INSTALLER_TYPE} == apex ]]; then
83         options="-u stack -k /root/.ssh/id_rsa"
84     else
85         echo "Don't support to generate pod.yaml on ${INSTALLER_TYPE} currently."
86     fi
87
88     cmd="sudo python ${RELENG_REPO}/utils/create_pod_file.py -t ${INSTALLER_TYPE} \
89          -i ${INSTALLER_IP} ${options} -f ${BOTTLENECKS_CONFIG}/pod.yaml \
90          -s ${BOTTLENECKS_CONFIG}/id_rsa"
91     echo ${cmd}
92     ${cmd}
93
94     deactivate
95
96     set -e
97
98     cd ${WORKSPACE}
99
100     if [ -f ${BOTTLENECKS_CONFIG}/pod.yaml ]; then
101         echo "FILE: ${BOTTLENECKS_CONFIG}/pod.yaml:"
102         cat ${BOTTLENECKS_CONFIG}/pod.yaml
103     else
104         echo "ERROR: cannot find file ${BOTTLENECKS_CONFIG}/pod.yaml. Please check if it is existing."
105         sudo ls -al ${BOTTLENECKS_CONFIG}
106     fi
107
108     # Pulling Bottlenecks docker and passing environment variables
109     echo "INFO: pulling Bottlenecks docker ${DOCKER_TAG}"
110     docker pull opnfv/bottlenecks:${DOCKER_TAG} >$redirect
111
112     opts="--privileged=true -id"
113     envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
114           -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NET=${EXTERNAL_NETWORK} \
115           -e BRANCH=${BRANCH} -e GERRIT_REFSPEC_DEBUG=${GERRIT_REFSPEC_DEBUG} \
116           -e BOTTLENECKS_DB_TARGET=${BOTTLENECKS_DB_TARGET} -e PACKAGE_URL=${PACKAGE_URL} \
117           -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO}"
118     docker_volume="-v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp"
119
120     cmd="docker run ${opts} ${envs} --name bottlenecks-load-master ${docker_volume} opnfv/bottlenecks:${DOCKER_TAG} /bin/bash"
121     echo "BOTTLENECKS INFO: running docker run commond: ${cmd}"
122     ${cmd} >$redirect
123     sleep 5
124
125     # Running test cases through Bottlenecks docker
126     if [[ $SUITE_NAME == posca_stress_traffic ]]; then
127         TEST_CASE=posca_factor_system_bandwidth
128         testcase_cmd="docker exec bottlenecks-load-master python ${POSCA_SCRIPT}/../run_testsuite.py testcase $TEST_CASE $REPORT"
129         echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
130         ${testcase_cmd} >$redirect
131     elif [[ $SUITE_NAME == posca_stress_ping ]]; then
132         TEST_CASE=posca_factor_ping
133         testcase_cmd="docker exec bottlenecks-load-master python ${POSCA_SCRIPT}/../run_testsuite.py testcase $TEST_CASE $REPORT"
134         echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
135         ${testcase_cmd} >$redirect
136     fi
137 fi