diff options
author | 2016-12-22 13:00:49 +0800 | |
---|---|---|
committer | 2016-12-22 18:08:11 +0800 | |
commit | 25ac55e23e298de3ee0fee325556a4ea419370ce (patch) | |
tree | 02c1b329e8524c303642d1bdc50ff3e7bbb2aace /functest | |
parent | 9ed0c2088646f497300e6048ced2e1b2fd87bdfe (diff) |
Refactor tempest using new constants provider
JIRA: FUNCTEST-673
Change-Id: Ibc274edd6bc9e8aea9e124fae84d7dec481982ab
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
Diffstat (limited to 'functest')
-rwxr-xr-x | functest/ci/config_functest.yaml | 10 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/tempest/conf_utils.py | 46 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/tempest/tempest.py | 75 | ||||
-rw-r--r-- | functest/utils/env.py | 3 | ||||
-rw-r--r-- | functest/utils/functest_constants.py | 4 | ||||
-rw-r--r-- | functest/utils/functest_utils.py | 20 |
6 files changed, 78 insertions, 80 deletions
diff --git a/functest/ci/config_functest.yaml b/functest/ci/config_functest.yaml index 6be73d94..a9835315 100755 --- a/functest/ci/config_functest.yaml +++ b/functest/ci/config_functest.yaml @@ -1,10 +1,10 @@ general: dir: # Relative to the path where the repo is cloned: - vping: functest/opnfv_tests/openstack/vping + vping: functest/opnfv_tests/openstack/vping dir_odl: functest/opnfv_tests/sdn/odl dir_rally: functest/opnfv_tests/openstack/rally - dir_tempest_cases: functest/opnfv_tests/openstack/tempest/custom_tests + tempest_cases: functest/opnfv_tests/openstack/tempest/custom_tests dir_vIMS: functest/opnfv_tests/vnf/ims dir_onos: functest/opnfv_tests/sdn/onos/teston dir_onos_sfc: functest/opnfv_tests/sdn/onos/sfc @@ -33,7 +33,7 @@ general: functest_conf: /home/opnfv/functest/conf functest_data: /home/opnfv/functest/data dir_vIMS_data: /home/opnfv/functest/data/vIMS/ - dir_rally_inst: /home/opnfv/.rally + rally_inst: /home/opnfv/.rally openstack: creds: /home/opnfv/functest/conf/openstack.creds @@ -174,10 +174,10 @@ ONOS: installer_master_username: 'root' installer_master_password: 'r00tme' multisite: - fuel_environment: + fuel: installer_username: 'root' installer_password: 'r00tme' - compass_environment: + compass: installer_username: 'root' installer_password: 'root' multisite_controller_ip: '10.1.0.50' diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 38b97e74..5295ff37 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -12,18 +12,18 @@ import os import re import shutil -import functest.utils.functest_constants as ft_constants -import functest.utils.functest_utils as ft_utils import opnfv.utils.constants as releng_constants +import functest.utils.functest_utils as ft_utils +from functest.utils.constants import CONST IMAGE_ID_ALT = None FLAVOR_ID_ALT = None -REPO_PATH = ft_constants.FUNCTEST_REPO_DIR -GLANCE_IMAGE_PATH = os.path.join(ft_constants.FUNCTEST_DATA_DIR, - ft_constants.GLANCE_IMAGE_FILENAME) -TEMPEST_TEST_LIST_DIR = ft_constants.TEMPEST_TEST_LIST_DIR -TEMPEST_RESULTS_DIR = os.path.join(ft_constants.FUNCTEST_RESULTS_DIR, +REPO_PATH = CONST.dir_repo_functest +GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_data, + CONST.openstack_image_file_name) +TEMPEST_TEST_LIST_DIR = CONST.dir_tempest_cases +TEMPEST_RESULTS_DIR = os.path.join(CONST.dir_results, 'tempest') TEMPEST_CUSTOM = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR, 'test_list.txt') @@ -34,8 +34,8 @@ TEMPEST_DEFCORE = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR, TEMPEST_RAW_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_raw_list.txt') TEMPEST_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_list.txt') -CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE -CI_INSTALLER_IP = ft_constants.CI_INSTALLER_IP +CI_INSTALLER_TYPE = CONST.INSTALLER_TYPE +CI_INSTALLER_IP = CONST.INSTALLER_IP def configure_tempest(logger, deployment_dir, IMAGE_ID=None, FLAVOR_ID=None): @@ -63,24 +63,24 @@ def configure_tempest(logger, deployment_dir, IMAGE_ID=None, FLAVOR_ID=None): config.set( 'compute', 'fixed_network_name', - ft_constants.TEMPEST_PRIVATE_NET_NAME) - if ft_constants.TEMPEST_USE_CUSTOM_IMAGES: + CONST.tempest_private_net_name) + if CONST.tempest_use_custom_images: if IMAGE_ID is not None: config.set('compute', 'image_ref', IMAGE_ID) if IMAGE_ID_ALT is not None: config.set('compute', 'image_ref_alt', IMAGE_ID_ALT) - if ft_constants.TEMPEST_USE_CUSTOM_FLAVORS: + if CONST.tempest_use_custom_flavors: if FLAVOR_ID is not None: config.set('compute', 'flavor_ref', FLAVOR_ID) if FLAVOR_ID_ALT is not None: config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT) - config.set('identity', 'tenant_name', ft_constants.TEMPEST_TENANT_NAME) - config.set('identity', 'username', ft_constants.TEMPEST_USER_NAME) - config.set('identity', 'password', ft_constants.TEMPEST_USER_PASSWORD) + config.set('identity', 'tenant_name', CONST.tempest_identity_tenant_name) + config.set('identity', 'username', CONST.tempest_identity_user_name) + config.set('identity', 'password', CONST.tempest_identity_user_password) config.set( - 'validation', 'ssh_timeout', ft_constants.TEMPEST_SSH_TIMEOUT) + 'validation', 'ssh_timeout', CONST.tempest_validation_ssh_timeout) - if ft_constants.OS_ENDPOINT_TYPE is not None: + if CONST.OS_ENDPOINT_TYPE is not None: services_list = ['compute', 'volume', 'image', @@ -93,7 +93,7 @@ def configure_tempest(logger, deployment_dir, IMAGE_ID=None, FLAVOR_ID=None): if service not in sections: config.add_section(service) config.set(service, 'endpoint_type', - ft_constants.OS_ENDPOINT_TYPE) + CONST.OS_ENDPOINT_TYPE) with open(tempest_conf_file, 'wb') as config_file: config.write(config_file) @@ -138,12 +138,10 @@ def configure_tempest_multisite(logger, deployment_dir): kingbird_conf_path = "/etc/kingbird/kingbird.conf" installer_type = CI_INSTALLER_TYPE installer_ip = CI_INSTALLER_IP - installer_username = ft_utils.get_functest_config( - "multisite." + installer_type + - "_environment.installer_username") - installer_password = ft_utils.get_functest_config( - "multisite." + installer_type + - "_environment.installer_password") + installer_username = CONST.__getattribute__( + 'multisite_{}_installer_username'.format(installer_type)) + installer_password = CONST.__getattribute__( + 'multisite_{}_installer_password'.format(installer_type)) ssh_options = ("-o UserKnownHostsFile=/dev/null -o " "StrictHostKeyChecking=no") diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index ec0ca766..6ad55335 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -14,6 +14,7 @@ import shutil import subprocess import time +import opnfv.utils.constants as releng_constants import yaml import conf_utils @@ -21,8 +22,7 @@ import functest.core.testcase_base as testcase_base import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as ft_utils import functest.utils.openstack_utils as os_utils -import functest.utils.functest_constants as ft_constants -import opnfv.utils.constants as releng_constants +from functest.utils.constants import CONST """ logging configuration """ logger = ft_logger.Logger("Tempest").getLogger() @@ -36,9 +36,28 @@ class TempestCommon(testcase_base.TestcaseBase): self.OPTION = "" self.FLAVOR_ID = None self.IMAGE_ID = None - self.DEPLOYMENT_DIR = ft_utils.get_deployment_dir() - - def read_file(self, filename): + self.DEPLOYMENT_DIR = self.get_deployment_dir() + + @staticmethod + def get_deployment_dir(): + """ + Returns current Rally deployment directory + """ + cmd = ("rally deployment list | awk '/" + + CONST.rally_deployment_name + + "/ {print $2}'") + p = subprocess.Popen(cmd, shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + deployment_uuid = p.stdout.readline().rstrip() + if deployment_uuid == "": + logger.error("Rally deployment not found.") + exit(-1) + return os.path.join(CONST.dir_rally_inst, + "tempest/for-deployment-" + deployment_uuid) + + @staticmethod + def read_file(filename): with open(filename) as src: return [line.strip() for line in src.readlines()] @@ -48,47 +67,47 @@ class TempestCommon(testcase_base.TestcaseBase): logger.debug("Creating tenant and user for Tempest suite") tenant_id = os_utils.create_tenant( keystone_client, - ft_constants.TEMPEST_TENANT_NAME, - ft_constants.TEMPEST_TENANT_DESCRIPTION) + CONST.tempest_identity_tenant_name, + CONST.tempest_identity_tenant_description) if not tenant_id: logger.error("Error : Failed to create %s tenant" - % ft_constants.TEMPEST_TENANT_NAME) + % CONST.tempest_identity_tenant_name) user_id = os_utils.create_user(keystone_client, - ft_constants.TEMPEST_USER_NAME, - ft_constants.TEMPEST_USER_PASSWORD, + CONST.tempest_identity_user_name, + CONST.tempest_identity_user_password, None, tenant_id) if not user_id: logger.error("Error : Failed to create %s user" % - ft_constants.TEMPEST_USER_NAME) + CONST.tempest_identity_user_name) logger.debug("Creating private network for Tempest suite") network_dic = \ os_utils.create_shared_network_full( - ft_constants.TEMPEST_PRIVATE_NET_NAME, - ft_constants.TEMPEST_PRIVATE_SUBNET_NAME, - ft_constants.TEMPEST_ROUTER_NAME, - ft_constants.TEMPEST_PRIVATE_SUBNET_CIDR) + CONST.tempest_private_net_name, + CONST.tempest_private_subnet_name, + CONST.tempest_router_name, + CONST.tempest_private_subnet_cidr) if not network_dic: return releng_constants.EXIT_RUN_ERROR - if ft_constants.TEMPEST_USE_CUSTOM_IMAGES: + if CONST.tempest_use_custom_images: # adding alternative image should be trivial should we need it logger.debug("Creating image for Tempest suite") _, self.IMAGE_ID = os_utils.get_or_create_image( - ft_constants.GLANCE_IMAGE_NAME, conf_utils.GLANCE_IMAGE_PATH, - ft_constants.GLANCE_IMAGE_FORMAT) + CONST.openstack_image_name, conf_utils.GLANCE_IMAGE_PATH, + CONST.openstack_image_disk_format) if not self.IMAGE_ID: return releng_constants.EXIT_RUN_ERROR - if ft_constants.TEMPEST_USE_CUSTOM_FLAVORS: + if CONST.tempest_use_custom_flavors: # adding alternative flavor should be trivial should we need it logger.debug("Creating flavor for Tempest suite") _, self.FLAVOR_ID = os_utils.get_or_create_flavor( - ft_constants.FLAVOR_NAME, - ft_constants.FLAVOR_RAM, - ft_constants.FLAVOR_DISK, - ft_constants.FLAVOR_VCPUS) + CONST.openstack_flavor_name, + CONST.openstack_flavor_ram, + CONST.openstack_flavor_disk, + CONST.openstack_flavor_vcpus) if not self.FLAVOR_ID: return releng_constants.EXIT_RUN_ERROR @@ -128,8 +147,8 @@ class TempestCommon(testcase_base.TestcaseBase): result_file = open(conf_utils.TEMPEST_LIST, 'w') black_tests = [] try: - installer_type = ft_constants.CI_INSTALLER_TYPE - deploy_scenario = ft_constants.CI_SCENARIO + installer_type = CONST.INSTALLER_TYPE + deploy_scenario = CONST.DEPLOY_SCENARIO if (bool(installer_type) * bool(deploy_scenario)): # if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the # file @@ -189,9 +208,9 @@ class TempestCommon(testcase_base.TestcaseBase): header = ("Tempest environment:\n" " Installer: %s\n Scenario: %s\n Node: %s\n Date: %s\n" % - (ft_constants.CI_INSTALLER_TYPE, - ft_constants.CI_SCENARIO, - ft_constants.CI_NODE, + (CONST.INSTALLER_TYPE, + CONST.DEPLOY_SCENARIO, + CONST.NODE_NAME, time.strftime("%a %b %d %H:%M:%S %Z %Y"))) f_stdout = open(conf_utils.TEMPEST_RESULTS_DIR + "/tempest.log", 'w+') diff --git a/functest/utils/env.py b/functest/utils/env.py index 19c6099c..360f41d0 100644 --- a/functest/utils/env.py +++ b/functest/utils/env.py @@ -8,7 +8,8 @@ default_envs = { 'DEPLOY_TYPE': 'virt', 'INSTALLER_TYPE': None, 'INSTALLER_IP': None, - 'BUILD_TAG': None + 'BUILD_TAG': None, + 'OS_ENDPOINT_TYPE': None } diff --git a/functest/utils/functest_constants.py b/functest/utils/functest_constants.py index 991a2972..de7e9708 100644 --- a/functest/utils/functest_constants.py +++ b/functest/utils/functest_constants.py @@ -111,7 +111,7 @@ RALLY_PRIVATE_SUBNET_NAME = get_value('rally.subnet_name', RALLY_PRIVATE_SUBNET_CIDR = get_value('rally.subnet_cidr', 'RALLY_PRIVATE_SUBNET_CIDR') RALLY_ROUTER_NAME = get_value('rally.router_name', 'RALLY_ROUTER_NAME') -RALLY_INSTALLATION_DIR = get_value('general.dir.dir_rally_inst', +RALLY_INSTALLATION_DIR = get_value('general.dir.rally_inst', 'RALLY_INSTALLATION_DIR') GLANCE_IMAGE_NAME = get_value('general.openstack.image_name', 'GLANCE_IMAGE_NAME') @@ -149,7 +149,7 @@ TEMPEST_USE_CUSTOM_IMAGES = get_value('tempest.use_custom_images', 'TEMPEST_USE_CUSTOM_IMAGES') TEMPEST_USE_CUSTOM_FLAVORS = get_value('tempest.use_custom_flavors', 'TEMPEST_USE_CUSTOM_FLAVORS') -TEMPEST_TEST_LIST_DIR = get_value('general.dir.dir_tempest_cases', +TEMPEST_TEST_LIST_DIR = get_value('general.dir.tempest_cases', 'TEMPEST_TEST_LIST_DIR') NAME_VM_1 = get_value('vping.vm_name_1', 'NAME_VM_1') NAME_VM_2 = get_value('vping.vm_name_2', 'NAME_VM_2') diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py index e4845c62..3145f573 100644 --- a/functest/utils/functest_utils.py +++ b/functest/utils/functest_utils.py @@ -321,26 +321,6 @@ def execute_command(cmd, info=False, error_msg="", return returncode -def get_deployment_dir(): - """ - Returns current Rally deployment directory - """ - deployment_name = get_functest_config('rally.deployment_name') - rally_dir = get_functest_config('general.dir.dir_rally_inst') - cmd = ("rally deployment list | awk '/" + deployment_name + - "/ {print $2}'") - p = subprocess.Popen(cmd, shell=True, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - deployment_uuid = p.stdout.readline().rstrip() - if deployment_uuid == "": - logger.error("Rally deployment not found.") - exit(-1) - deployment_dir = (rally_dir + "/tempest/for-deployment-" + - deployment_uuid) - return deployment_dir - - def get_dict_by_test(testname): with open(get_testcases_file_dir()) as f: testcases_yaml = yaml.safe_load(f) |