aboutsummaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
Diffstat (limited to 'ci')
-rwxr-xr-x[-rw-r--r--]ci/exec_test.sh17
-rw-r--r--ci/run_tests.py36
-rw-r--r--ci/tier_handler.py78
3 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: