diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rwxr-xr-x | ci/exec_test.sh | 2 | ||||
-rw-r--r-- | testcases/OpenStack/rally/blacklist.txt | 26 | ||||
-rwxr-xr-x | testcases/OpenStack/rally/run_rally-cert.py | 65 | ||||
-rw-r--r-- | testcases/OpenStack/rally/scenario/full/opnfv-nova.yaml | 4 | ||||
-rw-r--r-- | testcases/OpenStack/rally/scenario/sanity/opnfv-nova.yaml | 4 | ||||
-rwxr-xr-x | testcases/features/sfc/compute_presetup_CI.bash | 5 | ||||
-rwxr-xr-x | testcases/features/sfc/prepare_odl_sfc.py | 96 |
8 files changed, 166 insertions, 37 deletions
diff --git a/.gitignore b/.gitignore index 155eeb1de..80f567613 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ .*.sw? .project .pydevproject +rally_conf.json /docs_build/ /docs_output/ /releng/ diff --git a/ci/exec_test.sh b/ci/exec_test.sh index ad1e56372..6fdc42666 100755 --- a/ci/exec_test.sh +++ b/ci/exec_test.sh @@ -161,7 +161,7 @@ function run_test(){ "odl-sfc") ODL_SFC_DIR=${FUNCTEST_REPO_DIR}/testcases/features/sfc # pass FUNCTEST_REPO_DIR inside prepare_odl_sfc.bash - FUNCTEST_REPO_DIR=${FUNCTEST_REPO_DIR} bash ${ODL_SFC_DIR}/prepare_odl_sfc.bash || exit $? + FUNCTEST_REPO_DIR=${FUNCTEST_REPO_DIR} python ${ODL_SFC_DIR}/prepare_odl_sfc.py || exit $? source ${ODL_SFC_DIR}/tackerc python ${ODL_SFC_DIR}/sfc_colorado1.py $report ;; diff --git a/testcases/OpenStack/rally/blacklist.txt b/testcases/OpenStack/rally/blacklist.txt index 02d85f4d8..3a17fa616 100644 --- a/testcases/OpenStack/rally/blacklist.txt +++ b/testcases/OpenStack/rally/blacklist.txt @@ -1,8 +1,18 @@ -- - scenarios: - - os-nosdn-lxd-ha - - os-nosdn-lxd-noha - installers: - - joid - tests: - - NovaServers.boot_server_from_volume_and_delete +scenario: + - + scenarios: + - os-nosdn-lxd-ha + - os-nosdn-lxd-noha + installers: + - joid + tests: + - NovaServers.boot_server_from_volume_and_delete + +functionality: + - + functions: + - no_live_migration + tests: + - NovaServers.boot_and_live_migrate_server + - NovaServers.boot_server_attach_created_volume_and_live_migrate + - NovaServers.boot_server_from_volume_and_live_migrate diff --git a/testcases/OpenStack/rally/run_rally-cert.py b/testcases/OpenStack/rally/run_rally-cert.py index d35639cc8..90084a127 100755 --- a/testcases/OpenStack/rally/run_rally-cert.py +++ b/testcases/OpenStack/rally/run_rally-cert.py @@ -187,7 +187,6 @@ def build_task_args(test_file_name): net_id = network_dict['net_id'] task_args['netid'] = str(net_id) - task_args['live_migration'] = live_migration_supported() auth_url = os.getenv('OS_AUTH_URL') if auth_url is not None: @@ -273,30 +272,60 @@ def get_cmd_output(proc): return result -def apply_blacklist(case_file_name, result_file_name): - logger.debug("Applying blacklist...") - cases_file = open(case_file_name, 'r') - result_file = open(result_file_name, 'w') +def excl_scenario(): black_tests = [] try: + with open(BLACKLIST_FILE, 'r') as black_list_file: + black_list_yaml = yaml.safe_load(black_list_file) + installer_type = os.getenv('INSTALLER_TYPE') deploy_scenario = os.getenv('DEPLOY_SCENARIO') if (bool(installer_type) * bool(deploy_scenario)): - # if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the file - with open(BLACKLIST_FILE, 'r') as black_list_file: - black_list_yaml = yaml.safe_load(black_list_file) - - for item in black_list_yaml: - scenarios = item['scenarios'] - installers = item['installers'] - if (deploy_scenario in scenarios and - installer_type in installers): - tests = item['tests'] - black_tests.extend(tests) + if 'scenario' in black_list_yaml.keys(): + for item in black_list_yaml['scenario']: + scenarios = item['scenarios'] + installers = item['installers'] + if (deploy_scenario in scenarios and + installer_type in installers): + tests = item['tests'] + black_tests.extend(tests) + except: + logger.debug("Scenario exclusion not applied.") + + return black_tests + + +def excl_func(): + black_tests = [] + func_list = [] + + try: + with open(BLACKLIST_FILE, 'r') as black_list_file: + black_list_yaml = yaml.safe_load(black_list_file) + + if not live_migration_supported(): + func_list.append("no_live_migration") + + if 'functionality' in black_list_yaml.keys(): + for item in black_list_yaml['functionality']: + functions = item['functions'] + for func in func_list: + if func in functions: + tests = item['tests'] + black_tests.extend(tests) except: - black_tests = [] - logger.debug("Blacklisting not applied.") + logger.debug("Functionality exclusion not applied.") + + return black_tests + + +def apply_blacklist(case_file_name, result_file_name): + logger.debug("Applying blacklist...") + cases_file = open(case_file_name, 'r') + result_file = open(result_file_name, 'w') + + black_tests = list(set(excl_func() + excl_scenario())) include = True for cases_line in cases_file: diff --git a/testcases/OpenStack/rally/scenario/full/opnfv-nova.yaml b/testcases/OpenStack/rally/scenario/full/opnfv-nova.yaml index 077850f53..d7622093d 100644 --- a/testcases/OpenStack/rally/scenario/full/opnfv-nova.yaml +++ b/testcases/OpenStack/rally/scenario/full/opnfv-nova.yaml @@ -227,8 +227,6 @@ sla: {{ no_failures_sla() }} -{% if live_migration %} - NovaServers.boot_and_live_migrate_server: - args: {{ vm_params(image_name, flavor_name) }} @@ -273,8 +271,6 @@ sla: {{ no_failures_sla() }} -{% endif %} - NovaKeypair.boot_and_delete_server_with_keypair: - args: diff --git a/testcases/OpenStack/rally/scenario/sanity/opnfv-nova.yaml b/testcases/OpenStack/rally/scenario/sanity/opnfv-nova.yaml index 947819dc7..e2795cf71 100644 --- a/testcases/OpenStack/rally/scenario/sanity/opnfv-nova.yaml +++ b/testcases/OpenStack/rally/scenario/sanity/opnfv-nova.yaml @@ -1,5 +1,3 @@ -{% if live_migration %} - NovaServers.boot_and_live_migrate_server: - args: {{ vm_params(image_name, flavor_name) }} @@ -44,8 +42,6 @@ sla: {{ no_failures_sla() }} -{% endif %} - NovaKeypair.boot_and_delete_server_with_keypair: - args: diff --git a/testcases/features/sfc/compute_presetup_CI.bash b/testcases/features/sfc/compute_presetup_CI.bash index 23b2e4c92..36148aa15 100755 --- a/testcases/features/sfc/compute_presetup_CI.bash +++ b/testcases/features/sfc/compute_presetup_CI.bash @@ -9,9 +9,10 @@ BASEDIR=`dirname $0` INSTALLER_IP=${INSTALLER_IP:-10.20.0.2} pushd $BASEDIR -ip=`sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'fuel node'|grep compute|\ -awk '{print $10}' | head -1` +#ip=`sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'fuel node'|grep compute|\ +#awk '{print $10}' | head -1` +ip=$1 echo $ip #sshpass -p r00tme scp $ssh_options correct_classifier.bash ${INSTALLER_IP}:/root #sshpass -p r00tme ssh $ssh_options root@${INSTALLER_IP} 'scp correct_classifier.bash '"$ip"':/root' diff --git a/testcases/features/sfc/prepare_odl_sfc.py b/testcases/features/sfc/prepare_odl_sfc.py new file mode 100755 index 000000000..78f4d7646 --- /dev/null +++ b/testcases/features/sfc/prepare_odl_sfc.py @@ -0,0 +1,96 @@ +# +# Author: George Paraskevopoulos (geopar@intracom-telecom.com) +# Manuel Buil (manuel.buil@ericsson.com) +# Prepares the controller and the compute nodes for the odl-sfc testcase +# +# +# 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 os +import sys +import subprocess +import paramiko +import functest.utils.functest_logger as ft_logger + +logger = ft_logger.Logger("ODL_SFC").getLogger() + +try: + FUNCTEST_REPO_DIR = os.environ['FUNCTEST_REPO_DIR'] +except: + logger.debug("FUNCTEST_REPO_DIR does not exist!!!!!") + +FUNCTEST_REPO_DIR = "/home/opnfv/repos/functest" + +try: + INSTALLER_IP = os.environ['INSTALLER_IP'] + +except: + logger.debug("INSTALLER_IP does not exist. We create 10.20.0.2") + INSTALLER_IP = "10.20.0.2" + +os.environ['ODL_SFC_LOG'] = "/home/opnfv/functest/results/odl-sfc.log" +os.environ['ODL_SFC_DIR'] = FUNCTEST_REPO_DIR + "/testcases/features/sfc" + +command = os.environ['ODL_SFC_DIR'] + ("/server_presetup_CI.bash | " + "tee -a ${ODL_SFC_LOG} " + "1>/dev/null 2>&1") + +output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) + +# This code is for debugging purposes +# for line in iter(output.stdout.readline, ''): +# i = line.rstrip() +# print(i) + +# Make sure the process is finished before checking the returncode +if not output.poll(): + output.wait() + +# Get return value +if output.returncode: + print("The presetup of the server did not work") + sys.exit(output.returncode) + +logger.info("The presetup of the server worked ") + +ssh_options = "-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" +ssh = paramiko.SSHClient() +ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + +try: + ssh.connect(INSTALLER_IP, username="root", + password="r00tme", timeout=2) + command = "fuel node | grep compute | awk '{print $10}'" + logger.info("Executing ssh to collect the compute IPs") + (stdin, stdout, stderr) = ssh.exec_command(command) +except: + logger.debug("Something went wrong in the ssh to collect the computes IP") + +output = stdout.readlines() +for ip in output: + command = os.environ['ODL_SFC_DIR'] + ("/compute_presetup_CI.bash " + "" + ip.rstrip() + "| tee -a " + "${ODL_SFC_LOG} 1>/dev/null 2>&1") + + output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) + +# This code is for debugging purposes +# for line in iter(output.stdout.readline, ''): +# print(line) +# sys.stdout.flush() + + output.stdout.close() + + if not (output.poll()): + output.wait() + + # Get return value + if output.returncode: + print("The compute config did not work on compute %s" % ip) + sys.exit(output.returncode) + +sys.exit(0) |