make mongo_to_elasticsearch.py skip resolve-failed results 85/20285/1
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Mon, 5 Sep 2016 02:11:21 +0000 (10:11 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Mon, 5 Sep 2016 02:11:21 +0000 (10:11 +0800)
mongo_to_elasticsearch.py exit when encounter can-not-be-parsed results,
for example:
File "mongo_to_elasticsearch.py", line 58, in _convert_duration
hours, minutes, seconds = duration.split(":")
ValueError: need more than 2 values to unpack

File "mongo_to_elasticsearch.py", line 228, in modify_functest_odl
test_statuses = _get_dicts_from_list(testcase, testcase['details']['details'],
KeyError: 'details'

change the logic, try...Except the Exception, logger it as error, then
continue processing the rest results

Change-Id: I18facd457ba3e8f661f5c9a1da1e6c200af6fc4e
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
utils/test/scripts/mongo_to_elasticsearch.py

index 2ffbc17..ded58ef 100644 (file)
@@ -1,13 +1,16 @@
 #! /usr/bin/env python
-import logging
-import argparse
-import shared_utils
+import datetime
 import json
-import urlparse
-import uuid
+import logging
 import os
 import subprocess
-import datetime
+import traceback
+import urlparse
+import uuid
+
+import argparse
+
+import shared_utils
 
 logger = logging.getLogger('mongo_to_elasticsearch')
 logger.setLevel(logging.DEBUG)
@@ -370,18 +373,21 @@ def modify_mongo_entry(testcase):
         project = testcase['project_name']
         case_name = testcase['case_name']
         logger.info("Processing mongo test case '{}'".format(case_name))
-        if project == 'functest':
-            if case_name == 'rally_sanity':
-                return modify_functest_rally(testcase)
-            elif case_name.lower() == 'odl':
-                return modify_functest_odl(testcase)
-            elif case_name.lower() == 'onos':
-                return modify_functest_onos(testcase)
-            elif case_name.lower() == 'vims':
-                return modify_functest_vims(testcase)
-            elif case_name == 'tempest_smoke_serial':
-                return modify_functest_tempest(testcase)
-        return modify_default_entry(testcase)
+        try:
+            if project == 'functest':
+                if case_name == 'rally_sanity':
+                    return modify_functest_rally(testcase)
+                elif case_name.lower() == 'odl':
+                    return modify_functest_odl(testcase)
+                elif case_name.lower() == 'onos':
+                    return modify_functest_onos(testcase)
+                elif case_name.lower() == 'vims':
+                    return modify_functest_vims(testcase)
+                elif case_name == 'tempest_smoke_serial':
+                    return modify_functest_tempest(testcase)
+            return modify_default_entry(testcase)
+        except Exception:
+            logger.error("Fail in modify testcase[%s]\nerror message: %s" % (testcase, traceback.format_exc()))
     else:
         return False