Add command to execute the actual tests 09/13609/3
authorjose.lausuch <jose.lausuch@ericsson.com>
Mon, 2 May 2016 17:05:54 +0000 (19:05 +0200)
committerjose.lausuch <jose.lausuch@ericsson.com>
Mon, 2 May 2016 17:37:04 +0000 (19:37 +0200)
JIRA: FUNCTEST-190

Run_tests was generating the tests cases to be executed, but
not actually running them.
This patch also includes a small enhancement to avoid too much
output when showing which tiers to be tested.

Change-Id: Id70cfe44a8263ce7f598386668a33c67a8961b42
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
ci/exec_test.sh
ci/run_tests.py
ci/tier_handler.py

index 2e16fbb..c0a6841 100755 (executable)
@@ -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
index 3b3ed2c..1062144 100644 (file)
@@ -10,6 +10,7 @@
 
 import argparse
 import os
+import subprocess
 import sys
 
 import functest.ci.tier_builder as tb
@@ -80,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())
@@ -98,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)
 
index 5818211..9b444b7 100644 (file)
@@ -50,6 +50,9 @@ class Tier:
     def get_name(self):
         return self.name
 
+    def get_order(self):
+        return self.order
+
     def __str__(self):
         lines = []
         line_max = 50