summaryrefslogtreecommitdiffstats
path: root/utils/functest_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/functest_utils.py')
-rw-r--r--utils/functest_utils.py52
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)