From 97fc67c5b21b15e33647d8654810f4403cde6f7b Mon Sep 17 00:00:00 2001 From: Morgan Richomme Date: Tue, 16 Aug 2016 14:50:38 +0200 Subject: Add reporting flag to push reuslts only from CI JIRA: FUNCTEST-416 Change-Id: I1a5800be0dcf75573f44e6214b23917aadc1cbf7 Signed-off-by: Morgan Richomme --- ci/exec_test.sh | 8 ++++---- testcases/features/copper.py | 43 ++++++++++++++++---------------------- testcases/features/doctor.py | 44 +++++++++++++++++---------------------- testcases/features/domino.py | 48 +++++++++++++++++++++---------------------- testcases/features/sfc/sfc.py | 15 ++++++++++++++ utils/functest_utils.py | 15 +++++++++++--- 6 files changed, 91 insertions(+), 82 deletions(-) diff --git a/ci/exec_test.sh b/ci/exec_test.sh index db9c7a07..1acf7e01 100755 --- a/ci/exec_test.sh +++ b/ci/exec_test.sh @@ -130,7 +130,7 @@ function run_test(){ sleep 10 # to let the instances terminate ;; "doctor") - python ${FUNCTEST_REPO_DIR}/testcases/features/doctor.py + python ${FUNCTEST_REPO_DIR}/testcases/features/doctor.py $report ;; "ovno") # suite under rewritting for colorado @@ -143,7 +143,7 @@ function run_test(){ python ${repos_dir}/securityscanning/security_scan.py --config ${repos_dir}/securityscanning/config.ini ;; "copper") - python ${FUNCTEST_REPO_DIR}/testcases/features/copper.py + python ${FUNCTEST_REPO_DIR}/testcases/features/copper.py $report ;; "moon") python ${repos_dir}/moon/tests/run_tests.py @@ -155,7 +155,7 @@ function run_test(){ -c ${FUNCTEST_REPO_DIR}/testcases/OpenStack/tempest/tempest_multisite.conf ;; "domino") - python ${FUNCTEST_REPO_DIR}/testcases/features/domino.py + python ${FUNCTEST_REPO_DIR}/testcases/features/domino.py $report ;; "odl-sfc") bash ${FUNCTEST_REPO_DIR}/testcases/features/sfc/server_presetup_CI.bash @@ -169,7 +169,7 @@ function run_test(){ exit $ret_val fi source ${FUNCTEST_REPO_DIR}/testcases/features/sfc/tackerc - python ${FUNCTEST_REPO_DIR}/testcases/features/sfc/sfc.py + python ${FUNCTEST_REPO_DIR}/testcases/features/sfc/sfc.py $report ;; "parser") python ${FUNCTEST_REPO_DIR}/testcases/vnf/vRNC/parser.py $report diff --git a/testcases/features/copper.py b/testcases/features/copper.py index 78c0fb4d..74ef4390 100755 --- a/testcases/features/copper.py +++ b/testcases/features/copper.py @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # - +import argparse import os import sys import time @@ -22,6 +22,11 @@ import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as functest_utils import yaml +parser = argparse.ArgumentParser() +parser.add_argument("-r", "--report", + help="Create json result file", + action="store_true") +args = parser.parse_args() with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f: functest_yaml = yaml.safe_load(f) @@ -29,7 +34,6 @@ with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f: dirs = functest_yaml.get('general').get('directories') FUNCTEST_REPO = dirs.get('dir_repo_functest') COPPER_REPO = dirs.get('dir_repo_copper') -TEST_DB_URL = functest_yaml.get('results').get('test_db_url') logger = ft_logger.Logger("copper").getLogger() @@ -55,30 +59,19 @@ def main(): 'duration': duration, 'status': test_status, } - pod_name = functest_utils.get_pod_name(logger) - scenario = functest_utils.get_scenario(logger) - version = functest_utils.get_version(logger) - build_tag = functest_utils.get_build_tag(logger) - + functest_utils.logger_test_results(logger, "Copper", + "copper-notification", + details['status'], details) try: - logger.info("Pushing COPPER results: TEST_DB_URL=%(db)s " - "pod_name=%(pod)s version=%(v)s scenario=%(s)s " - "criteria=%(c)s details=%(d)s" % { - 'db': TEST_DB_URL, - 'pod': pod_name, - 'v': version, - 's': scenario, - 'c': details['status'], - 'b': build_tag, - 'd': details, - }) - functest_utils.push_results_to_db("copper", - "copper-notification", - logger, - start_time, - stop_time, - details['status'], - details) + if args.report: + functest_utils.push_results_to_db("copper", + "copper-notification", + logger, + start_time, + stop_time, + details['status'], + details) + logger.info("COPPER results pushed to DB") except: logger.error("Error pushing results into Database '%s'" % sys.exc_info()[0]) diff --git a/testcases/features/doctor.py b/testcases/features/doctor.py index 184ab032..154cfc69 100755 --- a/testcases/features/doctor.py +++ b/testcases/features/doctor.py @@ -13,7 +13,7 @@ # 0.2: measure test duration and publish results under json format # # - +import argparse import os import time import yaml @@ -21,13 +21,18 @@ import yaml import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as functest_utils +parser = argparse.ArgumentParser() +parser.add_argument("-r", "--report", + help="Create json result file", + action="store_true") +args = parser.parse_args() + with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f: functest_yaml = yaml.safe_load(f) dirs = functest_yaml.get('general').get('directories') FUNCTEST_REPO = dirs.get('dir_repo_functest') DOCTOR_REPO = dirs.get('dir_repo_doctor') -TEST_DB_URL = functest_yaml.get('results').get('test_db_url') logger = ft_logger.Logger("doctor").getLogger() @@ -55,32 +60,21 @@ def main(): 'duration': duration, 'status': test_status, } - pod_name = functest_utils.get_pod_name(logger) - scenario = functest_utils.get_scenario(logger) - version = functest_utils.get_version(logger) - build_tag = functest_utils.get_build_tag(logger) - status = "FAIL" if details['status'] == "OK": status = "PASS" - - logger.info("Pushing Doctor results: TEST_DB_URL=%(db)s pod_name=%(pod)s " - "version=%(v)s scenario=%(s)s criteria=%(c)s details=%(d)s" % { - 'db': TEST_DB_URL, - 'pod': pod_name, - 'v': version, - 's': scenario, - 'c': status, - 'b': build_tag, - 'd': details, - }) - functest_utils.push_results_to_db("doctor", - "doctor-notification", - logger, - start_time, - stop_time, - status, - details) + functest_utils.logger_test_results(logger, "Doctor", + "doctor-notification", + status, details) + if args.report: + functest_utils.push_results_to_db("doctor", + "doctor-notification", + logger, + start_time, + stop_time, + status, + details) + logger.info("Doctor results pushed to DB") exit(exit_code) diff --git a/testcases/features/domino.py b/testcases/features/domino.py index e4229b4c..03ad4a2a 100755 --- a/testcases/features/domino.py +++ b/testcases/features/domino.py @@ -11,9 +11,10 @@ # Later, the VM2 boots then execute cloud-init to ping VM1. # After successful ping, both the VMs are deleted. # 0.2: measure test duration and publish results under json format -# +# 0.3: add report flag to push results when needed # +import argparse import os import time import yaml @@ -21,13 +22,19 @@ import yaml import functest.utils.functest_logger as ft_logger import functest.utils.functest_utils as functest_utils +parser = argparse.ArgumentParser() + +parser.add_argument("-r", "--report", + help="Create json result file", + action="store_true") +args = parser.parse_args() + with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f: functest_yaml = yaml.safe_load(f) dirs = functest_yaml.get('general').get('directories') FUNCTEST_REPO = dirs.get('dir_repo_functest') DOMINO_REPO = dirs.get('dir_repo_domino') -TEST_DB_URL = functest_yaml.get('results').get('test_db_url') logger = ft_logger.Logger("domino").getLogger() @@ -55,10 +62,6 @@ def main(): 'duration': duration, 'status': test_status, } - pod_name = functest_utils.get_pod_name(logger) - scenario = functest_utils.get_scenario(logger) - version = functest_utils.get_version(logger) - build_tag = functest_utils.get_build_tag(logger) status = "FAIL" if details['status'] == "OK": @@ -66,25 +69,20 @@ def main(): elif details['status'] == "SKIPPED": status = "SKIP" - logger.info("Pushing Domino results: TEST_DB_URL=%(db)s pod_name=%(pod)s " - "version=%(v)s scenario=%(s)s criteria=%(c)s details=%(d)s" % { - 'db': TEST_DB_URL, - 'pod': pod_name, - 'v': version, - 's': scenario, - 'c': status, - 'b': build_tag, - 'd': details, - }) - - if status is not "SKIP": - functest_utils.push_results_to_db("domino", - "domino-multinode", - logger, - start_time, - stop_time, - status, - details) + functest_utils.logger_test_results(logger, "Domino", + "domino-multinode", + status, details) + if args.report: + if status is not "SKIP": + functest_utils.push_results_to_db("domino", + "domino-multinode", + logger, + start_time, + stop_time, + status, + details) + logger.info("Domino results pushed to DB") + if __name__ == '__main__': main() diff --git a/testcases/features/sfc/sfc.py b/testcases/features/sfc/sfc.py index bdd27905..f8af5106 100755 --- a/testcases/features/sfc/sfc.py +++ b/testcases/features/sfc/sfc.py @@ -408,6 +408,21 @@ def main(): logger.info('\033[92m' + "SFC TEST WORKED" " :) \n" + '\033[0m') + # TODO report results to DB + # functest_utils.logger_test_results(logger, "SFC", + # "odl-sfc", + # status, details) + # see doctor, promise, domino, ... + # if args.report: + # logger.info("Pushing odl-SFC results") + # functest_utils.push_results_to_db("functest", + # "odl-sfc", + # logger, + # start_time, + # stop_time, + # status, + # details) + sys.exit(0) if __name__ == '__main__': diff --git a/utils/functest_utils.py b/utils/functest_utils.py index d020ebac..3dd93fd2 100644 --- a/utils/functest_utils.py +++ b/utils/functest_utils.py @@ -169,9 +169,18 @@ def logger_test_results(logger, project, case_name, status, details): version = get_version(logger) build_tag = get_build_tag(logger) - logger.info("Pushing %(p)s/%(n)s results: TEST_DB_URL=%(db)s " - "pod_name=%(pod)s version=%(v)s scenario=%(s)s " - "criteria=%(c)s details=%(d)s" % { + logger.info("\n" + "****************************************\n" + "\t %(p)s/%(n)s results \n\n" + "****************************************\n" + "DB:\t%(db)s\n" + "pod:\t%(pod)s\n" + "version:\t%(v)s\n" + "scenario:\t%(s)s\n" + "status:\t%(c)s\n" + "build tag:\t%(b)s\n" + "details:\t%(d)s\n" + % { 'p': project, 'n': case_name, 'db': get_db_url(), -- cgit 1.2.3-korg