From e9e07888dc8b78653e19745a3214cdd187022746 Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Fri, 29 Jul 2016 17:07:44 +0800 Subject: [PATCH] correct rally criteria check add method check_success_rate() to unify criteria check by success_rate JIRA: FUNCTEST-398 Change-Id: I1b3f0ccd7061b80ac88356206f29844e31e4101b Signed-off-by: SerenaFeng --- testcases/OpenStack/rally/run_rally-cert.py | 15 +++------------ utils/functest_utils.py | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/testcases/OpenStack/rally/run_rally-cert.py b/testcases/OpenStack/rally/run_rally-cert.py index 2f696ec3..2bb191fa 100755 --- a/testcases/OpenStack/rally/run_rally-cert.py +++ b/testcases/OpenStack/rally/run_rally-cert.py @@ -504,23 +504,14 @@ def main(): 'nb tests': total_nb_tests, 'nb success': success_rate}}) - # Generate json results for DB - # json_results = {"timestart": time_start, "duration": total_duration, - # "tests": int(total_nb_tests), - # "success": int(total_success)} - # logger.info("Results: "+str(json_results)) - - # Evaluation of the success criteria - status = "FAIL" - # for Rally we decided that the overall success rate must be above 90% - if float(success_rate) >= 90: - status = "PASS" - if args.sanity: case_name = "rally_sanity" else: case_name = "rally_full" + # Evaluation of the success criteria + status = functest_utils.check_success_rate(case_name, success_rate) + if args.report: logger.debug("Pushing Rally summary into DB...") functest_utils.push_results_to_db("functest", diff --git a/utils/functest_utils.py b/utils/functest_utils.py index a21ac446..b0014308 100644 --- a/utils/functest_utils.py +++ b/utils/functest_utils.py @@ -347,3 +347,22 @@ def get_parameter_from_yaml(parameter, file=None): raise ValueError("The parameter %s is not defined in" " config_functest.yaml" % parameter) return value + + +def check_success_rate(case_name, success_rate): + success_rate = float(success_rate) + criteria = get_criteria_by_test(case_name) + + def get_value(op): + return float(criteria.split(op)[1].rstrip('%')) + + status = 'FAIL' + ops = ['==', '>='] + for op in ops: + if op in criteria: + c_value = get_value(op) + if eval("%s %s %s" % (success_rate, op, c_value)): + status = 'PASS' + break + + return status -- 2.16.6