Add exec right
[functest.git] / testcases / Controllers / ODL / odlreport2db.py
index 075de5a..6b3fb91 100644 (file)
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 #
-# 0.1: This script boots the VM1 and allocates IP address from Nova
-# 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: adapt push 2 DB after Test API refacroting
-#
-#
 
 import getopt
 import json
@@ -33,13 +26,8 @@ import functest.utils.functest_utils as functest_utils
 
 def usage():
     print """Usage:
-    python odlreport2db.py --xml=<output.xml> --pod=<pod name>
-                           --installer=<installer> --database=<database url>
-                           --scenario=<scenario>
+    python odlreport2db.py --xml=<output.xml> --help
     -x, --xml   xml file generated by robot test
-    -p, --pod   POD name where the test come from
-    -i, --installer
-    -s, --scenario
     -h, --help  this message
     """
     sys.exit(2)
@@ -47,9 +35,11 @@ def usage():
 
 def populate_detail(test):
     detail = {}
-    detail['test_name'] = test['@name']
-    detail['test_status'] = test['status']
-    detail['test_doc'] = test['doc']
+    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
 
 
@@ -66,42 +56,35 @@ def parse_test(tests, details):
 def parse_suites(suites):
     data = {}
     details = []
-    try:
-        for suite in suites:
-            data['details'] = parse_test(suite['test'], details)
-    except TypeError:
-        # suites is not iterable
-        data['details'] = parse_test(suites['test'], 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, pod, installer, scenario) = None, None, None, None
+    xml_file = None
     try:
         opts, args = getopt.getopt(argv,
-                                   'x:p:i:s:h',
-                                   ['xml=', 'pod=',
-                                    'installer=',
-                                    'scenario=',
-                                    'help'])
+                                   'x:h',
+                                   ['xml=', 'help'])
     except getopt.GetoptError:
         usage()
 
     for opt, arg in opts:
-        if opt in ('-h', '--help'):
-            usage()
-        elif opt in ('-x', '--xml'):
+        if opt in ('-x', '--xml'):
             xml_file = arg
-        elif opt in ('-p', '--pod'):
-            pod = arg
-        elif opt in ('-i', '--installer'):
-            installer = arg
-        elif opt in ('-s', '--scenario'):
-            scenario = arg
         else:
             usage()
 
-    if not all(x is not None for x in (xml_file, pod, installer, scenario)):
+    if xml_file is None:
         usage()
 
     with open(xml_file, "r") as myfile:
@@ -113,20 +96,10 @@ def main(argv):
     try:
         data = parse_suites(all_data['suite']['suite'])
         data['description'] = all_data['suite']['@name']
-        data['version'] = all_data['@generator']
-        data['test_project'] = "functest"
-        data['case_name'] = "ODL"
-        data['pod_name'] = pod
-        data['installer'] = installer
+        data['generator'] = all_data['@generator']
 
         json.dumps(data, indent=4, separators=(',', ': '))
 
-        # example:
-        # python odlreport2db.py -x ~/Pictures/Perso/odl/output3.xml
-        #                        -i fuel
-        #                        -p opnfv-jump-2
-        #                        -s os-odl_l2-ha
-
         # success criteria for ODL = 100% of tests OK
         status = "FAIL"
         # TODO as part of the tests are executed before in the bash
@@ -135,8 +108,8 @@ def main(argv):
         stop_time = start_time
         tests_passed = 0
         tests_failed = 0
-        for v in data['details']:
-            if v['test_status']['@status'] == "PASS":
+        for v in data['tests']:
+            if v['status'] == "PASS":
                 tests_passed += 1
             else:
                 tests_failed += 1
@@ -145,7 +118,7 @@ def main(argv):
             status = "PASS"
 
         functest_utils.push_results_to_db("functest",
-                                          data['case_name'],
+                                          "odl",
                                           None,
                                           start_time,
                                           stop_time,