diff options
Diffstat (limited to 'functest/opnfv_tests/sdn/onos/onos.py')
-rw-r--r-- | functest/opnfv_tests/sdn/onos/onos.py | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/functest/opnfv_tests/sdn/onos/onos.py b/functest/opnfv_tests/sdn/onos/onos.py deleted file mode 100644 index 08ba4da3..00000000 --- a/functest/opnfv_tests/sdn/onos/onos.py +++ /dev/null @@ -1,232 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -import logging -import os -import pkg_resources -import re -import subprocess -import shutil -import time -import urlparse - -from functest.core import testcase -from functest.utils.constants import CONST -import functest.utils.functest_utils as ft_utils -import functest.utils.openstack_utils as openstack_utils - - -class OnosBase(testcase.TestCase): - onos_repo_path = CONST.__getattribute__('dir_repo_onos') - onos_sfc_image_name = CONST.__getattribute__('onos_sfc_image_name') - onos_sfc_image_path = os.path.join( - CONST.__getattribute__('dir_functest_images'), - CONST.__getattribute__('onos_sfc_image_file_name')) - onos_sfc_path = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/sdn/onos/sfc') - installer_type = CONST.__getattribute__('INSTALLER_TYPE') - logger = logging.getLogger(__name__) - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "onos_base" - super(OnosBase, self).__init__(**kwargs) - - def run(self): - self.start_time = time.time() - try: - self._run() - res = testcase.TestCase.EX_OK - except Exception as e: - self.logger.error('Error with run: %s', e) - res = testcase.TestCase.EX_RUN_ERROR - - self.stop_time = time.time() - return res - - def _run(self): - raise NotImplementedError('_run is not implemented') - - -class Onos(OnosBase): - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "onos" - super(Onos, self).__init__(**kwargs) - self.log_path = os.path.join(self.onos_repo_path, 'TestON/logs') - - def set_onos_ip(self): - if (self.installer_type and - self.installer_type.lower() == 'joid'): - sdn_controller_env = os.getenv('SDN_CONTROLLER') - OC1 = re.search(r"\d+\.\d+\.\d+\.\d+", sdn_controller_env).group() - else: - neutron_url = openstack_utils.get_endpoint(service_type='network') - OC1 = urlparse.urlparse(neutron_url).hostname - os.environ['OC1'] = OC1 - self.logger.debug("ONOS IP is %s", OC1) - - def run_onos_script(self, testname): - cli_dir = os.path.join(self.onos_repo_path, 'TestON/bin/cli.py') - cmd = '{0} run {1}'.format(cli_dir, testname) - self.logger.debug("Run script: %s", testname) - ft_utils.execute_command_raise( - cmd, - error_msg=('Error when running ONOS script: %s' - % (testname))) - - def clean_existing_logs(self): - log_dir = [f for f in os.listdir(self.log_path)] - for log in log_dir: - try: - if os.path.isdir(log): - shutil.rmtree(log) - elif os.path.isfile(log): - os.remove(log) - except OSError as e: - self.logger.error('Error with deleting file %s: %s', - log, e.strerror) - - def get_result(self): - cmd = 'grep -rnh Fail {0}'.format(self.log_path) - p = subprocess.Popen(cmd, - shell=True, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - - for line in p.stdout: - self.logger.debug(line) - if re.search("\s+[1-9]+\s+", line): - self.logger.debug("Testcase Fails\n" + line) - - cmd = "grep -rnh 'Execution Time' {0}".format(self.log_path) - result_buffer = os.popen(cmd).read() - time1 = result_buffer[114:128] - time2 = result_buffer[28:42] - cmd = "grep -rnh 'Success Percentage' {0}".format( - os.path.join(self.log_path, "FUNCvirNetNB_*")) - result_buffer = os.popen(cmd).read() - if result_buffer.find('100%') >= 0: - result1 = 'Success' - else: - result1 = 'Failed' - cmd = "grep -rnh 'Success Percentage' {0}".format( - os.path.join(self.log_path, "FUNCvirNetNBL3*")) - result_buffer = os.popen(cmd).read() - if result_buffer.find('100%') >= 0: - result2 = 'Success' - else: - result2 = 'Failed' - status1 = [] - status2 = [] - cmd = "grep -rnh 'h3' {0}".format( - os.path.join(self.log_path, "FUNCvirNetNB_*")) - result_buffer = os.popen(cmd).read() - pattern = re.compile("<h3>([^-]+) - ([^-]+) - (\S*)</h3>") - # res = pattern.search(result_buffer).groups() - res = pattern.findall(result_buffer) - i = 0 - for index in range(len(res)): - status1.append({'Case name:': res[i][0] + res[i][1], - 'Case result': res[i][2]}) - i = i + 1 - cmd = "grep -rnh 'h3' {0}".format( - os.path.join(self.log_path, "FUNCvirNetNBL3*")) - result_buffer = os.popen(cmd).read() - pattern = re.compile("<h3>([^-]+) - ([^-]+) - (\S*)</h3>") - res = pattern.findall(result_buffer) - i = 0 - for index in range(len(res)): - status2.append({'Case name:': res[i][0] + res[i][1], - 'Case result': res[i][2]}) - i = i + 1 - payload = {'FUNCvirNet': {'duration': time1, - 'result': result1, - 'status': status1}, - 'FUNCvirNetL3': {'duration': time2, - 'result': result2, - 'status': status2}} - return payload - - def parse_result(self): - result = self.get_result() - status = "FAIL" - try: - if (result['FUNCvirNet']['result'] == "Success" and - result['FUNCvirNetL3']['result'] == "Success"): - status = "PASS" - except Exception: - self.logger.error("Unable to set ONOS result") - - self.result = status - self.details = result - - def _run(self): - self.clean_existing_logs() - self.set_onos_ip() - self.run_onos_script('FUNCvirNetNB') - self.run_onos_script('FUNCvirNetNBL3') - self.parse_result() - - -class OnosSfc(OnosBase): - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "onos_sfc" - super(OnosSfc, self).__init__(**kwargs) - - def get_ip(self, type): - url = openstack_utils.get_endpoint(service_type=type) - self.logger.debug('get_ip for %s: %s', type, url) - return urlparse.urlparse(url).hostname - - def update_sfc_onos_file(self, before, after): - file_dir = os.path.join(self.onos_sfc_path, "sfc_onos.py") - cmd = "sed -i 's/{0}/{1}/g' {2}".format(before, - after, - file_dir) - ft_utils.execute_command_raise( - cmd, - error_msg=('Error with replacing %s with %s' - % (before, after))) - - def create_image(self): - self.logger.warn('inside create_image') - glance_client = openstack_utils.get_glance_client() - image_id = openstack_utils.create_glance_image( - glance_client, - self.onos_sfc_image_name, - self.onos_sfc_image_path) - if image_id is None: - raise Exception('Failed to create image') - - self.logger.debug("Image '%s' with ID=%s is created successfully.", - self.onos_sfc_image_name, image_id) - - def set_sfc_conf(self): - 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() - ext_net = openstack_utils.get_external_net(neutron_client) - self.update_sfc_onos_file("admin_floating_net", ext_net) - self.logger.debug("SFC configuration is modified") - - def sfc_test(self): - cmd = 'python {0}'.format(os.path.join(self.onos_sfc_path, 'sfc.py')) - ft_utils.execute_command_raise(cmd, - error_msg='Error with testing SFC') - - def _run(self): - self.create_image() - self.set_sfc_conf() - self.sfc_test() |