summaryrefslogtreecommitdiffstats
path: root/testcases/Controllers/ODL/odlreport2db.py
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2016-08-19 17:39:50 +0200
committerCédric Ollivier <cedric.ollivier@orange.com>2016-08-19 18:14:26 +0200
commita868e1bb75987119c87112d08a194564d84b53ee (patch)
treea58ce2868a5fddeb9b967e3226f7812672e199f0 /testcases/Controllers/ODL/odlreport2db.py
parent9b830f30a6e93643e4aa1312f9439e34f2d74530 (diff)
Add reporting to DB in OpenDaylightTesting
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 <cedric.ollivier@orange.com>
Diffstat (limited to 'testcases/Controllers/ODL/odlreport2db.py')
-rw-r--r--testcases/Controllers/ODL/odlreport2db.py133
1 files changed, 0 insertions, 133 deletions
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=<output.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:])