diff options
Diffstat (limited to 'sfc/tests/functest/run_sfc_tests.py')
-rw-r--r-- | sfc/tests/functest/run_sfc_tests.py | 91 |
1 files changed, 67 insertions, 24 deletions
diff --git a/sfc/tests/functest/run_sfc_tests.py b/sfc/tests/functest/run_sfc_tests.py index 64c5b385..7f0eaa8a 100644 --- a/sfc/tests/functest/run_sfc_tests.py +++ b/sfc/tests/functest/run_sfc_tests.py @@ -11,18 +11,17 @@ import importlib import os import time -import yaml +import logging import sys +import yaml -from xtesting.core import testcase +from collections import OrderedDict from opnfv.utils import ovs_logger as ovs_log from opnfv.deployment.factory import Factory as DeploymentFactory from sfc.lib import cleanup as sfc_cleanup from sfc.lib import config as sfc_config from sfc.lib import odl_utils as odl_utils - -from collections import OrderedDict -import logging +from xtesting.core import testcase logger = logging.getLogger(__name__) COMMON_CONFIG = sfc_config.CommonConfig() @@ -30,6 +29,13 @@ COMMON_CONFIG = sfc_config.CommonConfig() class SfcFunctest(testcase.TestCase): + def __init__(self, **kwargs): + super(SfcFunctest, self).__init__(**kwargs) + + self.cleanup_flag = True + if '--nocleanup' in sys.argv: + self.cleanup_flag = False + def __fetch_tackerc_file(self, controller_node): rc_file = os.path.join(COMMON_CONFIG.sfc_test_dir, 'tackerc') if not os.path.exists(rc_file): @@ -98,35 +104,49 @@ class SfcFunctest(testcase.TestCase): time.sleep(10) def __disable_heat_resource_finder_cache(self, nodes, installer_type): - controllers = [node for node in nodes if node.is_controller()] + + if COMMON_CONFIG.installer_type != 'configByUser': + controllers = [node for node in nodes if node.is_controller()] + else: + controllers = [] + for n in COMMON_CONFIG.nodes_pod: + if n['role'] == 'Controller': + controllers.append(n) + logger.info("CONTROLLER : %s", controllers) if installer_type == 'apex': self.__disable_heat_resource_finder_cache_apex(controllers) elif installer_type == "fuel": self.__disable_heat_resource_finder_cache_fuel(controllers) - elif installer_type == "osa" or "compass": + elif installer_type == "osa" or "compass" or "configByUser": pass else: raise Exception('Unsupported installer') def run(self): - deploymentHandler = DeploymentFactory.get_handler( - COMMON_CONFIG.installer_type, - COMMON_CONFIG.installer_ip, - COMMON_CONFIG.installer_user, - COMMON_CONFIG.installer_password, - COMMON_CONFIG.installer_key_file) - cluster = COMMON_CONFIG.installer_cluster - nodes = (deploymentHandler.get_nodes({'cluster': cluster}) - if cluster is not None - else deploymentHandler.get_nodes()) - - self.__disable_heat_resource_finder_cache(nodes, - COMMON_CONFIG.installer_type) + if COMMON_CONFIG.installer_type != 'configByUser': + deploymentHandler = DeploymentFactory.get_handler( + COMMON_CONFIG.installer_type, + COMMON_CONFIG.installer_ip, + COMMON_CONFIG.installer_user, + COMMON_CONFIG.installer_password, + COMMON_CONFIG.installer_key_file) + + nodes = (deploymentHandler.get_nodes({'cluster': cluster}) + if cluster is not None + else deploymentHandler.get_nodes()) + self.__disable_heat_resource_finder_cache(nodes, + COMMON_CONFIG. + installer_type) + odl_ip, odl_port = odl_utils.get_odl_ip_port(nodes) - odl_ip, odl_port = odl_utils.get_odl_ip_port(nodes) + else: + nodes = COMMON_CONFIG.nodes_pod + self.__disable_heat_resource_finder_cache(nodes, "configByUser") + odl_ip, odl_port = odl_utils. \ + get_odl_ip_port_no_installer(COMMON_CONFIG.nodes_pod) ovs_logger = ovs_log.OVSLogger( os.path.join(COMMON_CONFIG.sfc_test_dir, 'ovs-logs'), @@ -149,16 +169,33 @@ class SfcFunctest(testcase.TestCase): (test_name, test_descr)) logger.info(title) logger.info("%s\n" % ("=" * len(title))) - t = importlib.import_module( + module = importlib.import_module( "sfc.tests.functest.{0}".format(test_name), package=None) + + testcase_config = sfc_config.TestcaseConfig(test_name) + supported_installers = test_cfg['supported_installers'] + vnf_names = test_cfg['vnf_names'] + + tc_class = getattr(module, test_cfg['class_name']) + tc_instance = tc_class(testcase_config, supported_installers, + vnf_names) + cleanup_run_flag = False start_time = time.time() try: - result, creators = t.main() + result, creators = tc_instance.run() except Exception as e: logger.error("Exception when executing: %s" % test_name) logger.error(e) result = {'status': 'FAILED'} + creators = tc_instance.get_creators() + if self.cleanup_flag is True: + sfc_cleanup.cleanup(testcase_config, + creators, + COMMON_CONFIG.mano_component, + odl_ip=odl_ip, + odl_port=odl_port) + cleanup_run_flag = True end_time = time.time() duration = end_time - start_time logger.info("Results of test case '%s - %s':\n%s\n" % @@ -176,7 +213,13 @@ class SfcFunctest(testcase.TestCase): dic = {"duration": duration, "status": status} self.details.update({test_name: dic}) - sfc_cleanup.cleanup(creators, odl_ip=odl_ip, odl_port=odl_port) + + if cleanup_run_flag is not True and self.cleanup_flag is True: + sfc_cleanup.cleanup(testcase_config, + creators, + COMMON_CONFIG.mano_component, + odl_ip=odl_ip, + odl_port=odl_port) self.stop_time = time.time() |