aboutsummaryrefslogtreecommitdiffstats
path: root/functest/opnfv_tests
diff options
context:
space:
mode:
Diffstat (limited to 'functest/opnfv_tests')
-rw-r--r--functest/opnfv_tests/openstack/rally/rally.py33
-rwxr-xr-xfunctest/opnfv_tests/openstack/refstack_client/refstack_client.py24
-rwxr-xr-xfunctest/opnfv_tests/openstack/refstack_client/tempest_conf.py8
-rw-r--r--functest/opnfv_tests/openstack/snaps/snaps_test_runner.py4
-rw-r--r--functest/opnfv_tests/openstack/tempest/conf_utils.py138
-rw-r--r--functest/opnfv_tests/openstack/tempest/tempest.py15
-rwxr-xr-xfunctest/opnfv_tests/sdn/odl/odl.py20
-rw-r--r--functest/opnfv_tests/sdn/onos/onos.py8
-rw-r--r--functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py69
-rw-r--r--functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py34
10 files changed, 185 insertions, 168 deletions
diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py
index 40f8386c..86ec3558 100644
--- a/functest/opnfv_tests/openstack/rally/rally.py
+++ b/functest/opnfv_tests/openstack/rally/rally.py
@@ -30,14 +30,17 @@ logger = logging.getLogger(__name__)
class RallyBase(testcase.TestCase):
TESTS = ['authenticate', 'glance', 'cinder', 'heat', 'keystone',
'neutron', 'nova', 'quotas', 'requests', 'vm', 'all']
- GLANCE_IMAGE_NAME = CONST.openstack_image_name
- GLANCE_IMAGE_FILENAME = CONST.openstack_image_file_name
- GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_images,
- GLANCE_IMAGE_FILENAME)
- GLANCE_IMAGE_FORMAT = CONST.openstack_image_disk_format
+ GLANCE_IMAGE_NAME = CONST.__getattribute__('openstack_image_name')
+ GLANCE_IMAGE_FILENAME = CONST.__getattribute__('openstack_image_file_name')
+ GLANCE_IMAGE_PATH = os.path.join(
+ CONST.__getattribute__('dir_functest_images'),
+ GLANCE_IMAGE_FILENAME)
+ GLANCE_IMAGE_FORMAT = CONST.__getattribute__('openstack_image_disk_format')
FLAVOR_NAME = "m1.tiny"
- RALLY_DIR = os.path.join(CONST.dir_repo_functest, CONST.dir_rally)
+ RALLY_DIR = os.path.join(
+ CONST.__getattribute__('dir_repo_functest'),
+ CONST.__getattribute__('dir_rally'))
RALLY_SCENARIO_DIR = os.path.join(RALLY_DIR, "scenario")
TEMPLATE_DIR = os.path.join(RALLY_SCENARIO_DIR, "templates")
SUPPORT_DIR = os.path.join(RALLY_SCENARIO_DIR, "support")
@@ -45,17 +48,17 @@ class RallyBase(testcase.TestCase):
TENANTS_AMOUNT = 3
ITERATIONS_AMOUNT = 10
CONCURRENCY = 4
- RESULTS_DIR = os.path.join(CONST.dir_results, 'rally')
- TEMPEST_CONF_FILE = os.path.join(CONST.dir_results,
+ RESULTS_DIR = os.path.join(CONST.__getattribute__('dir_results'), 'rally')
+ TEMPEST_CONF_FILE = os.path.join(CONST.__getattribute__('dir_results'),
'tempest/tempest.conf')
BLACKLIST_FILE = os.path.join(RALLY_DIR, "blacklist.txt")
TEMP_DIR = os.path.join(RALLY_DIR, "var")
CINDER_VOLUME_TYPE_NAME = "volume_test"
- RALLY_PRIVATE_NET_NAME = CONST.rally_network_name
- RALLY_PRIVATE_SUBNET_NAME = CONST.rally_subnet_name
- RALLY_PRIVATE_SUBNET_CIDR = CONST.rally_subnet_cidr
- RALLY_ROUTER_NAME = CONST.rally_router_name
+ RALLY_PRIVATE_NET_NAME = CONST.__getattribute__('rally_network_name')
+ RALLY_PRIVATE_SUBNET_NAME = CONST.__getattribute__('rally_subnet_name')
+ RALLY_PRIVATE_SUBNET_CIDR = CONST.__getattribute__('rally_subnet_cidr')
+ RALLY_ROUTER_NAME = CONST.__getattribute__('rally_router_name')
def __init__(self, **kwargs):
super(RallyBase, self).__init__(**kwargs)
@@ -97,7 +100,7 @@ class RallyBase(testcase.TestCase):
task_args['netid'] = ''
# get keystone auth endpoint
- task_args['request_url'] = CONST.OS_AUTH_URL or ''
+ task_args['request_url'] = CONST.__getattribute__('OS_AUTH_URL') or ''
return task_args
@@ -183,8 +186,8 @@ class RallyBase(testcase.TestCase):
with open(RallyBase.BLACKLIST_FILE, 'r') as black_list_file:
black_list_yaml = yaml.safe_load(black_list_file)
- installer_type = CONST.INSTALLER_TYPE
- deploy_scenario = CONST.DEPLOY_SCENARIO
+ installer_type = CONST.__getattribute__('INSTALLER_TYPE')
+ deploy_scenario = CONST.__getattribute__('DEPLOY_SCENARIO')
if (bool(installer_type) * bool(deploy_scenario)):
if 'scenario' in black_list_yaml.keys():
for item in black_list_yaml['scenario']:
diff --git a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
index 2a2718dd..5f1f3a1d 100755
--- a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
+++ b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
@@ -33,9 +33,9 @@ class RefstackClient(testcase.TestCase):
if "case_name" not in kwargs:
kwargs["case_name"] = "refstack_defcore"
super(RefstackClient, self).__init__(**kwargs)
- self.FUNCTEST_TEST = CONST.dir_functest_test
- self.CONF_PATH = CONST.refstack_tempest_conf_path
- self.DEFCORE_LIST = CONST.refstack_defcore_list
+ self.FUNCTEST_TEST = CONST.__getattribute__('dir_functest_test')
+ self.CONF_PATH = CONST.__getattribute__('refstack_tempest_conf_path')
+ self.DEFCORE_LIST = CONST.__getattribute__('refstack_defcore_list')
self.confpath = os.path.join(self.FUNCTEST_TEST,
self.CONF_PATH)
self.defcorelist = os.path.join(self.FUNCTEST_TEST,
@@ -45,7 +45,7 @@ class RefstackClient(testcase.TestCase):
cmd = ("cd {0};"
". .venv/bin/activate;"
- "cd -;".format(CONST.dir_refstack_client))
+ "cd -;".format(CONST.__getattribute__('dir_refstack_client')))
ft_utils.execute_command(cmd)
def run_defcore(self, conf, testlist):
@@ -53,7 +53,7 @@ class RefstackClient(testcase.TestCase):
cmd = ("cd {0};"
"./refstack-client test -c {1} -v --test-list {2};"
- "cd -;".format(CONST.dir_refstack_client,
+ "cd -;".format(CONST.__getattribute__('dir_refstack_client'),
conf,
testlist))
ft_utils.execute_command(cmd)
@@ -63,16 +63,16 @@ class RefstackClient(testcase.TestCase):
cmd = ("cd {0};"
"./refstack-client test -c {1} -v --test-list {2};"
- "cd -;".format(CONST.dir_refstack_client,
+ "cd -;".format(CONST.__getattribute__('dir_refstack_client'),
self.confpath,
self.defcorelist))
logger.info("Starting Refstack_defcore test case: '%s'." % cmd)
header = ("Refstack environment:\n"
" SUT: %s\n Scenario: %s\n Node: %s\n Date: %s\n" %
- (CONST.INSTALLER_TYPE,
- CONST.DEPLOY_SCENARIO,
- CONST.NODE_NAME,
+ (CONST.__getattribute__('INSTALLER_TYPE'),
+ CONST.__getattribute__('DEPLOY_SCENARIO'),
+ CONST.__getattribute__('NODE_NAME'),
time.strftime("%a %b %d %H:%M:%S %Z %Y")))
f_stdout = open(
@@ -202,9 +202,9 @@ class RefstackClient(testcase.TestCase):
class RefstackClientParser(object):
def __init__(self):
- self.FUNCTEST_TEST = CONST.dir_functest_test
- self.CONF_PATH = CONST.refstack_tempest_conf_path
- self.DEFCORE_LIST = CONST.refstack_defcore_list
+ self.FUNCTEST_TEST = CONST.__getattribute__('dir_functest_test')
+ self.CONF_PATH = CONST.__getattribute__('refstack_tempest_conf_path')
+ self.DEFCORE_LIST = CONST.__getattribute__('refstack_defcore_list')
self.confpath = os.path.join(self.FUNCTEST_TEST,
self.CONF_PATH)
self.defcorelist = os.path.join(self.FUNCTEST_TEST,
diff --git a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py b/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py
index 5c04253c..fbaad589 100755
--- a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py
+++ b/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py
@@ -24,12 +24,14 @@ class TempestConf(object):
self.DEPLOYMENT_ID = conf_utils.get_verifier_deployment_id()
self.DEPLOYMENT_DIR = conf_utils.get_verifier_deployment_dir(
self.VERIFIER_ID, self.DEPLOYMENT_ID)
- self.confpath = os.path.join(CONST.dir_functest_test,
- CONST.refstack_tempest_conf_path)
+ self.confpath = os.path.join(
+ CONST.__getattribute__('dir_functest_test'),
+ CONST.__getattribute__('refstack_tempest_conf_path'))
def generate_tempestconf(self):
try:
- openstack_utils.source_credentials(CONST.openstack_creds)
+ openstack_utils.source_credentials(
+ CONST.__getattribute__('openstack_creds'))
img_flavor_dict = conf_utils.create_tempest_resources(
use_custom_images=True, use_custom_flavors=True)
conf_utils.configure_tempest_defcore(
diff --git a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
index 94b97551..2b98a202 100644
--- a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
+++ b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
@@ -7,7 +7,7 @@
import logging
-from functest.core.pytest_suite_runner import PyTestSuiteRunner
+from functest.core import unit
from functest.opnfv_tests.openstack.snaps import snaps_utils
from functest.utils import functest_utils
from functest.utils.constants import CONST
@@ -16,7 +16,7 @@ from snaps.openstack import create_flavor
from snaps.openstack.tests import openstack_tests
-class SnapsTestRunner(PyTestSuiteRunner):
+class SnapsTestRunner(unit.Suite):
"""
This test executes the SNAPS Python Tests
"""
diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py
index cd6a2a8c..556a41d4 100644
--- a/functest/opnfv_tests/openstack/tempest/conf_utils.py
+++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py
@@ -21,11 +21,12 @@ import functest.utils.openstack_utils as os_utils
IMAGE_ID_ALT = None
FLAVOR_ID_ALT = None
-REPO_PATH = CONST.dir_repo_functest
-GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_images,
- CONST.openstack_image_file_name)
-TEMPEST_TEST_LIST_DIR = CONST.dir_tempest_cases
-TEMPEST_RESULTS_DIR = os.path.join(CONST.dir_results,
+REPO_PATH = CONST.__getattribute__('dir_repo_functest')
+GLANCE_IMAGE_PATH = os.path.join(
+ CONST.__getattribute__('dir_functest_images'),
+ CONST.__getattribute__('openstack_image_file_name'))
+TEMPEST_TEST_LIST_DIR = CONST.__getattribute__('dir_tempest_cases')
+TEMPEST_RESULTS_DIR = os.path.join(CONST.__getattribute__('dir_results'),
'tempest')
TEMPEST_CUSTOM = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR,
'test_list.txt')
@@ -35,11 +36,11 @@ TEMPEST_DEFCORE = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR,
'defcore_req.txt')
TEMPEST_RAW_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_raw_list.txt')
TEMPEST_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_list.txt')
-REFSTACK_RESULTS_DIR = os.path.join(CONST.dir_results,
+REFSTACK_RESULTS_DIR = os.path.join(CONST.__getattribute__('dir_results'),
'refstack')
-CI_INSTALLER_TYPE = CONST.INSTALLER_TYPE
-CI_INSTALLER_IP = CONST.INSTALLER_IP
+CI_INSTALLER_TYPE = CONST.__getattribute__('INSTALLER_TYPE')
+CI_INSTALLER_IP = CONST.__getattribute__('INSTALLER_IP')
""" logging configuration """
logger = logging.getLogger(__name__)
@@ -52,26 +53,27 @@ def create_tempest_resources(use_custom_images=False,
logger.debug("Creating tenant and user for Tempest suite")
tenant_id = os_utils.create_tenant(
keystone_client,
- CONST.tempest_identity_tenant_name,
- CONST.tempest_identity_tenant_description)
+ CONST.__getattribute__('tempest_identity_tenant_name'),
+ CONST.__getattribute__('tempest_identity_tenant_description'))
if not tenant_id:
logger.error("Failed to create %s tenant"
- % CONST.tempest_identity_tenant_name)
+ % CONST.__getattribute__('tempest_identity_tenant_name'))
- user_id = os_utils.create_user(keystone_client,
- CONST.tempest_identity_user_name,
- CONST.tempest_identity_user_password,
- None, tenant_id)
+ user_id = os_utils.create_user(
+ keystone_client,
+ CONST.__getattribute__('tempest_identity_user_name'),
+ CONST.__getattribute__('tempest_identity_user_password'),
+ None, tenant_id)
if not user_id:
logger.error("Failed to create %s user" %
- CONST.tempest_identity_user_name)
+ CONST.__getattribute__('tempest_identity_user_name'))
logger.debug("Creating private network for Tempest suite")
network_dic = os_utils.create_shared_network_full(
- CONST.tempest_private_net_name,
- CONST.tempest_private_subnet_name,
- CONST.tempest_router_name,
- CONST.tempest_private_subnet_cidr)
+ CONST.__getattribute__('tempest_private_net_name'),
+ CONST.__getattribute__('tempest_private_subnet_name'),
+ CONST.__getattribute__('tempest_router_name'),
+ CONST.__getattribute__('tempest_private_subnet_cidr'))
if network_dic is None:
raise Exception('Failed to create private network')
@@ -80,41 +82,45 @@ def create_tempest_resources(use_custom_images=False,
flavor_id = ""
flavor_id_alt = ""
- if CONST.tempest_use_custom_images or use_custom_images:
+ if (CONST.__getattribute__('tempest_use_custom_images') or
+ use_custom_images):
# adding alternative image should be trivial should we need it
logger.debug("Creating image for Tempest suite")
_, image_id = os_utils.get_or_create_image(
- CONST.openstack_image_name, GLANCE_IMAGE_PATH,
- CONST.openstack_image_disk_format)
+ CONST.__getattribute__('openstack_image_name'),
+ GLANCE_IMAGE_PATH,
+ CONST.__getattribute__('openstack_image_disk_format'))
if image_id is None:
raise Exception('Failed to create image')
if use_custom_images:
logger.debug("Creating 2nd image for Tempest suite")
_, image_id_alt = os_utils.get_or_create_image(
- CONST.openstack_image_name_alt, GLANCE_IMAGE_PATH,
- CONST.openstack_image_disk_format)
+ CONST.__getattribute__('openstack_image_name_alt'),
+ GLANCE_IMAGE_PATH,
+ CONST.__getattribute__('openstack_image_disk_format'))
if image_id_alt is None:
raise Exception('Failed to create image')
- if CONST.tempest_use_custom_flavors or use_custom_flavors:
+ if (CONST.__getattribute__('tempest_use_custom_flavors') or
+ use_custom_flavors):
# adding alternative flavor should be trivial should we need it
logger.debug("Creating flavor for Tempest suite")
_, flavor_id = os_utils.get_or_create_flavor(
- CONST.openstack_flavor_name,
- CONST.openstack_flavor_ram,
- CONST.openstack_flavor_disk,
- CONST.openstack_flavor_vcpus)
+ CONST.__getattribute__('openstack_flavor_name'),
+ CONST.__getattribute__('openstack_flavor_ram'),
+ CONST.__getattribute__('openstack_flavor_disk'),
+ CONST.__getattribute__('openstack_flavor_vcpus'))
if flavor_id is None:
raise Exception('Failed to create flavor')
if use_custom_flavors:
logger.debug("Creating 2nd flavor for tempest_defcore")
_, flavor_id_alt = os_utils.get_or_create_flavor(
- CONST.openstack_flavor_name_alt,
- CONST.openstack_flavor_ram,
- CONST.openstack_flavor_disk,
- CONST.openstack_flavor_vcpus)
+ CONST.__getattribute__('openstack_flavor_name_alt'),
+ CONST.__getattribute__('openstack_flavor_ram'),
+ CONST.__getattribute__('openstack_flavor_disk'),
+ CONST.__getattribute__('openstack_flavor_vcpus'))
if flavor_id_alt is None:
raise Exception('Failed to create flavor')
@@ -132,7 +138,7 @@ def get_verifier_id():
Returns verifer id for current Tempest
"""
cmd = ("rally verify list-verifiers | awk '/" +
- CONST.tempest_deployment_name +
+ CONST.__getattribute__('tempest_deployment_name') +
"/ {print $2}'")
p = subprocess.Popen(cmd, shell=True,
stdout=subprocess.PIPE,
@@ -149,7 +155,7 @@ def get_verifier_deployment_id():
Returns deployment id for active Rally deployment
"""
cmd = ("rally deployment list | awk '/" +
- CONST.rally_deployment_name +
+ CONST.__getattribute__('rally_deployment_name') +
"/ {print $2}'")
p = subprocess.Popen(cmd, shell=True,
stdout=subprocess.PIPE,
@@ -168,7 +174,7 @@ def get_verifier_repo_dir(verifier_id):
if not verifier_id:
verifier_id = get_verifier_id()
- return os.path.join(CONST.dir_rally_inst,
+ return os.path.join(CONST.__getattribute__('dir_rally_inst'),
'verification',
'verifier-{}'.format(verifier_id),
'repo')
@@ -184,7 +190,7 @@ def get_verifier_deployment_dir(verifier_id, deployment_id):
if not deployment_id:
deployment_id = get_verifier_deployment_id()
- return os.path.join(CONST.dir_rally_inst,
+ return os.path.join(CONST.__getattribute__('dir_rally_inst'),
'verification',
'verifier-{}'.format(verifier_id),
'for-deployment-{}'.format(deployment_id))
@@ -247,8 +253,9 @@ def configure_tempest_defcore(deployment_dir, img_flavor_dict):
with open(conf_file, 'wb') as config_file:
config.write(config_file)
- confpath = os.path.join(CONST.dir_functest_test,
- CONST.refstack_tempest_conf_path)
+ confpath = os.path.join(
+ CONST.__getattribute__('dir_functest_test'),
+ CONST.__getattribute__('refstack_tempest_conf_path'))
shutil.copyfile(conf_file, confpath)
@@ -263,32 +270,37 @@ def configure_tempest_update_params(tempest_conf_file,
config.set(
'compute',
'fixed_network_name',
- CONST.tempest_private_net_name)
+ CONST.__getattribute__('tempest_private_net_name'))
config.set('compute', 'volume_device_name',
- CONST.tempest_volume_device_name)
- if CONST.tempest_use_custom_images:
+ CONST.__getattribute__('tempest_volume_device_name'))
+ if CONST.__getattribute__('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 CONST.tempest_use_custom_flavors:
+ if CONST.__getattribute__('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', 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('identity', 'tenant_name',
+ CONST.__getattribute__('tempest_identity_tenant_name'))
+ config.set('identity', 'username',
+ CONST.__getattribute__('tempest_identity_user_name'))
+ config.set('identity', 'password',
+ CONST.__getattribute__('tempest_identity_user_password'))
config.set('identity', 'region', 'RegionOne')
config.set(
- 'validation', 'ssh_timeout', CONST.tempest_validation_ssh_timeout)
+ 'validation', 'ssh_timeout',
+ CONST.__getattribute__('tempest_validation_ssh_timeout'))
config.set('object-storage', 'operator_role',
- CONST.tempest_object_storage_operator_role)
+ CONST.__getattribute__('tempest_object_storage_operator_role'))
- if CONST.OS_ENDPOINT_TYPE is not None:
+ if CONST.__getattribute__('OS_ENDPOINT_TYPE') is not None:
sections = config.sections()
if os_utils.is_keystone_v3():
- config.set('identity', 'v3_endpoint_type', CONST.OS_ENDPOINT_TYPE)
+ config.set('identity', 'v3_endpoint_type',
+ CONST.__getattribute__('OS_ENDPOINT_TYPE'))
if 'identity-feature-enabled' not in sections:
config.add_section('identity-feature-enabled')
config.set('identity-feature-enabled', 'api_v2', False)
@@ -304,7 +316,7 @@ def configure_tempest_update_params(tempest_conf_file,
if service not in sections:
config.add_section(service)
config.set(service, 'endpoint_type',
- CONST.OS_ENDPOINT_TYPE)
+ CONST.__getattribute__('OS_ENDPOINT_TYPE'))
with open(tempest_conf_file, 'wb') as config_file:
config.write(config_file)
@@ -365,22 +377,22 @@ def configure_tempest_multisite_params(tempest_conf_file):
"StrictHostKeyChecking=no")
# Get the controller IP from the fuel node
- cmd = 'sshpass -p %s ssh 2>/dev/null %s %s@%s \
- \'fuel node --env 1| grep controller | grep "True\| 1" \
- | awk -F\| "{print \$5}"\'' % (installer_password,
+ cmd = ('sshpass -p %s ssh 2>/dev/null %s %s@%s '
+ '\'fuel node --env 1| grep controller | grep "True\| 1" '
+ '| awk -F\| "{print \$5}"\'' % (installer_password,
ssh_options,
installer_username,
- installer_ip)
+ installer_ip))
multisite_controller_ip = "".join(os.popen(cmd).read().split())
# Login to controller and get bind host details
- cmd = 'sshpass -p %s ssh 2>/dev/null %s %s@%s "ssh %s \\" \
- grep -e "^bind_" %s \\""' % (installer_password,
- ssh_options,
- installer_username,
- installer_ip,
- multisite_controller_ip,
- kingbird_conf_path)
+ cmd = ('sshpass -p %s ssh 2>/dev/null %s %s@%s "ssh %s \\" '
+ 'grep -e "^bind_" %s \\""' % (installer_password,
+ ssh_options,
+ installer_username,
+ installer_ip,
+ multisite_controller_ip,
+ kingbird_conf_path))
bind_details = os.popen(cmd).read()
bind_details = "".join(bind_details.split())
# Extract port number from the bind details
diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py
index a41d07c7..f5f194e6 100644
--- a/functest/opnfv_tests/openstack/tempest/tempest.py
+++ b/functest/opnfv_tests/openstack/tempest/tempest.py
@@ -81,8 +81,8 @@ class TempestCommon(testcase.TestCase):
result_file = open(conf_utils.TEMPEST_LIST, 'w')
black_tests = []
try:
- installer_type = CONST.INSTALLER_TYPE
- deploy_scenario = CONST.DEPLOY_SCENARIO
+ installer_type = CONST.__getattribute__('INSTALLER_TYPE')
+ deploy_scenario = CONST.__getattribute__('DEPLOY_SCENARIO')
if (bool(installer_type) * bool(deploy_scenario)):
# if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the
# file
@@ -119,9 +119,9 @@ class TempestCommon(testcase.TestCase):
header = ("Tempest environment:\n"
" SUT: %s\n Scenario: %s\n Node: %s\n Date: %s\n" %
- (CONST.INSTALLER_TYPE,
- CONST.DEPLOY_SCENARIO,
- CONST.NODE_NAME,
+ (CONST.__getattribute__('INSTALLER_TYPE'),
+ CONST.__getattribute__('DEPLOY_SCENARIO'),
+ CONST.__getattribute__('NODE_NAME'),
time.strftime("%a %b %d %H:%M:%S %Z %Y")))
f_stdout = open(
@@ -148,7 +148,7 @@ class TempestCommon(testcase.TestCase):
first_pos = line.index("UUID=") + len("UUID=")
last_pos = line.index(") for deployment")
self.VERIFICATION_ID = line[first_pos:last_pos]
- logger.debug('Verication UUID: %s' % self.VERIFICATION_ID)
+ logger.debug('Verification UUID: %s', self.VERIFICATION_ID)
f_stdout.write(line)
p.wait()
@@ -273,7 +273,8 @@ class TempestMultisite(TempestCommon):
TempestCommon.__init__(self, **kwargs)
self.MODE = "feature_multisite"
self.OPTION = "--concurrency 1"
- conf_utils.install_verifier_ext(CONST.dir_repo_kingbird)
+ conf_utils.install_verifier_ext(
+ CONST.__getattribute__('dir_repo_kingbird'))
class TempestCustom(TempestCommon):
diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py
index 6f586b7a..b2b0b77c 100755
--- a/functest/opnfv_tests/sdn/odl/odl.py
+++ b/functest/opnfv_tests/sdn/odl/odl.py
@@ -30,6 +30,7 @@ import robot.api
from robot.errors import RobotError
import robot.run
from robot.utils.robottime import timestamp_to_secs
+from six import StringIO
from six.moves import urllib
from functest.core import testcase
@@ -107,7 +108,7 @@ class ODLTests(testcase.TestCase):
result.suite.statistics.critical.passed /
result.suite.statistics.critical.total)
except ZeroDivisionError:
- self.__logger.error("No test has been ran")
+ self.__logger.error("No test has been run")
self.start_time = timestamp_to_secs(result.suite.starttime)
self.stop_time = timestamp_to_secs(result.suite.endtime)
self.details = {}
@@ -172,16 +173,11 @@ class ODLTests(testcase.TestCase):
self.__logger.exception(
"Cannot create %s", self.res_dir)
return self.EX_RUN_ERROR
- stdout_file = os.path.join(self.res_dir, 'stdout.txt')
output_dir = os.path.join(self.res_dir, 'output.xml')
- with open(stdout_file, 'w+') as stdout:
- robot.run(*suites, variable=variables,
- output=output_dir,
- log='NONE',
- report='NONE',
- stdout=stdout)
- stdout.seek(0, 0)
- self.__logger.info("\n" + stdout.read())
+ stream = StringIO()
+ robot.run(*suites, variable=variables, output=output_dir,
+ log='NONE', report='NONE', stdout=stream)
+ self.__logger.info("\n" + stream.getvalue())
self.__logger.info("ODL results were successfully generated")
try:
self.parse_results()
@@ -190,10 +186,6 @@ class ODLTests(testcase.TestCase):
self.__logger.error("Run tests before publishing: %s",
ex.message)
return self.EX_RUN_ERROR
- try:
- os.remove(stdout_file)
- except OSError:
- self.__logger.warning("Cannot remove %s", stdout_file)
return self.EX_OK
else:
return self.EX_RUN_ERROR
diff --git a/functest/opnfv_tests/sdn/onos/onos.py b/functest/opnfv_tests/sdn/onos/onos.py
index 5dfff036..adcb4166 100644
--- a/functest/opnfv_tests/sdn/onos/onos.py
+++ b/functest/opnfv_tests/sdn/onos/onos.py
@@ -209,10 +209,10 @@ class OnosSfc(OnosBase):
self.onos_sfc_image_name, image_id)
def set_sfc_conf(self):
- self.update_sfc_onos_file("keystone_ip", self.get_ip("keystone"))
- self.update_sfc_onos_file("neutron_ip", self.get_ip("neutron"))
- self.update_sfc_onos_file("nova_ip", self.get_ip("nova"))
- self.update_sfc_onos_file("glance_ip", self.get_ip("glance"))
+ self.update_sfc_onos_file("keystone_ip", self.get_ip("identity"))
+ self.update_sfc_onos_file("neutron_ip", self.get_ip("network"))
+ self.update_sfc_onos_file("nova_ip", self.get_ip("compute"))
+ self.update_sfc_onos_file("glance_ip", self.get_ip("image"))
self.update_sfc_onos_file("console",
CONST.__getattribute__('OS_PASSWORD'))
neutron_client = openstack_utils.get_neutron_client()
diff --git a/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py b/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py
index 1101f239..4e93c133 100644
--- a/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py
+++ b/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py
@@ -100,8 +100,10 @@ class SfcOnos(object):
self.ip_pool = 0
self.vm_public_ip = []
self.vm_public_id = []
- self.cirros_username = CONST.openstack_image_username
- self.cirros_password = CONST.openstack_image_password
+ self.cirros_username = CONST.__getattribute__(
+ 'openstack_image_username')
+ self.cirros_password = CONST.__getattribute__(
+ 'openstack_image_password')
self.net_id1 = 0
self.vm = []
self.address = 0
@@ -115,7 +117,7 @@ class SfcOnos(object):
data = ('{"auth": {"tenantName": "admin", "passwordCredentials":'
'{ "username": "admin", "password": "console"}}}')
headers = {"Accept": "application/json"}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == OK):
json1_data = json.loads(response.content)
self.logger.debug(response.status_code)
@@ -135,12 +137,12 @@ class SfcOnos(object):
if self.admin_state_up != '':
Dicdata['admin_state_up'] = self.admin_state_up
Dicdata = {'network': Dicdata}
- data = json.dumps(Dicdata, indent=4)
+ data = json.dumps(Dicdata, indent=4)
url = 'http://%s:9696/%s/networks' % (self.neutron_hostname,
self.osver)
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -170,7 +172,7 @@ class SfcOnos(object):
self.osver)
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
self.logger.debug(response.status_code)
@@ -203,7 +205,7 @@ class SfcOnos(object):
self.osver)
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
self.logger.debug(response.status_code)
@@ -222,8 +224,9 @@ class SfcOnos(object):
"""Creation of Instance, using firewall image."""
url = ("http://%s:9292/v2/images?"
"name=TestSfcVm" % (self.glance_hostname))
- headers = {"Accept": "application/json", "Content-Type": "application/\
- octet-stream", "X-Auth-Token": self.token_id}
+ headers = {"Accept": "application/json",
+ "Content-Type": "application/octet-stream",
+ "X-Auth-Token": self.token_id}
response = requests.get(url, headers=headers)
if (response.status_code == OK):
self.logger.debug(response.status_code)
@@ -273,7 +276,7 @@ class SfcOnos(object):
self.tenant_id)
headers = {"Accept": "application/json", "Content-Type":
"application/json", "X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == ACCEPTED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -295,8 +298,8 @@ class SfcOnos(object):
for y in range(0, 3):
url = ("http://%s:8774/v2.1/servers/"
"detail?name=vm" + str(y)) % (self.neutron_hostname)
- headers = {"Accept": "application/json", "X-Auth-Token":
- self.token_id}
+ headers = {"Accept": "application/json",
+ "X-Auth-Token": self.token_id}
response = requests.get(url, headers=headers)
if (response.status_code == OK):
self.logger.debug(response.status_code)
@@ -332,7 +335,7 @@ class SfcOnos(object):
self.osver)
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
info = ("Creation of Port Pair PP" + str(p) +
" is successful")
@@ -380,7 +383,7 @@ class SfcOnos(object):
self.osver))
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
info = ("Creation of Port Group PG" + str(p) +
"is successful")
@@ -431,7 +434,7 @@ class SfcOnos(object):
self.osver))
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
json1_data = json.loads(response.content)
self.flow_class_if = json1_data['flow_classifier']['id']
@@ -462,7 +465,7 @@ class SfcOnos(object):
headers = {"Accept": "application/json",
"Content-Type": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
self.logger.debug("Creation of PORT CHAIN is successful")
json1_data = json.loads(response.content)
@@ -476,7 +479,7 @@ class SfcOnos(object):
time.sleep(5)
response = requests.get('http://' + self.onos_hostname +
':8181/onos/v1/flows',
- auth=("karaf", "karaf"))
+ auth=("karaf", "karaf"))
if (response.status_code == OK):
self.logger.debug("Flow is successfully Queries")
json1_data = json.loads(response.content)
@@ -505,7 +508,7 @@ class SfcOnos(object):
self.osver)
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == CREATED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -548,7 +551,7 @@ class SfcOnos(object):
self.router_id))
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.put(url, headers=headers, data=data)
+ response = requests.put(url, headers=headers, data=data)
if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -570,7 +573,7 @@ class SfcOnos(object):
self.router_id)
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.put(url, headers=headers, data=data)
+ response = requests.put(url, headers=headers, data=data)
if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -590,7 +593,7 @@ class SfcOnos(object):
"os-floating-ips" % (self.nova_hostname))
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -614,7 +617,7 @@ class SfcOnos(object):
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.post(url, headers=headers, data=data)
+ response = requests.post(url, headers=headers, data=data)
if(response.status_code == ACCEPTED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -631,12 +634,12 @@ class SfcOnos(object):
s = pxssh.pxssh()
hostname = self.vm_public_ip[0]
- s.login(hostname, self.cirros_username, self.cirros_password)
+ s.login(hostname, self.cirros_username, self.cirros_password)
s.sendline("ping -c 5 " + str(self.port_ip[2]))
s.prompt() # match the prompt
- ping_re = re.search("transmitted.*received", s.before).group()
- x = re.split('\s+', ping_re)
+ ping_re = re.search("transmitted.*received", s.before).group()
+ x = re.split('\s+', ping_re)
if (x[1] >= "1"):
self.logger.info("Ping is Successfull")
else:
@@ -645,7 +648,7 @@ class SfcOnos(object):
def vm1(queue1):
s = pxssh.pxssh()
hostname = self.vm_public_ip[1]
- s.login(hostname, self.cirros_username, self.cirros_password)
+ s.login(hostname, self.cirros_username, self.cirros_password)
s.sendline('sudo ./firewall')
s.prompt()
output_pack = s.before
@@ -676,7 +679,7 @@ class SfcOnos(object):
if result0 == 0 and result1 == 0:
time.sleep(300)
queue1 = Queue()
- p1 = Process(target=vm1, args=(queue1, ))
+ p1 = Process(target=vm1, args=(queue1, ))
p1.start()
p2 = Process(target=vm0)
p2.start()
@@ -703,7 +706,7 @@ class SfcOnos(object):
"""Check the PC SF Map Stats in the ONOS."""
response = requests.get('http://' + self.onos_hostname +
':8181/onos/vtn/portChainSfMap/' +
- self.PC_id, auth=("karaf", "karaf"))
+ self.PC_id, auth=("karaf", "karaf"))
if (response.status_code == OK):
self.logger.info("portChainSfMap is successfully Queries")
return(response.status_code)
@@ -761,7 +764,7 @@ class SfcOnos(object):
def deletePortPair(self):
"""Deletion of Portpair."""
- for p in range(1, 2):
+ for p in range(1, 2):
url = ("http://%s:9696/%s/sfc/"
"port_pairs/%s" % (self.neutron_hostname,
self.osver,
@@ -819,7 +822,7 @@ class SfcOnos(object):
self.router_id))
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.put(url, headers=headers, data=data)
+ response = requests.put(url, headers=headers, data=data)
if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -833,14 +836,14 @@ class SfcOnos(object):
self.router_id))
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
- response = requests.put(url, headers=headers, data=data)
+ response = requests.put(url, headers=headers, data=data)
if (response.status_code == OK):
url = ("http://%s:9696/%s/"
"routers/%s" % (self.neutron_hostname,
self.osver,
self.router_id))
- headers = {"Accept": "application/json", "X-Auth-Token":
- self.token_id}
+ headers = {"Accept": "application/json",
+ "X-Auth-Token": self.token_id}
response = requests.delete(url, headers=headers)
if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py b/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py
index 25421d40..f9eee7af 100644
--- a/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py
+++ b/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py
@@ -26,7 +26,8 @@ class Foundation(object):
def __init__(self):
# currentpath = os.getcwd()
- currentpath = '%s/sdn/onos/teston/ci' % CONST.dir_functest_data
+ currentpath = ('{0}/sdn/onos/teston/ci'
+ .format(CONST.__getattribute__('dir_functest_data')))
self.cipath = currentpath
self.logdir = os.path.join(currentpath, 'log')
self.workhome = currentpath[0: currentpath.rfind('opnfv_tests') - 1]
@@ -55,22 +56,25 @@ class Foundation(object):
Get Default Parameters value
"""
self.Result_DB = ft_utils.get_db_url()
- self.masterusername = CONST.ONOS_onosbench_username
- self.masterpassword = CONST.ONOS_onosbench_password
- self.agentusername = CONST.ONOS_onoscli_username
- self.agentpassword = CONST.ONOS_onoscli_password
- self.runtimeout = CONST.ONOS_runtimeout
- self.OCT = CONST.ONOS_environment_OCT
- self.OC1 = CONST.ONOS_environment_OC1
- self.OC2 = CONST.ONOS_environment_OC2
- self.OC3 = CONST.ONOS_environment_OC3
- self.OCN = CONST.ONOS_environment_OCN
- self.OCN2 = CONST.ONOS_environment_OCN2
- self.installer_master = CONST.ONOS_environment_installer_master
+ self.masterusername = CONST.__getattribute__('ONOS_onosbench_username')
+ self.masterpassword = CONST.__getattribute__('ONOS_onosbench_password')
+ self.agentusername = CONST.__getattribute__('ONOS_onoscli_username')
+ self.agentpassword = CONST.__getattribute__('ONOS_onoscli_password')
+ self.runtimeout = CONST.__getattribute__('ONOS_runtimeout')
+ self.OCT = CONST.__getattribute__('ONOS_environment_OCT')
+ self.OC1 = CONST.__getattribute__('ONOS_environment_OC1')
+ self.OC2 = CONST.__getattribute__('ONOS_environment_OC2')
+ self.OC3 = CONST.__getattribute__('ONOS_environment_OC3')
+ self.OCN = CONST.__getattribute__('ONOS_environment_OCN')
+ self.OCN2 = CONST.__getattribute__('ONOS_environment_OCN2')
+ self.installer_master = CONST.__getattribute__(
+ 'ONOS_environment_installer_master')
self.installer_master_username = (
- CONST.ONOS_environment_installer_master_username)
+ CONST.__getattribute__(
+ 'ONOS_environment_installer_master_username'))
self.installer_master_password = (
- CONST.ONOS_environment_installer_master_password)
+ CONST.__getattribute__(
+ 'ONOS_environment_installer_master_password'))
self.hosts = [self.OC1, self.OCN, self.OCN2]
self.localhost = self.OCT