From 224f176cee5544483f3a37bb59a3d9aae1791e44 Mon Sep 17 00:00:00 2001 From: Cédric Ollivier Date: Wed, 24 Aug 2016 17:55:10 +0200 Subject: Stop calling exec_test.sh in the middle of python scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now run_tests.py calls directly OpenDaylightTesting.functest_run(). It mainly reads env vars as exec_test.sh does. Change-Id: Ibb44a7ca67e9218d34d13b8dd539e772902fe5b8 Signed-off-by: Cédric Ollivier (cherry picked from commit d6484df9b602f0888450ef1e29ccc0a5f6c94675) --- ci/run_tests.py | 14 ++++++-- testcases/Controllers/ODL/OpenDaylightTesting.py | 45 ++++++++++++++++++++++-- testcases/Controllers/ODL/__init__.py | 0 testcases/Controllers/__init__.py | 0 4 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 testcases/Controllers/ODL/__init__.py create mode 100644 testcases/Controllers/__init__.py diff --git a/ci/run_tests.py b/ci/run_tests.py index 982567217..17481780e 100755 --- a/ci/run_tests.py +++ b/ci/run_tests.py @@ -13,8 +13,10 @@ import datetime import os import re import sys + import functest.ci.generate_report as generate_report import functest.ci.tier_builder as tb +from functest.testcases.Controllers.ODL.OpenDaylightTesting import ODLTestCases import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as ft_utils import functest.utils.openstack_clean as os_clean @@ -100,9 +102,15 @@ def run_test(test, tier_name): if REPORT_FLAG: flags += " -r" - cmd = ("%s%s" % (EXEC_SCRIPT, flags)) - logger.debug("Executing command '%s'" % cmd) - result = ft_utils.execute_command(cmd, exit_on_error=False) + if test_name == 'odl': + result = ODLTestCases.functest_run() + if result and REPORT_FLAG: + result = ODLTestCases.push_to_db() + result = not result + else: + cmd = ("%s%s" % (EXEC_SCRIPT, flags)) + logger.debug("Executing command '%s'" % cmd) + result = ft_utils.execute_command(cmd, exit_on_error=False) if CLEAN_FLAG: cleanup() diff --git a/testcases/Controllers/ODL/OpenDaylightTesting.py b/testcases/Controllers/ODL/OpenDaylightTesting.py index d3bc0978b..22df9f667 100755 --- a/testcases/Controllers/ODL/OpenDaylightTesting.py +++ b/testcases/Controllers/ODL/OpenDaylightTesting.py @@ -6,6 +6,7 @@ import os import re import shutil import sys +import urlparse from robot import run from robot.api import ExecutionResult, ResultVisitor @@ -14,6 +15,7 @@ from robot.utils.robottime import timestamp_to_secs import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as ft_utils +import functest.utils.openstack_utils as op_utils class ODLResultVisitor(ResultVisitor): @@ -60,7 +62,7 @@ class ODLTestCases: except IOError as e: cls.logger.error( "Cannot copy OPNFV's testcases to ODL directory: " - "%s" % e.strerror) + "%s" % str(e)) return False return True @@ -76,7 +78,7 @@ class ODLTestCases: line.rstrip()) return True except Exception as e: - cls.logger.error("Cannot set ODL creds: %s" % e.strerror) + cls.logger.error("Cannot set ODL creds: %s" % str(e)) return False @classmethod @@ -95,7 +97,7 @@ class ODLTestCases: 'RESTCONFPORT:' + kwargs['odlrestconfport']] except KeyError as e: cls.logger.error("Cannot run ODL testcases. Please check " - "%s" % e.strerror) + "%s" % str(e)) return False if (cls.copy_opnf_testcases() and cls.set_robotframework_vars(odlusername, odlpassword)): @@ -121,6 +123,43 @@ class ODLTestCases: else: return False + @classmethod + def functest_run(cls): + kclient = op_utils.get_keystone_client() + keystone_url = kclient.service_catalog.url_for( + service_type='identity', endpoint_type='publicURL') + neutron_url = kclient.service_catalog.url_for( + service_type='network', endpoint_type='publicURL') + kwargs = {'keystoneip': urlparse.urlparse(keystone_url).hostname} + kwargs['neutronip'] = urlparse.urlparse(neutron_url).hostname + kwargs['odlip'] = kwargs['neutronip'] + kwargs['odlwebport'] = '8080' + kwargs['odlrestconfport'] = '8181' + kwargs['odlusername'] = 'admin' + kwargs['odlpassword'] = 'admin' + try: + installer_type = os.environ['INSTALLER_TYPE'] + kwargs['osusername'] = os.environ['OS_USERNAME'] + kwargs['ostenantname'] = os.environ['OS_TENANT_NAME'] + kwargs['ospassword'] = os.environ['OS_PASSWORD'] + if installer_type == 'fuel': + kwargs['odlwebport'] = '8282' + elif installer_type == 'apex': + kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP'] + kwargs['odlwebport'] = '8181' + elif installer_type == 'joid': + kwargs['odlip'] = os.environ['SDN_CONTROLLER'] + elif installer_type == 'compass': + kwargs['odlwebport'] = '8181' + else: + kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP'] + except KeyError as e: + cls.logger.error("Cannot run ODL testcases. Please check env var: " + "%s" % str(e)) + return False + + return cls.run(**kwargs) + @classmethod def push_to_db(cls): try: diff --git a/testcases/Controllers/ODL/__init__.py b/testcases/Controllers/ODL/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/testcases/Controllers/__init__.py b/testcases/Controllers/__init__.py new file mode 100644 index 000000000..e69de29bb -- cgit 1.2.3-korg