From 66df82a76334015e3e2d25ddcc22b343b110320c Mon Sep 17 00:00:00 2001 From: Viktor Tikkanen Date: Thu, 11 Feb 2016 09:04:30 +0200 Subject: Enadled --serial option for run_tests.sh It could be useful to execute e.g. Tempest test cases in a single thread in order to troubleshoot possible concurrency problems. Change-Id: I5e5fc190fb4483ff075a8f837a8d4116ece90c80 Signed-off-by: Viktor Tikkanen --- docker/run_tests.sh | 12 +++++++++++- docs/userguide/runfunctest.rst | 5 +++++ testcases/VIM/OpenStack/CI/libraries/run_tempest.py | 13 +++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/docker/run_tests.sh b/docker/run_tests.sh index 83806d6f..0f9e8a30 100755 --- a/docker/run_tests.sh +++ b/docker/run_tests.sh @@ -22,6 +22,7 @@ where: -h|--help show this help text -r|--report push results to database (false by default) -n|--no-clean do not clean OpenStack resources after test run + -s|--serial run tests in one thread -t|--test run specific set of tests one or more of the following separated by comma: vping_ssh,vping_userdata,odl,rally,tempest,vims,onos,promise,ovno @@ -38,6 +39,8 @@ examples: offline=false report="" clean=true +serial=false + # Get the list of runnable tests # Check if we are in CI mode @@ -86,6 +89,10 @@ function run_test(){ if [ $clean == "false" ]; then clean_flag="-n" fi + serial_flag="" + if [ $serial == "true" ]; then + serial_flag="-s" + fi case $test_name in "vping_ssh") @@ -115,7 +122,7 @@ function run_test(){ "tempest") info "Running Tempest tests..." python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_tempest.py \ - --debug -m $clean_flag custom ${report} + --debug $serial_flag $clean_flag -m custom ${report} # save tempest.conf for further troubleshooting tempest_conf="${RALLY_VENV_DIR}/tempest/for-deployment-*/tempest.conf" if [ -f ${tempest_conf} ]; then @@ -213,6 +220,9 @@ while [[ $# > 0 ]] -n|--no-clean) clean=false ;; + -s|--serial) + serial=true + ;; -t|--test|--tests) TEST="$2" shift diff --git a/docs/userguide/runfunctest.rst b/docs/userguide/runfunctest.rst index 61511413..36433374 100644 --- a/docs/userguide/runfunctest.rst +++ b/docs/userguide/runfunctest.rst @@ -26,6 +26,7 @@ several options:: -h|--help show this help text -r|--report push results to database (false by default) -n|--no-clean do not clean up OpenStack resources after test run + -s|--serial run tests in one thread -t|--test run specific set of tests one or more of the following separated by comma: vping_ssh,vping_userdata,odl,rally,tempest,vims,onos,promise,ovno @@ -58,6 +59,10 @@ is called once by *prepare_env.sh* when setting up the Functest environment to snapshot all the OpenStack resources (images, networks, volumes, security groups, tenants, users) so that an eventual cleanup does not remove any of this defaults. +The *-s* option forces execution of test cases in a single thread. Currently this +option affects Tempest test cases only and can be used e.g. for troubleshooting +concurrency problems. + The script *$repos_dir/functest/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py* is normally called after a test execution if the *-n* is not specified. It diff --git a/testcases/VIM/OpenStack/CI/libraries/run_tempest.py b/testcases/VIM/OpenStack/CI/libraries/run_tempest.py index 9638a274..29466918 100644 --- a/testcases/VIM/OpenStack/CI/libraries/run_tempest.py +++ b/testcases/VIM/OpenStack/CI/libraries/run_tempest.py @@ -33,8 +33,14 @@ modes = ['full', 'smoke', 'baremetal', 'compute', 'data_processing', """ tests configuration """ parser = argparse.ArgumentParser() -parser.add_argument("-d", "--debug", help="Debug mode", action="store_true") -parser.add_argument("-m", "--mode", help="Tempest test mode [smoke, all]", +parser.add_argument("-d", "--debug", + help="Debug mode", + action="store_true") +parser.add_argument("-s", "--serial", + help="Run tests in one thread", + action="store_true") +parser.add_argument("-m", "--mode", + help="Tempest test mode [smoke, all]", default="smoke") parser.add_argument("-r", "--report", help="Create json result file", @@ -292,6 +298,9 @@ def main(): else: MODE = "--set "+args.mode + if args.serial: + MODE = "--concur 1 "+MODE + if not os.path.exists(TEMPEST_RESULTS_DIR): os.makedirs(TEMPEST_RESULTS_DIR) -- cgit 1.2.3-korg