diff options
Diffstat (limited to 'testcases')
-rwxr-xr-x | testcases/OpenStack/rally/run_rally-cert.py | 3 | ||||
-rwxr-xr-x | testcases/OpenStack/tempest/gen_tempest_conf.py | 124 | ||||
-rwxr-xr-x | testcases/OpenStack/tempest/run_tempest.py | 100 | ||||
-rwxr-xr-x | testcases/OpenStack/vPing/vPing_ssh.py | 3 | ||||
-rwxr-xr-x | testcases/OpenStack/vPing/vPing_userdata.py | 3 | ||||
-rwxr-xr-x | testcases/features/domino.py | 23 | ||||
-rw-r--r-- | testcases/vnf/vRNC/parser.py (renamed from testcases/vnf/RNC/parser.py) | 25 |
7 files changed, 175 insertions, 106 deletions
diff --git a/testcases/OpenStack/rally/run_rally-cert.py b/testcases/OpenStack/rally/run_rally-cert.py index 1f1214e03..92dbddff6 100755 --- a/testcases/OpenStack/rally/run_rally-cert.py +++ b/testcases/OpenStack/rally/run_rally-cert.py @@ -410,7 +410,8 @@ def main(): GLANCE_IMAGE_PATH)) image_id = os_utils.create_glance_image(glance_client, GLANCE_IMAGE_NAME, - GLANCE_IMAGE_PATH) + GLANCE_IMAGE_PATH, + GLANCE_IMAGE_FORMAT) if not image_id: logger.error("Failed to create the Glance image...") exit(-1) diff --git a/testcases/OpenStack/tempest/gen_tempest_conf.py b/testcases/OpenStack/tempest/gen_tempest_conf.py new file mode 100755 index 000000000..4aa814a51 --- /dev/null +++ b/testcases/OpenStack/tempest/gen_tempest_conf.py @@ -0,0 +1,124 @@ +#!/usr/bin/python +# +# Copyright (c) 2015 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 +# +# Execute Multisite Tempest test cases +## + +import ConfigParser +import os +import re +import shutil +import functest.utils.functest_utils as ft_utils +import functest.utils.functest_logger as ft_logger +from run_tempest import configure_tempest +from run_tempest import TEMPEST_RESULTS_DIR + +logger = ft_logger.Logger("multisite").getLogger() + + +def configure_tempest_multisite(deployment_dir): + """ + Add/update needed parameters into tempest.conf file generated by Rally + """ + logger.debug("configure the tempest") + configure_tempest(deployment_dir) + + logger.debug("Finding tempest.conf file...") + tempest_conf_file = deployment_dir + "/tempest.conf" + if not os.path.isfile(tempest_conf_file): + logger.error("Tempest configuration file %s NOT found." + % tempest_conf_file) + exit(-1) + + # Copy tempest.conf to /home/opnfv/functest/results/tempest/ + cur_path = os.path.split(os.path.realpath(__file__))[0] + shutil.copyfile(tempest_conf_file, cur_path + '/tempest_multisite.conf') + tempest_conf_file = cur_path + "/tempest_multisite.conf" + + logger.debug("Updating selected tempest.conf parameters...") + config = ConfigParser.RawConfigParser() + config.read(tempest_conf_file) + + config.set('service_available', 'kingbird', 'true') + cmd = "openstack endpoint show kingbird | grep publicurl |\ + awk '{print $4}' | awk -F '/' '{print $4}'" + kingbird_api_version = os.popen(cmd).read() + if os.environ.get("INSTALLER_TYPE") == 'fuel': + # For MOS based setup, the service is accessible + # via bind host + kingbird_conf_path = "/etc/kingbird/kingbird.conf" + installer_type = os.getenv('INSTALLER_TYPE', 'Unknown') + installer_ip = os.getenv('INSTALLER_IP', 'Unknown') + installer_username = ft_utils.get_parameter_from_yaml( + "multisite." + installer_type + + "_environment.installer_username") + installer_password = ft_utils.get_parameter_from_yaml( + "multisite." + installer_type + + "_environment.installer_password") + + ssh_options = "-o UserKnownHostsFile=/dev/null -o \ + 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, + ssh_options, + installer_username, + 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) + bind_details = os.popen(cmd).read() + bind_details = "".join(bind_details.split()) + # Extract port number from the bind details + bind_port = re.findall(r"\D(\d{4})", bind_details)[0] + # Extract ip address from the bind details + bind_host = re.findall(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", + bind_details)[0] + kingbird_endpoint_url = "http://" + bind_host + ":" + bind_port + \ + "/" + else: + cmd = "openstack endpoint show kingbird | grep publicurl |\ + awk '{print $4}' | awk -F '/' '{print $3}'" + kingbird_endpoint_url = os.popen(cmd).read() + + try: + config.add_section("kingbird") + except Exception: + logger.info('kingbird section exist') + config.set('kingbird', 'endpoint_type', 'publicURL') + config.set('kingbird', 'TIME_TO_SYNC', '20') + config.set('kingbird', 'endpoint_url', kingbird_endpoint_url) + config.set('kingbird', 'api_version', kingbird_api_version) + with open(tempest_conf_file, 'wb') as config_file: + config.write(config_file) + + return True + + +def main(): + + if not os.path.exists(TEMPEST_RESULTS_DIR): + os.makedirs(TEMPEST_RESULTS_DIR) + + deployment_dir = ft_utils.get_deployment_dir(logger) + configure_tempest_multisite(deployment_dir) + + +if __name__ == '__main__': + main() diff --git a/testcases/OpenStack/tempest/run_tempest.py b/testcases/OpenStack/tempest/run_tempest.py index 845c5883b..5925b5845 100755 --- a/testcases/OpenStack/tempest/run_tempest.py +++ b/testcases/OpenStack/tempest/run_tempest.py @@ -49,6 +49,9 @@ parser.add_argument("-r", "--report", parser.add_argument("-n", "--noclean", help="Don't clean the created resources for this test.", action="store_true") +parser.add_argument("-c", "--conf", + help="User-specified Tempest config file location", + default="") args = parser.parse_args() @@ -165,7 +168,8 @@ def create_tempest_resources(): GLANCE_IMAGE_PATH)) image_id = os_utils.create_glance_image(glance_client, GLANCE_IMAGE_NAME, - GLANCE_IMAGE_PATH) + GLANCE_IMAGE_PATH, + GLANCE_IMAGE_FORMAT) if not image_id: logger.error("Failed to create a Glance image...") exit(-1) @@ -220,89 +224,6 @@ def configure_tempest(deployment_dir): return True -def configure_tempest_feature(deployment_dir, mode): - """Add/update needed parameters into tempest.conf file generated by Rally - - """ - - logger.debug("Finding tempest.conf file...") - tempest_conf_file = deployment_dir + "/tempest.conf" - if not os.path.isfile(tempest_conf_file): - logger.error("Tempest configuration file %s NOT found." - % tempest_conf_file) - exit(-1) - - logger.debug("Updating selected tempest.conf parameters...") - config = ConfigParser.RawConfigParser() - config.read(tempest_conf_file) - if mode == 'feature_multisite': - config.set('service_available', 'kingbird', 'true') - cmd = "openstack endpoint show kingbird | grep publicurl |\ - awk '{print $4}' | awk -F '/' '{print $4}'" - kingbird_api_version = os.popen(cmd).read() - if os.environ.get("INSTALLER_TYPE") == 'fuel': - # For MOS based setup, the service is accessible - # via bind host - kingbird_conf_path = "/etc/kingbird/kingbird.conf" - installer_type = os.getenv('INSTALLER_TYPE', 'Unknown') - installer_ip = os.getenv('INSTALLER_IP', 'Unknown') - installer_username = ft_utils.get_parameter_from_yaml( - "multisite." + installer_type + - "_environment.installer_username") - installer_password = ft_utils.get_parameter_from_yaml( - "multisite." + installer_type + - "_environment.installer_password") - - ssh_options = "-o UserKnownHostsFile=/dev/null -o \ - 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, - ssh_options, - installer_username, - 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) - bind_details = os.popen(cmd).read() - bind_details = "".join(bind_details.split()) - # Extract port number from the bind details - bind_port = re.findall(r"\D(\d{4})", bind_details)[0] - # Extract ip address from the bind details - bind_host = re.findall(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", - bind_details)[0] - kingbird_endpoint_url = "http://" + bind_host + ":" + bind_port + \ - "/" - else: - cmd = "openstack endpoint show kingbird | grep publicurl |\ - awk '{print $4}' | awk -F '/' '{print $3}'" - kingbird_endpoint_url = os.popen(cmd).read() - try: - config.add_section("kingbird") - except Exception: - logger.info('kingbird section exist') - config.set('kingbird', 'endpoint_type', 'publicURL') - config.set('kingbird', 'TIME_TO_SYNC', '20') - config.set('kingbird', 'endpoint_url', kingbird_endpoint_url) - config.set('kingbird', 'api_version', kingbird_api_version) - with open(tempest_conf_file, 'wb') as config_file: - config.write(config_file) - - # Copy tempest.conf to /home/opnfv/functest/results/tempest/ - shutil.copyfile(tempest_conf_file, TEMPEST_RESULTS_DIR + '/tempest.conf') - return True - - def read_file(filename): with open(filename) as src: return [line.strip() for line in src.readlines()] @@ -500,13 +421,18 @@ def main(): os.makedirs(TEMPEST_RESULTS_DIR) deployment_dir = ft_utils.get_deployment_dir(logger) - configure_tempest(deployment_dir) - configure_tempest_feature(deployment_dir, args.mode) + + if "" == args.conf: + MODE = "" + configure_tempest(deployment_dir) + else: + MODE = " --tempest-config " + args.conf + create_tempest_resources() generate_test_list(deployment_dir, args.mode) apply_tempest_blacklist() - MODE = "--tests-file " + TEMPEST_LIST + MODE += " --tests-file " + TEMPEST_LIST if args.serial: MODE += " --concur 1" diff --git a/testcases/OpenStack/vPing/vPing_ssh.py b/testcases/OpenStack/vPing/vPing_ssh.py index 4aab6195a..810f286f1 100755 --- a/testcases/OpenStack/vPing/vPing_ssh.py +++ b/testcases/OpenStack/vPing/vPing_ssh.py @@ -192,7 +192,8 @@ def main(): GLANCE_IMAGE_PATH)) image_id = os_utils.create_glance_image(glance_client, GLANCE_IMAGE_NAME, - GLANCE_IMAGE_PATH) + GLANCE_IMAGE_PATH, + GLANCE_IMAGE_FORMAT) if not image_id: logger.error("Failed to create a Glance image...") exit(EXIT_CODE) diff --git a/testcases/OpenStack/vPing/vPing_userdata.py b/testcases/OpenStack/vPing/vPing_userdata.py index b6e3fe11a..dd707bc8f 100755 --- a/testcases/OpenStack/vPing/vPing_userdata.py +++ b/testcases/OpenStack/vPing/vPing_userdata.py @@ -192,7 +192,8 @@ def main(): GLANCE_IMAGE_PATH)) image_id = os_utils.create_glance_image(glance_client, GLANCE_IMAGE_NAME, - GLANCE_IMAGE_PATH) + GLANCE_IMAGE_PATH, + GLANCE_IMAGE_FORMAT) if not image_id: logger.error("Failed to create a Glance image...") exit(EXIT_CODE) diff --git a/testcases/features/domino.py b/testcases/features/domino.py index ff14d066c..e4229b4c7 100755 --- a/testcases/features/domino.py +++ b/testcases/features/domino.py @@ -40,9 +40,12 @@ def main(): stop_time = time.time() duration = round(stop_time - start_time, 1) - if ret == 0: + if ret == 0 and duration > 1: logger.info("domino OK") test_status = 'OK' + elif ret == 0 and duration <= 1: + logger.info("domino TEST SKIPPED") + test_status = 'SKIPPED' else: logger.info("domino FAILED") test_status = 'NOK' @@ -60,6 +63,8 @@ def main(): status = "FAIL" if details['status'] == "OK": status = "PASS" + elif details['status'] == "SKIPPED": + status = "SKIP" logger.info("Pushing Domino results: TEST_DB_URL=%(db)s pod_name=%(pod)s " "version=%(v)s scenario=%(s)s criteria=%(c)s details=%(d)s" % { @@ -71,13 +76,15 @@ def main(): 'b': build_tag, 'd': details, }) - functest_utils.push_results_to_db("domino", - "domino-multinode", - logger, - start_time, - stop_time, - status, - details) + + if status is not "SKIP": + functest_utils.push_results_to_db("domino", + "domino-multinode", + logger, + start_time, + stop_time, + status, + details) if __name__ == '__main__': main() diff --git a/testcases/vnf/RNC/parser.py b/testcases/vnf/vRNC/parser.py index 91d5bb06a..9678591f6 100644 --- a/testcases/vnf/RNC/parser.py +++ b/testcases/vnf/vRNC/parser.py @@ -17,10 +17,17 @@ import os import time import yaml +import argparse import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as functest_utils +parser = argparse.ArgumentParser() +parser.add_argument("-r", "--report", + help="Create json result file", + action="store_true") +args = parser.parse_args() + with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f: functest_yaml = yaml.safe_load(f) @@ -40,7 +47,7 @@ def main(): ret = functest_utils.execute_command(cmd, logger, exit_on_error=False) stop_time = time.time() - status, details = functest_utils.check_test_result(case_name, + status, details = functest_utils.check_test_result(project, ret, start_time, stop_time) @@ -51,13 +58,15 @@ def main(): status, details) - functest_utils.push_results_to_db(project, - case_name, - logger, - start_time, - stop_time, - status, - details) + if args.report: + logger.debug("Report Parser Results to DB......") + functest_utils.push_results_to_db(project, + case_name, + logger, + start_time, + stop_time, + status, + details) exit(ret) if __name__ == '__main__': |