diff options
Diffstat (limited to 'utils/functest_utils.py')
-rw-r--r-- | utils/functest_utils.py | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/utils/functest_utils.py b/utils/functest_utils.py index 644ad1a1b..717e4b2ce 100644 --- a/utils/functest_utils.py +++ b/utils/functest_utils.py @@ -7,23 +7,21 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 # -from datetime import datetime as dt import json import os import re -import requests import shutil import subprocess import sys import urllib2 - -import functest.ci.tier_builder as tb -import functest.utils.functest_logger as ft_logger +from datetime import datetime as dt import dns.resolver -from git import Repo +import requests import yaml +from git import Repo +import functest.utils.functest_logger as ft_logger logger = ft_logger.Logger("functest_utils").getLogger() @@ -152,9 +150,7 @@ def get_db_url(): """ Returns DB URL """ - functest_yaml = get_functest_yaml() - db_url = functest_yaml.get("results").get("test_db_url") - return db_url + return get_functest_config('results.test_db_url') def logger_test_results(project, case_name, status, details): @@ -331,10 +327,8 @@ def get_deployment_dir(): """ Returns current Rally deployment directory """ - functest_yaml = get_functest_yaml() - deployment_name = functest_yaml.get("rally").get("deployment_name") - rally_dir = functest_yaml.get("general").get("directories").get( - "dir_rally_inst") + deployment_name = get_functest_config('rally.deployment_name') + rally_dir = get_functest_config('general.directories.dir_rally_inst') cmd = ("rally deployment list | awk '/" + deployment_name + "/ {print $2}'") p = subprocess.Popen(cmd, shell=True, @@ -350,15 +344,16 @@ def get_deployment_dir(): def get_criteria_by_test(testname): - criteria = "" - file = get_testcases_file() - tiers = tb.TierBuilder("", "", file) - for tier in tiers.get_tiers(): - for test in tier.get_tests(): - if test.get_name() == testname: - criteria = test.get_criteria() + with open(get_testcases_file()) as f: + testcases_yaml = yaml.safe_load(f) + + for dic_tier in testcases_yaml.get("tiers"): + for dic_testcase in dic_tier['testcases']: + if dic_testcase['name'] == testname: + return dic_testcase['criteria'] - return criteria + logger.error('Project %s is not defined in testcases.yaml' % testname) + return None # ---------------------------------------------------------- @@ -366,18 +361,16 @@ def get_criteria_by_test(testname): # YAML UTILS # # ----------------------------------------------------------- -def get_parameter_from_yaml(parameter, file=None): +def get_parameter_from_yaml(parameter, file): """ - Returns the value of a given parameter in config_functest.yaml + Returns the value of a given parameter in file.yaml parameter must be given in string format with dots Example: general.openstack.image_name """ - if file is None: - file = os.environ["CONFIG_FUNCTEST_YAML"] with open(file) as f: - functest_yaml = yaml.safe_load(f) + file_yaml = yaml.safe_load(f) f.close() - value = functest_yaml + value = file_yaml for element in parameter.split("."): value = value.get(element) if value is None: @@ -386,6 +379,11 @@ def get_parameter_from_yaml(parameter, file=None): return value +def get_functest_config(parameter): + yaml_ = os.environ["CONFIG_FUNCTEST_YAML"] + return get_parameter_from_yaml(parameter, yaml_) + + def check_success_rate(case_name, success_rate): success_rate = float(success_rate) criteria = get_criteria_by_test(case_name) |