diff options
23 files changed, 65 insertions, 82 deletions
diff --git a/docker/features/testcases.yaml b/docker/features/testcases.yaml index 7a30c6d9..2ffc1905 100644 --- a/docker/features/testcases.yaml +++ b/docker/features/testcases.yaml @@ -11,6 +11,7 @@ tiers: - case_name: doctor-notification project_name: doctor + enable: false criteria: 100 blocking: false description: >- diff --git a/docker/vnf/testcases.yaml b/docker/vnf/testcases.yaml index 0a0282df..636bf9d1 100644 --- a/docker/vnf/testcases.yaml +++ b/docker/vnf/testcases.yaml @@ -70,7 +70,6 @@ tiers: - case_name: juju_epc - enabled: true project_name: functest criteria: 100 blocking: false diff --git a/docs/testing/user/configguide/configguide.rst b/docs/testing/user/configguide/configguide.rst index 431e9635..9adf79e1 100644 --- a/docs/testing/user/configguide/configguide.rst +++ b/docs/testing/user/configguide/configguide.rst @@ -235,7 +235,6 @@ when performing manual test scenarios: * NODE_NAME = <Test POD Name> * BUILD_TAG = <Jenkins Build Tag> - * CI_DEBUG = <DebugTraceValue> where: @@ -255,11 +254,6 @@ where: which are independently pushed to the results database from different Jenkins jobs. DO NOT USE THIS OPTION IN MANUAL TEST SCENARIOS. - * <DebugTraceValue> = "true" or "false" - Default = "false", if not specified - If "true" is specified, then additional debug trace - text can be sent to the test results file / log files - and also to the standard console output. Openstack credentials diff --git a/functest/api/resources/v1/creds.py b/functest/api/resources/v1/creds.py index fefbbaa9..25c0fd24 100644 --- a/functest/api/resources/v1/creds.py +++ b/functest/api/resources/v1/creds.py @@ -39,7 +39,7 @@ class V1Creds(ApiResource): endpoint='{0}/credentials'.format(ENDPOINT_CREDS)) def get(self): # pylint: disable=no-self-use """ Get credentials """ - run_tests.Runner.source_envfile(CONST.__getattribute__('env_file')) + run_tests.Runner.source_envfile(getattr(CONST, 'env_file')) credentials_show = OpenStack.show_credentials() return jsonify(credentials_show) @@ -65,7 +65,7 @@ class V1Creds(ApiResource): lines = ['export {}={}\n'.format(k, v) for k, v in openrc_vars.items()] - rc_file = CONST.__getattribute__('env_file') + rc_file = getattr(CONST, 'env_file') with open(rc_file, 'w') as creds_file: creds_file.writelines(lines) diff --git a/functest/api/resources/v1/tasks.py b/functest/api/resources/v1/tasks.py index 6bf625a8..5af8a678 100644 --- a/functest/api/resources/v1/tasks.py +++ b/functest/api/resources/v1/tasks.py @@ -85,7 +85,7 @@ class V1TaskLog(ApiResource): except ValueError: return api_utils.result_handler(status=1, data='No such task id') - task_log_dir = CONST.__getattribute__('dir_results') + task_log_dir = getattr(CONST, 'dir_results') # pylint: disable=maybe-no-member index = int(self._get_args().get('index', 0)) diff --git a/functest/api/resources/v1/testcases.py b/functest/api/resources/v1/testcases.py index 01571548..bc21c6fa 100644 --- a/functest/api/resources/v1/testcases.py +++ b/functest/api/resources/v1/testcases.py @@ -127,10 +127,10 @@ class V1Testcase(ApiResource): result = 'FAIL' env_info = { - 'installer': CONST.__getattribute__('INSTALLER_TYPE'), - 'scenario': CONST.__getattribute__('DEPLOY_SCENARIO'), - 'build_tag': CONST.__getattribute__('BUILD_TAG'), - 'ci_loop': CONST.__getattribute__('CI_LOOP') + 'installer': os.environ.get('INSTALLER_TYPE', None), + 'scenario': os.environ.get('DEPLOY_SCENARIO', None), + 'build_tag': os.environ.get('BUILD_TAG', None), + 'ci_loop': os.environ.get('CI_LOOP', 'daily') } result = { 'task_id': args.get('task_id'), @@ -146,7 +146,7 @@ class V1Testcase(ApiResource): config = ConfigParser.RawConfigParser() config.read( pkg_resources.resource_filename('functest', 'ci/logging.ini')) - log_path = os.path.join(CONST.__getattribute__('dir_results'), + log_path = os.path.join(getattr(CONST, 'dir_results'), '{}.log'.format(task_id)) config.set('handler_file', 'args', '("{}",)'.format(log_path)) diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index bcb40600..b3c66bc4 100644 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -223,6 +223,7 @@ tiers: - case_name: doctor-notification project_name: doctor + enabled: false criteria: 100 blocking: false description: >- @@ -410,7 +411,6 @@ tiers: - case_name: juju_epc - enabled: true project_name: functest criteria: 100 blocking: false diff --git a/functest/cli/commands/cli_env.py b/functest/cli/commands/cli_env.py index c1b66da4..a5c0e399 100644 --- a/functest/cli/commands/cli_env.py +++ b/functest/cli/commands/cli_env.py @@ -8,11 +8,10 @@ # pylint: disable=missing-docstring +import os + import click import prettytable - -from functest.utils.constants import CONST - import six @@ -20,24 +19,19 @@ class Env(object): # pylint: disable=too-few-public-methods @staticmethod def show(): - def _get_value(attr, default='Unknown'): - return attr if attr else default - - install_type = _get_value(CONST.__getattribute__('INSTALLER_TYPE')) - installer_ip = _get_value(CONST.__getattribute__('INSTALLER_IP')) + install_type = os.environ.get('INSTALLER_TYPE', 'Unknown') + installer_ip = os.environ.get('INSTALLER_IP', 'Unknown') installer_info = ("%s, %s" % (install_type, installer_ip)) - scenario = _get_value(CONST.__getattribute__('DEPLOY_SCENARIO')) - node = _get_value(CONST.__getattribute__('NODE_NAME')) - is_debug = _get_value(CONST.__getattribute__('CI_DEBUG'), 'false') - build_tag = CONST.__getattribute__('BUILD_TAG') - if build_tag is not None: + scenario = os.environ.get('DEPLOY_SCENARIO', 'Unknown') + node = os.environ.get('NODE_NAME', 'Unknown') + build_tag = os.environ.get('BUILD_TAG', None) + if build_tag: build_tag = build_tag.lstrip( "jenkins-").lstrip("functest").lstrip("-") env_info = {'INSTALLER': installer_info, 'SCENARIO': scenario, 'POD': node, - 'DEBUG FLAG': is_debug, 'BUILD_TAG': build_tag} return env_info diff --git a/functest/cli/commands/cli_os.py b/functest/cli/commands/cli_os.py index 7595caab..0cf28623 100644 --- a/functest/cli/commands/cli_os.py +++ b/functest/cli/commands/cli_os.py @@ -20,10 +20,10 @@ from functest.utils.constants import CONST class OpenStack(object): def __init__(self): - self.os_auth_url = CONST.__getattribute__('OS_AUTH_URL') + self.os_auth_url = os.environ['OS_AUTH_URL'] self.endpoint_ip = None self.endpoint_port = None - self.openstack_creds = CONST.__getattribute__('env_file') + self.openstack_creds = getattr(CONST, 'env_file') if self.os_auth_url: self.endpoint_ip = urllib.parse.urlparse(self.os_auth_url).hostname self.endpoint_port = urllib.parse.urlparse(self.os_auth_url).port diff --git a/functest/cli/commands/cli_tier.py b/functest/cli/commands/cli_tier.py index 7aa3f714..933d8cd6 100644 --- a/functest/cli/commands/cli_tier.py +++ b/functest/cli/commands/cli_tier.py @@ -8,12 +8,12 @@ # pylint: disable=missing-docstring +import os import pkg_resources import click from functest.ci import tier_builder -from functest.utils.constants import CONST from functest.utils import functest_utils @@ -21,8 +21,8 @@ class Tier(object): def __init__(self): self.tiers = tier_builder.TierBuilder( - CONST.__getattribute__('INSTALLER_TYPE'), - CONST.__getattribute__('DEPLOY_SCENARIO'), + os.environ['INSTALLER_TYPE'], + os.environ['DEPLOY_SCENARIO'], pkg_resources.resource_filename('functest', 'ci/testcases.yaml')) def list(self): diff --git a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py index 4e8f58b6..cb2ba220 100644 --- a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py +++ b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py @@ -26,7 +26,6 @@ from functest.energy import energy from functest.opnfv_tests.openstack.refstack_client.tempest_conf \ import TempestConf from functest.opnfv_tests.openstack.tempest import conf_utils -from functest.utils.constants import CONST import functest.utils.functest_utils as ft_utils __author__ = ("Matthew Li <matthew.lijun@huawei.com>," @@ -58,8 +57,8 @@ class RefstackClient(testcase.TestCase): 'functest', 'opnfv_tests/openstack/refstack_client/defcore.txt') self.testlist = None self.insecure = '' - if ('https' in CONST.__getattribute__('OS_AUTH_URL') and - CONST.__getattribute__('OS_INSECURE').lower() == 'true'): + if ('https' in os.environ['OS_AUTH_URL'] and + os.getenv('OS_INSECURE', '').lower() == 'true'): self.insecure = '-k' def generate_conf(self): @@ -89,9 +88,9 @@ class RefstackClient(testcase.TestCase): f_env.write( ("Refstack environment:\n" " SUT: {}\n Scenario: {}\n Node: {}\n Date: {}\n") - .format(CONST.__getattribute__('INSTALLER_TYPE'), - CONST.__getattribute__('DEPLOY_SCENARIO'), - CONST.__getattribute__('NODE_NAME'), + .format(os.getenv('INSTALLER_TYPE', None), + os.getenv('DEPLOY_SCENARIO', None), + os.getenv('NODE_NAME', 'unknown_pod'), time.strftime("%a %b %d %H:%M:%S %Z %Y"))) with open(os.path.join(conf_utils.REFSTACK_RESULTS_DIR, diff --git a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py b/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py index 44d0a18b..73a2685c 100644 --- a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py +++ b/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py @@ -38,6 +38,7 @@ class TempestConf(object): use_custom_flavors=True) conf_utils.configure_tempest_defcore( self.deployment_dir, + network_name=resources.get("network_name"), image_id=resources.get("image_id"), flavor_id=resources.get("flavor_id"), image_id_alt=resources.get("image_id_alt"), diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 6b35b96e..efcbe7fd 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -184,25 +184,27 @@ def backup_tempest_config(conf_file): os.path.join(TEMPEST_RESULTS_DIR, 'tempest.conf')) -def configure_tempest(deployment_dir, image_id=None, flavor_id=None, - compute_cnt=None): +def configure_tempest(deployment_dir, network_name=None, image_id=None, + flavor_id=None, compute_cnt=None): """ Calls rally verify and updates the generated tempest.conf with given parameters """ conf_file = configure_verifier(deployment_dir) - configure_tempest_update_params(conf_file, image_id, flavor_id, - compute_cnt) + configure_tempest_update_params(conf_file, network_name, image_id, + flavor_id, compute_cnt) -def configure_tempest_defcore(deployment_dir, image_id, flavor_id, - image_id_alt, flavor_id_alt, tenant_id): +def configure_tempest_defcore(deployment_dir, network_name, image_id, + flavor_id, image_id_alt, flavor_id_alt, + tenant_id): # pylint: disable=too-many-arguments """ Add/update needed parameters into tempest.conf file """ conf_file = configure_verifier(deployment_dir) - configure_tempest_update_params(conf_file, image_id, flavor_id) + configure_tempest_update_params(conf_file, network_name, image_id, + flavor_id) LOGGER.debug("Updating selected tempest.conf parameters for defcore...") config = ConfigParser.RawConfigParser() @@ -266,18 +268,16 @@ def update_tempest_conf_file(conf_file, config): config.write(config_file) -def configure_tempest_update_params(tempest_conf_file, image_id=None, - flavor_id=None, compute_cnt=1): +def configure_tempest_update_params(tempest_conf_file, network_name=None, + image_id=None, flavor_id=None, + compute_cnt=1): """ Add/update needed parameters into tempest.conf file """ LOGGER.debug("Updating selected tempest.conf parameters...") config = ConfigParser.RawConfigParser() config.read(tempest_conf_file) - config.set( - 'compute', - 'fixed_network_name', - CONST.__getattribute__('tempest_private_net_name')) + config.set('compute', 'fixed_network_name', network_name) config.set('compute', 'volume_device_name', CONST.__getattribute__('tempest_volume_device_name')) diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index c5ad4ecb..01caf4ff 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -257,6 +257,7 @@ class TempestCommon(testcase.TestCase): self.resources.os_creds) conf_utils.configure_tempest( self.deployment_dir, + network_name=resources.get("network_name"), image_id=resources.get("image_id"), flavor_id=resources.get("flavor_id"), compute_cnt=compute_cnt) @@ -380,10 +381,12 @@ class TempestResourcesManager(object): tempest_segmentation_id = CONST.__getattribute__( 'tempest_segmentation_id') + tempest_net_name = CONST.__getattribute__( + 'tempest_private_net_name') + self.guid + network_creator = deploy_utils.create_network( self.os_creds, NetworkConfig( - name=CONST.__getattribute__( - 'tempest_private_net_name') + self.guid, + name=tempest_net_name, project_name=project_name, network_type=tempest_network_type, physical_network=tempest_physical_network, @@ -397,6 +400,7 @@ class TempestResourcesManager(object): if network_creator is None or network_creator.get_network() is None: raise Exception("Failed to create private network") self.creators.append(network_creator) + return tempest_net_name def _create_image(self, name): """Create image for tests""" @@ -433,6 +437,7 @@ class TempestResourcesManager(object): create_project=False): """Create resources for Tempest test suite.""" result = { + 'tempest_net_name': None, 'image_id': None, 'image_id_alt': None, 'flavor_id': None, @@ -449,7 +454,7 @@ class TempestResourcesManager(object): result['tenant_id'] = result['project_id'] # for compatibility LOGGER.debug("Creating private network for Tempest suite") - self._create_network(project_name) + result['tempest_net_name'] = self._create_network(project_name) LOGGER.debug("Creating image for Tempest suite") image_name = CONST.__getattribute__('openstack_image_name') + self.guid diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py index 25cc758e..6af49ffa 100644 --- a/functest/opnfv_tests/sdn/odl/odl.py +++ b/functest/opnfv_tests/sdn/odl/odl.py @@ -38,7 +38,7 @@ __author__ = "Cedric Ollivier <cedric.ollivier@orange.com>" class ODLTests(robotframework.RobotFramework): """ODL test runner.""" - odl_test_repo = constants.CONST.__getattribute__('dir_repo_odl_test') + odl_test_repo = getattr(constants.CONST, 'dir_repo_odl_test') neutron_suite_dir = os.path.join( odl_test_repo, "csit/suites/openstack/neutron") basic_suite_dir = os.path.join( @@ -51,7 +51,7 @@ class ODLTests(robotframework.RobotFramework): def __init__(self, **kwargs): super(ODLTests, self).__init__(**kwargs) self.res_dir = os.path.join( - constants.CONST.__getattribute__('dir_results'), 'odl') + getattr(constants.CONST, 'dir_results'), 'odl') self.xml_file = os.path.join(self.res_dir, 'output.xml') @classmethod diff --git a/functest/tests/unit/cli/commands/test_cli_env.py b/functest/tests/unit/cli/commands/test_cli_env.py index 88377234..d17da166 100644 --- a/functest/tests/unit/cli/commands/test_cli_env.py +++ b/functest/tests/unit/cli/commands/test_cli_env.py @@ -48,9 +48,6 @@ class CliEnvTesting(unittest.TestCase): elif var == 'BUILD_TAG': os.environ['BUILD_TAG'] = '' reg_string = r"| BUILD TAG: None|" - elif var == 'DEBUG': - os.environ['CI_DEBUG'] = '' - reg_string = r"| DEBUG FLAG: false\s*|" with mock.patch('functest.cli.commands.cli_env.click.echo') \ as mock_click_echo: @@ -72,9 +69,6 @@ class CliEnvTesting(unittest.TestCase): def test_show_missing_ci_build_tag(self, *args): self._test_show_missing_env_var('BUILD_TAG', *args) - def test_show_missing_ci_debug(self, *args): - self._test_show_missing_env_var('DEBUG', *args) - if __name__ == "__main__": logging.disable(logging.CRITICAL) diff --git a/functest/tests/unit/cli/commands/test_cli_os.py b/functest/tests/unit/cli/commands/test_cli_os.py index 1626ab1b..02392d2d 100644 --- a/functest/tests/unit/cli/commands/test_cli_os.py +++ b/functest/tests/unit/cli/commands/test_cli_os.py @@ -26,6 +26,7 @@ class CliOpenStackTesting(unittest.TestCase): self.installer_ip = 'test_installer_ip' self.openstack_creds = 'test_env_file' self.snapshot_file = 'test_snapshot_file' + os.environ["OS_AUTH_URL"] = '' self.cli_os = cli_os.CliOpenStack() def test_ping_endpoint_default(self): diff --git a/functest/tests/unit/cli/test_cli_base.py b/functest/tests/unit/cli/test_cli_base.py index 876e8aa1..185a5220 100644 --- a/functest/tests/unit/cli/test_cli_base.py +++ b/functest/tests/unit/cli/test_cli_base.py @@ -10,6 +10,7 @@ # pylint: disable=missing-docstring import logging +import os import unittest import mock @@ -19,6 +20,7 @@ with mock.patch('functest.cli.commands.cli_testcase.CliTestcase.__init__', mock.Mock(return_value=None)), \ mock.patch('functest.cli.commands.cli_tier.CliTier.__init__', mock.Mock(return_value=None)): + os.environ['OS_AUTH_URL'] = '' from functest.cli import cli_base diff --git a/functest/tests/unit/openstack/refstack_client/test_refstack_client.py b/functest/tests/unit/openstack/refstack_client/test_refstack_client.py index a7a914cb..e2e7dceb 100644 --- a/functest/tests/unit/openstack/refstack_client/test_refstack_client.py +++ b/functest/tests/unit/openstack/refstack_client/test_refstack_client.py @@ -10,6 +10,7 @@ # pylint: disable=missing-docstring import logging +import os import unittest import mock @@ -18,7 +19,6 @@ import pkg_resources from functest.core import testcase from functest.opnfv_tests.openstack.refstack_client.refstack_client import \ RefstackClient, RefstackClientParser -from functest.utils.constants import CONST from snaps.openstack.os_credentials import OSCreds @@ -39,8 +39,8 @@ class OSRefstackClientTesting(unittest.TestCase): def setUp(self): self.default_args = {'config': self._config, 'testlist': self._testlist} - CONST.__setattr__('OS_AUTH_URL', 'https://ip:5000/v3') - CONST.__setattr__('OS_INSECURE', 'true') + os.environ['OS_AUTH_URL'] = 'https://ip:5000/v3' + os.environ['OS_INSECURE'] = 'true' self.case_name = 'refstack_defcore' self.result = 0 self.os_creds = OSCreds( @@ -70,7 +70,7 @@ class OSRefstackClientTesting(unittest.TestCase): m_cmd.assert_any_call(cmd) def test_run_defcore(self): - CONST.__setattr__('OS_AUTH_URL', 'http://ip:5000/v3') + os.environ['OS_AUTH_URL'] = 'http://ip:5000/v3' insecure = '' config = 'tempest.conf' testlist = 'testlist' diff --git a/functest/tests/unit/openstack/tempest/test_conf_utils.py b/functest/tests/unit/openstack/tempest/test_conf_utils.py index 5fed742c..323a1ee0 100644 --- a/functest/tests/unit/openstack/tempest/test_conf_utils.py +++ b/functest/tests/unit/openstack/tempest/test_conf_utils.py @@ -259,8 +259,9 @@ class OSTempestConfUtilsTesting(unittest.TestCase): mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.shutil.copyfile'): conf_utils.configure_tempest_defcore( - 'test_dep_dir', 'test_image_id', 'test_flavor_id', - 'test_image_alt_id', 'test_flavor_alt_id', 'test_tenant_id') + 'test_dep_dir', 'test_network_name', 'test_image_id', + 'test_flavor_id', 'test_image_alt_id', 'test_flavor_alt_id', + 'test_tenant_id') mset.assert_any_call('compute', 'image_ref', 'test_image_id') mset.assert_any_call('compute', 'image_ref_alt', 'test_image_alt_id') diff --git a/functest/utils/config.py b/functest/utils/config.py index 050f12a9..c569856b 100644 --- a/functest/utils/config.py +++ b/functest/utils/config.py @@ -45,7 +45,7 @@ class Config(object): for param_n, param_v in six.iteritems(left_parametes): attr_further = self._get_attr_further(attr_now, param_n) if attr_further: - self.__setattr__(attr_further, param_v) + setattr(self, attr_further, param_v) if isinstance(param_v, dict): self._parse(attr_further, param_v) diff --git a/functest/utils/constants.py b/functest/utils/constants.py index cb3ea787..c19e0fc5 100644 --- a/functest/utils/constants.py +++ b/functest/utils/constants.py @@ -12,9 +12,9 @@ class Constants(object): # pylint: disable=too-few-public-methods def __init__(self): for attr_n, attr_v in six.iteritems(config.CONF.__dict__): - self.__setattr__(attr_n, attr_v) + setattr(self, attr_n, attr_v) for env_n, env_v in six.iteritems(env.ENV.__dict__): - self.__setattr__(env_n, env_v) + setattr(self, env_n, env_v) CONST = Constants() diff --git a/functest/utils/env.py b/functest/utils/env.py index f6e6e100..110164be 100644 --- a/functest/utils/env.py +++ b/functest/utils/env.py @@ -13,7 +13,6 @@ class Environment(object): # pylint: disable=too-few-public-methods default_envs = { 'NODE_NAME': 'unknown_pod', - 'CI_DEBUG': 'false', 'DEPLOY_SCENARIO': 'os-nosdn-nofeature-noha', 'DEPLOY_TYPE': 'virt', 'INSTALLER_TYPE': None, @@ -33,16 +32,9 @@ class Environment(object): # pylint: disable=too-few-public-methods for key, value in six.iteritems(self.default_envs): if key not in os.environ: setattr(self, key, value) - self._set_ci_run() if 'CI_LOOP' not in os.environ: self._set_ci_loop() - def _set_ci_run(self): - if getattr(self, "BUILD_TAG"): - setattr(self, "IS_CI_RUN", True) - else: - setattr(self, "IS_CI_RUN", False) - def _set_ci_loop(self): if (getattr(self, "BUILD_TAG") and re.search("daily", getattr(self, "BUILD_TAG"))): |