From 8fd28cfeaca4ac29f4357c51eb0c0374d0d0a409 Mon Sep 17 00:00:00 2001 From: yuyang Date: Mon, 22 May 2017 19:19:56 +0800 Subject: Add reporting to MongoDB JIRA: BOTTLENECK-158 Add reporting function to community MongoDB Change-Id: Idebc191b20ad238dbdd129ce38131b79e7133e35 Signed-off-by: yuyang --- testsuites/posca/run_posca.py | 60 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) (limited to 'testsuites/posca') diff --git a/testsuites/posca/run_posca.py b/testsuites/posca/run_posca.py index 3e23a37a..18325b04 100755 --- a/testsuites/posca/run_posca.py +++ b/testsuites/posca/run_posca.py @@ -17,6 +17,12 @@ posca_factor_system_bandwidth by default.''' import importlib import sys +import os + +from oslo_serialization import jsonutils +import requests +import datetime + import utils.parser as conf_parser import utils.logger as log INTERPRETER = "/usr/bin/python" @@ -34,7 +40,42 @@ def posca_testcase_run(testcase_script, test_config): module.run(test_config) -def posca_run(test_level, test_name): +def report(testcase, start_date, stop_date, criteria, details_doc): + headers = {'Content-type': 'application/json'} + results = { + "project_name": "bottlenecks", + "case_name": testcase, + "description": ("test results for " + testcase), + "pod_name": os.environ.get('NODE_NAME', 'unknown'), + "installer": os.environ.get('INSTALLER_TYPE', 'unknown'), + "version": os.environ.get('BRANCH', 'unknown'), + "build_tag": os.environ.get('BUILD_TAG', 'unknown'), + "stop_date": stop_date, + "start_date": start_date, + "criteria": criteria, + "scenario": os.environ.get('DEPLOY_SCENARIO', 'unknown') + } + results['details'] = {"test_results": details_doc} + + target = "http://testresults.opnfv.org/test/api/v1/results" + timeout = 5 + + try: + LOG.debug('Test result : %s', jsonutils.dump_as_bytes(results)) + print ('Start posting test results to community MongoDB') + res = requests.post(target, + data=jsonutils.dump_as_bytes(results), + headers=headers, + timeout=timeout) + LOG.debug('Test result posting finished with status code' + ' %d.' % res.status_code) + print ('Test results posting finished with status code' + ' %d.' % res.status_code) + except Exception as err: + LOG.exception('Failed to record result data: %s', err) + + +def posca_run(test_level, test_name, REPORT="False"): if test_level == "testcase": config = conf_parser.Parser.testcase_read("posca", test_name) elif test_level == "teststory": @@ -43,14 +84,29 @@ def posca_run(test_level, test_name): LOG.info("Begin to run %s testcase in POSCA testsuite", testcase) config[testcase]['out_file'] =\ conf_parser.Parser.testcase_out_dir(testcase) + start_date = datetime.datetime.now() posca_testcase_run(testcase, config[testcase]) + stop_date = datetime.datetime.now() LOG.info("End of %s testcase in POSCA testsuite", testcase) + criteria = "FAIL" + if REPORT == "True": + details_doc = [] + if os.path.exists(config[testcase]['out_file']): + with open(config[testcase]['out_file']) as details_result: + lines = details_result.readlines() + if len(lines): + criteria = "PASS" + for l in lines: + details_doc.append(l.replace('\n', '')) + report(testcase, start_date, stop_date, criteria, details_doc) + def main(): test_level = sys.argv[1] test_name = sys.argv[2] - posca_run(test_level, test_name) + REPORT = sys.argv[3] + posca_run(test_level, test_name, REPORT) if __name__ == '__main__': -- cgit 1.2.3-korg