From f403b2e211d65e5117a5fa03a6ae8c8f3a2e4df9 Mon Sep 17 00:00:00 2001 From: yuyang Date: Mon, 22 May 2017 10:23:55 +0800 Subject: Add test name check function and cleanup JIRA: BOTTLENECK-158 Add test case/story name check and cleanup environment option. Change-Id: I07609c089ca78b0d2760c09c0312d7d1106c815a Signed-off-by: yuyang (cherry picked from commit 95748aca5de2e906b0f555e7dbf3829e397d6415) --- common.sh | 29 ----- config/__init__.py | 0 config/bottlenecks_cfg.yaml | 10 -- run_tests.sh | 132 ++++++++++++--------- testsuites/posca/testsuite_story/posca_factor_test | 4 - .../posca/testsuite_story/posca_factor_test.yaml | 4 + 6 files changed, 80 insertions(+), 99 deletions(-) delete mode 100755 common.sh delete mode 100644 config/__init__.py delete mode 100644 config/bottlenecks_cfg.yaml delete mode 100644 testsuites/posca/testsuite_story/posca_factor_test create mode 100644 testsuites/posca/testsuite_story/posca_factor_test.yaml diff --git a/common.sh b/common.sh deleted file mode 100755 index 15cf2ecb..00000000 --- a/common.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -mkdir -p /home/opnfv/bottlenecks/config -config_file=/home/opnfv/bottlenecks/config/bottlenecks_cfg.yaml - -if [ ! -f ${config_file} ]; then - default_config_file=$(find /home/opnfv -name bottlenecks_cfg.yaml) - cp $default_config_file $config_file - echo "bottlenecks_cfg.yaml not provided. Using default one" -fi - -SUITE_PREFIX_CONFIG=$(cat $config_file | grep -w suite_prefix_config | awk 'END {print $NF}') - -info () { - logger -s -t "bottlenecks.info" "$*" -} - -error () { - logger -s -t "bottlenecks.error" "$*" - exit 1 -} diff --git a/config/__init__.py b/config/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/config/bottlenecks_cfg.yaml b/config/bottlenecks_cfg.yaml deleted file mode 100644 index 32624d16..00000000 --- a/config/bottlenecks_cfg.yaml +++ /dev/null @@ -1,10 +0,0 @@ -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -suite_prefix_config: /home/opnfv/bottlenecks/testsuites diff --git a/run_tests.sh b/run_tests.sh index eb788242..7e4be373 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -8,14 +8,13 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -usage="Script to run the tests in bottlenecks auto. +usage="Script to run the tests in Bottlenecks. usage: - bash $(basename "$0") [-h|--help] [-s ] [-c ] + bash $(basename "$0") [-h|--help] [-s ] [-c ] [--report] [--cleanup] where: -h|--help show the help text - -r|--report push results to DB(true by default) -s|--teststory run specific test story one of the following: (rubbos, vstf, posca_factor_test) @@ -24,24 +23,69 @@ where: -c|--testcase run specific test case one of the following: (posca_factor_system_bandwidth, posca_factor_ping) + --cleanup cleanup test dockers runing when test is done (false by default) + --report push results to DB (false by default) examples: $(basename "$0") $(basename "$0") -s posca_factor_test" +# Define global variables 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" +POSCA_SUITE="/home/opnfv/bottlenecks/testsuites/posca" +POSCA_TESTCASE="/home/opnfv/bottlenecks/testsuites/posca/testcase_cfg" +POSCA_TESTSTORY="/home/opnfv/bottlenecks/testsuites/posca/testsuite_story" +BASEDIR=`dirname $0` + +report=false +cleanup=false -report=true -#TO-DO add auto-find for test story as for test case -all_test_story=(rubbos vstf posca_factor_test) +# Define alias for log printing +info () { + logger -s -t "bottlenecks.info" "$*" +} + +error () { + logger -s -t "bottlenecks.error" "$*" + exit 1 +} -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}) +# Define check_test function for test case/story list check +function check_test(){ + + TEST_LEVEL="$1" + TEST_NAME="$2" + + if [[ "${TEST_LEVEL}" == "testcase" ]]; then + TEST_CONFIG="${POSCA_TESTCASE}" + else + if [[ "${TEST_LEVEL}" == "teststory" ]]; then + TEST_CONFIG="${POSCA_TESTSTORY}" + else + info "Invalid name for test level: testcase or teststory" + fi + fi + + # Find all the test case yaml files first + find $TEST_CONFIG -name "*yaml" > /tmp/all_tests.yaml + all_tests_insuite=`cat /tmp/all_tests.yaml | awk -F '/' '{print $NF}' | awk -F '.' '{print $1}'` + all_tests=(${all_tests_insuite}) + + if [ "${TEST_NAME}" != "" ]; then + TEST_EXEC=(${TEST_NAME// /}) + for i in "${TEST_EXEC[@]}"; do + if [[ " ${all_tests[*]} " != *" $i "* ]]; then + error "Unknown $TEST_LEVEL: $i. Available $TEST_LEVEL are: ${all_tests[@]}" + fi + done + info "Tests to execute: ${TEST_NAME}." + else + error "Lack of $TEST_LEVEL name" + fi +} +# Define run test function function run_test(){ test_exec=$1 @@ -64,15 +108,14 @@ function run_test(){ 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 + docker exec bottleneckcompose_bottlenecks_1 python ${POSCA_SUITE}/run_posca.py $test_level $test_exec ;; esac } +# Process input variables while [[ $# > 0 ]] do key="$1" @@ -82,9 +125,6 @@ while [[ $# > 0 ]] exit 0 shift ;; - -r|--report) - report="-r" - ;; -s|--teststory) teststory="$2" shift @@ -93,6 +133,12 @@ while [[ $# > 0 ]] testcase="$2" shift ;; + --report) + report=true + ;; + --cleanup) + cleanup=true + ;; *) echo "unkown option $1 $2" exit 1 @@ -101,51 +147,18 @@ while [[ $# > 0 ]] shift done -BASEDIR=`dirname $0` -source ${BASEDIR}/common.sh - -#Add random key generation -if [ ! -d $Bottlenecks_key_dir/bottlenecks_key ]; then - mkdir $Bottlenecks_key_dir/bottlenecks_key -else - rm -rf $Bottlenecks_key_dir/bottlenecks_key - mkdir $Bottlenecks_key_dir/bottlenecks_key -fi -chmod 700 $Bottlenecks_key_dir/bottlenecks_key - -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 [ "${teststory}" != "" ]; then - teststory_exec=(${teststory//,/ }) - for i in "${teststory_exec[@]}"; do - if [[ " ${all_test_story[*]} " != *" $i "* ]]; then - error "Unkown test story: $i" - fi - done -fi - -#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 +# Clean up related 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 +# Run tests if [ "${teststory}" != "" ]; then test_level="teststory" + teststory_exec=(${teststory//,/ }) + check_test $test_level $teststory for i in "${teststory_exec[@]}"; do info "Start to run test story $i" run_test $i @@ -154,11 +167,18 @@ fi if [ "${testcase}" != "" ]; then test_level="testcase" + testcase_exec=(${testcase//,/ }) + check_test $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 +# Clean up testing dockers +if [[ ${cleanup} == true ]]; then + info "Cleaning up docker-compose images and dockers" + docker-compose -f $BASEDIR/docker/bottleneck-compose/docker-compose.yml down --rmi all + bash ${BASEDIR}/docker/docker_cleanup.sh -d influxdb --debug + bash ${BASEDIR}/docker/docker_cleanup.sh -d bottlenecks --debug +fi diff --git a/testsuites/posca/testsuite_story/posca_factor_test b/testsuites/posca/testsuite_story/posca_factor_test deleted file mode 100644 index 9e9909e2..00000000 --- a/testsuites/posca/testsuite_story/posca_factor_test +++ /dev/null @@ -1,4 +0,0 @@ -testcase: -- - posca_factor_system_bandwidth - diff --git a/testsuites/posca/testsuite_story/posca_factor_test.yaml b/testsuites/posca/testsuite_story/posca_factor_test.yaml new file mode 100644 index 00000000..9e9909e2 --- /dev/null +++ b/testsuites/posca/testsuite_story/posca_factor_test.yaml @@ -0,0 +1,4 @@ +testcase: +- + posca_factor_system_bandwidth + -- cgit 1.2.3-korg