diff options
-rwxr-xr-x[-rw-r--r--] | ci/exec_test.sh | 17 | ||||
-rw-r--r-- | ci/run_tests.py | 36 | ||||
-rw-r--r-- | ci/tier_handler.py | 78 | ||||
-rw-r--r-- | utils/clean_openstack | 0 |
4 files changed, 101 insertions, 30 deletions
diff --git a/ci/exec_test.sh b/ci/exec_test.sh index 2e16fbb3f..c0a6841c1 100644..100755 --- a/ci/exec_test.sh +++ b/ci/exec_test.sh @@ -66,11 +66,6 @@ function odl_tests(){ } function run_test(){ test_name=$1 - echo -e "\n\n\n\n" - echo "----------------------------------------------" - echo " Running test case: ${test_name}" - echo "----------------------------------------------" - echo "" serial_flag="" if [ $serial == "true" ]; then serial_flag="-s" @@ -78,21 +73,17 @@ function run_test(){ case $test_name in "healthcheck") - echo "Running health check test..." ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/healthcheck.sh ;; "vping_ssh") - echo "Running vPing-SSH test..." python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing_ssh.py \ $debug $report ;; "vping_userdata") - echo "Running vPing-userdata test... " python ${FUNCTEST_REPO_DIR}/testcases/vPing/CI/libraries/vPing_userdata.py \ $debug $report ;; "odl") - echo "Running ODL test..." odl_tests ODL_PORT=$odl_port ODL_IP=$odl_ip KEYSTONE_IP=$keystone_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \ ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh @@ -106,7 +97,6 @@ function run_test(){ fi ;; "tempest") - echo "Running Tempest tests..." python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_tempest.py \ $debug $serial_flag $clean_flag -m smoke $report # save tempest.conf for further troubleshooting @@ -116,18 +106,15 @@ function run_test(){ fi ;; "vims") - echo "Running vIMS test..." python ${FUNCTEST_REPO_DIR}/testcases/vIMS/CI/vIMS.py \ $debug $clean_flag $report ;; "rally") - echo "Running Rally benchmark suite..." python ${FUNCTEST_REPO_DIR}/testcases/VIM/OpenStack/CI/libraries/run_rally-cert.py \ $debug $clean_flag all $report ;; "bgpvpn") - echo "Running BGPVPN Tempest test case..." pushd ${repos_dir}/bgpvpn/ pip install --no-deps -e . popd @@ -146,7 +133,6 @@ bgpvpn = True" >> /etc/tempest/tempest.conf popd ;; "onos") - echo "Running ONOS test case..." if [ $INSTALLER_TYPE == "joid" ]; then python ${FUNCTEST_REPO_DIR}/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py -i joid else @@ -154,16 +140,13 @@ bgpvpn = True" >> /etc/tempest/tempest.conf fi ;; "promise") - echo "Running PROMISE test case..." python ${FUNCTEST_REPO_DIR}/testcases/features/promise.py $debug $report sleep 10 # to let the instances terminate ;; "doctor") - echo "Running Doctor test..." python ${FUNCTEST_REPO_DIR}/testcases/features/doctor.py ;; "ovno") - echo "Running OpenContrail test..." ${repos_dir}/ovno/Testcases/RunTests.sh ;; esac diff --git a/ci/run_tests.py b/ci/run_tests.py index 95bc98021..106214400 100644 --- a/ci/run_tests.py +++ b/ci/run_tests.py @@ -10,11 +10,13 @@ import argparse import os +import subprocess import sys import functest.ci.tier_builder as tb -import functest.utils.functest_logger as ft_logger import functest.utils.clean_openstack as clean_os +import functest.utils.functest_logger as ft_logger +import functest.utils.openstack_utils as os_utils """ arguments """ @@ -50,6 +52,15 @@ def print_separator(str, count=45): logger.info("%s" % line) +def source_rc_file(): + rc_file = os.getenv('creds') + if not os.path.isfile(rc_file): + logger.error("RC file %s does not exist..." % rc_file) + sys.exit(1) + logger.info("Sourcing the OpenStack RC file...") + os_utils.source_credentials(rc_file) + + def cleanup(): print_separator("+") logger.info("Cleaning OpenStack resources...") @@ -70,14 +81,26 @@ def run_test(test): flags += " -r" cmd = ("%s%s" % (EXEC_SCRIPT, flags)) - logger.debug("Executing command %s" % cmd) - + logger.debug("Executing command '%s'" % cmd) print_separator("") + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) + + while p.poll() is None: + line = p.stdout.readline().rstrip() + logger.debug(line) + + if p != 0: + logger.error("The command '%s' failed. Cleaning and exiting." % cmd) + if CLEAN_FLAG: + cleanup() + sys.exit(1) + if CLEAN_FLAG: cleanup() + def run_tier(tier): print_separator("#") logger.info("Running tier '%s'" % tier.get_name()) @@ -88,7 +111,11 @@ def run_tier(tier): def run_all(tiers): - logger.debug("Tiers to be executed:\n\n%s" % tiers) + logger.debug("Tiers to be executed:") + for tier in tiers.get_tiers(): + logger.info("\n - %s. %s:\n\t%s" + % (tier.get_order(), tier.get_name(), tier.get_tests())) + for tier in tiers.get_tiers(): run_tier(tier) @@ -110,6 +137,7 @@ def main(): REPORT_FLAG = True if args.test: + source_rc_file() if _tiers.get_tier(args.test): run_tier(_tiers.get_tier(args.test)) diff --git a/ci/tier_handler.py b/ci/tier_handler.py index 46dbc4347..9b444b7ca 100644 --- a/ci/tier_handler.py +++ b/ci/tier_handler.py @@ -50,12 +50,46 @@ class Tier: def get_name(self): return self.name + def get_order(self): + return self.order + def __str__(self): - return ("Tier info:\n" - " Name: " + self.name + "\n" - " Description: " + self.description + "\n" - " Order: " + str(self.order) + "\n" - " Test cases: " + str(self.get_test_names()) + "\n") + lines = [] + line_max = 50 + line = "" + line_count = 0 + for i in range(len(self.description)): + line += self.description[i] + if line_count >= line_max - 1: + line_count = 0 + lines.append(line) + line = "" + else: + line_count += 1 + if line != "": + lines.append(line) + + out = "" + out += ("+=======================================================+\n") + out += ("| Tier: " + self.name.ljust(47) + "|\n") + out += ("+=======================================================+\n") + out += ("| Order: " + str(self.order).ljust(47) + "|\n") + out += ("| Description: |\n") + for i in range(len(lines)): + out += ("| " + lines[i].ljust(50) + " |\n") + out += ("| Test cases: |\n") + tests = self.get_test_names() + if len(tests) > 0: + for i in range(len(tests)): + out += ("| - %s |\n" % tests[i].ljust(48)) + else: + out += ("| (There are no supported test cases " + .ljust(56) + "|\n") + out += ("| in this tier for the given scenario) " + .ljust(56) + "|\n") + out += ("|".ljust(56) + "|\n") + out += ("+-------------------------------------------------------+\n") + return out class TestCase: @@ -77,10 +111,36 @@ class TestCase: return self.name def __str__(self): - return ("Testcase info:\n" - " Name: " + self.name + "\n" - " Description: " + self.description + "\n" - " " + str(self.dependency) + "\n") + lines = [] + line_max = 50 + line = "" + line_count = 0 + for i in range(len(self.description)): + line += self.description[i] + if line_count >= line_max - 1: + line_count = 0 + lines.append(line) + line = "" + else: + line_count += 1 + if line != "": + lines.append(line) + + out = "" + out += ("+=======================================================+\n") + out += ("| Testcase: " + self.name.ljust(43) + "|\n") + out += ("+=======================================================+\n") + out += ("| Description: |\n") + for i in range(len(lines)): + out += ("| " + lines[i].ljust(50) + " |\n") + out += ("| Dependencies: |\n") + installer = self.dependency.get_installer() + scenario = self.dependency.get_scenario() + out += ("| - Installer: " + installer.ljust(38) + "|\n") + out += ("| - Scenario : " + scenario.ljust(38) + "|\n") + out += ("|".ljust(56) + "|\n") + out += ("+-------------------------------------------------------+\n") + return out class Dependency: diff --git a/utils/clean_openstack b/utils/clean_openstack new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/utils/clean_openstack |