diff options
author | Juha Kosonen <juha.kosonen@nokia.com> | 2016-09-05 14:36:01 +0000 |
---|---|---|
committer | jose.lausuch <jose.lausuch@ericsson.com> | 2016-09-07 16:44:36 +0200 |
commit | 1c57f33818a6ecca0f56b55e3bc51bf923dba308 (patch) | |
tree | 582c2ef0e2c5c05e6faa339190d47d0121b4d561 /testcases/OpenStack/rally/run_rally-cert.py | |
parent | 5af3b0c708fa82ec511053ff93c0f663de4ab567 (diff) |
Add blacklist handling for rally test cases
Test cases can be excluded from execution based on installer/scenario
via blacklist file.
JIRA: FUNCTEST-451
Change-Id: I17bbd5f1364a890b88bc196cbc5f49c492df1cb1
Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com>
Diffstat (limited to 'testcases/OpenStack/rally/run_rally-cert.py')
-rwxr-xr-x | testcases/OpenStack/rally/run_rally-cert.py | 69 |
1 files changed, 62 insertions, 7 deletions
diff --git a/testcases/OpenStack/rally/run_rally-cert.py b/testcases/OpenStack/rally/run_rally-cert.py index 5aabb5d0a..7bd8b5356 100755 --- a/testcases/OpenStack/rally/run_rally-cert.py +++ b/testcases/OpenStack/rally/run_rally-cert.py @@ -20,6 +20,7 @@ import os import re import subprocess import time +import yaml import argparse import functest.utils.functest_logger as ft_logger @@ -78,6 +79,8 @@ RALLY_DIR = REPO_PATH + '/' + functest_yaml.get("general").get( "directories").get("dir_rally") TEMPLATE_DIR = RALLY_DIR + "scenario/templates" SUPPORT_DIR = RALLY_DIR + "scenario/support" +TEMP_DIR = RALLY_DIR + "var" +BLACKLIST_FILE = RALLY_DIR + "blacklist.txt" FLAVOR_NAME = "m1.tiny" USERS_AMOUNT = 2 @@ -270,6 +273,64 @@ 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') + black_tests = [] + + try: + 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) + except: + black_tests = [] + logger.debug("Blacklisting not applied.") + + include = True + for cases_line in cases_file: + if include: + for black_tests_line in black_tests: + if black_tests_line == cases_line.strip().rstrip(':'): + include = False + break + else: + result_file.write(str(cases_line)) + else: + if cases_line.isspace(): + include = True + + cases_file.close() + result_file.close() + + +def prepare_test_list(test_name): + scenario_file_name = '{}opnfv-{}.yaml'.format(RALLY_DIR + "scenario/", + test_name) + if not os.path.exists(scenario_file_name): + logger.info("The scenario '%s' does not exist." % scenario_file_name) + exit(-1) + + logger.debug('Scenario fetched from : {}'.format(scenario_file_name)) + test_file_name = '{}opnfv-{}.yaml'.format(TEMP_DIR + "/", test_name) + + if not os.path.exists(TEMP_DIR): + os.makedirs(TEMP_DIR) + + apply_blacklist(scenario_file_name, test_file_name) + + def run_task(test_name): # # the "main" function of the script who launch rally for a task @@ -285,13 +346,7 @@ def run_task(test_name): logger.error("Task file '%s' does not exist." % task_file) exit(-1) - test_file_name = '{}opnfv-{}.yaml'.format(RALLY_DIR + "scenario/", - test_name) - if not os.path.exists(test_file_name): - logger.error("The scenario '%s' does not exist." % test_file_name) - exit(-1) - - logger.debug('Scenario fetched from : {}'.format(test_file_name)) + prepare_test_list(test_name) cmd_line = ("rally task start --abort-on-sla-failure " + "--task {} ".format(task_file) + |