From a868e1bb75987119c87112d08a194564d84b53ee Mon Sep 17 00:00:00 2001 From: Cédric Ollivier Date: Fri, 19 Aug 2016 17:39:50 +0200 Subject: Add reporting to DB in OpenDaylightTesting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It now relies on Robotframework API instead of parsing output.xml. The type of critical and elapsedime fields are now bool and int respectively. start_date and stop_date has been fixed too. JIRA: FUNCTEST-367 Change-Id: I59f3ad2109345395ccf01a714301a14f9323f088 Signed-off-by: Cédric Ollivier --- testcases/Controllers/ODL/odlreport2db.py | 133 ------------------------------ 1 file changed, 133 deletions(-) delete mode 100644 testcases/Controllers/ODL/odlreport2db.py (limited to 'testcases/Controllers/ODL/odlreport2db.py') diff --git a/testcases/Controllers/ODL/odlreport2db.py b/testcases/Controllers/ODL/odlreport2db.py deleted file mode 100644 index 6b3fb913d..000000000 --- a/testcases/Controllers/ODL/odlreport2db.py +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/python -# -# Authors: -# - peter.bandzi@cisco.com -# - morgan.richomme@orange.com -# -# src: Peter Bandzi -# https://github.com/pbandzi/parse-robot/blob/master/convert_robot_to_json.py -# -# Copyright (c) 2015 All rights reserved -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# - -import getopt -import json -import sys -import time -import xmltodict - -import functest.utils.functest_utils as functest_utils - - -def usage(): - print """Usage: - python odlreport2db.py --xml= --help - -x, --xml xml file generated by robot test - -h, --help this message - """ - sys.exit(2) - - -def populate_detail(test): - detail = {} - detail['name'] = test['@name'] - for x in ['status', 'critical', 'starttime', 'endtime']: - detail[x] = test['status']['@' + x] - if '#text' in test['status']: - detail['text'] = test['status']['#text'] - return detail - - -def parse_test(tests, details): - try: - for test in tests: - details.append(populate_detail(test)) - except TypeError: - # tests is not iterable - details.append(populate_detail(tests)) - return details - - -def parse_suites(suites): - data = {} - details = [] - for suite in suites: - a = suite['suite'] - if type(a) == list: - for b in a: - data['tests'] = parse_test(b['test'], details) - else: - data['tests'] = parse_test(a['test'], details) - - # data['details'] = parse_test(suite['test'], details) - # suites is not iterable - return data - - -def main(argv): - xml_file = None - try: - opts, args = getopt.getopt(argv, - 'x:h', - ['xml=', 'help']) - except getopt.GetoptError: - usage() - - for opt, arg in opts: - if opt in ('-x', '--xml'): - xml_file = arg - else: - usage() - - if xml_file is None: - usage() - - with open(xml_file, "r") as myfile: - xml_input = myfile.read().replace('\n', '') - - # dictionary populated with data from xml file - all_data = xmltodict.parse(xml_input)['robot'] - - try: - data = parse_suites(all_data['suite']['suite']) - data['description'] = all_data['suite']['@name'] - data['generator'] = all_data['@generator'] - - json.dumps(data, indent=4, separators=(',', ': ')) - - # success criteria for ODL = 100% of tests OK - status = "FAIL" - # TODO as part of the tests are executed before in the bash - # start and stoptime have no real meaning - start_time = time.time() - stop_time = start_time - tests_passed = 0 - tests_failed = 0 - for v in data['tests']: - if v['status'] == "PASS": - tests_passed += 1 - else: - tests_failed += 1 - - if (tests_failed < 1): - status = "PASS" - - functest_utils.push_results_to_db("functest", - "odl", - None, - start_time, - stop_time, - status, - data) - - except: - print("Error pushing ODL results into DB '%s'" % sys.exc_info()[0]) - - -if __name__ == "__main__": - main(sys.argv[1:]) -- cgit 1.2.3-korg