refactor push_result_to_db print thing
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Mon, 22 Aug 2016 10:23:25 +0000 (18:23 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Tue, 23 Aug 2016 07:41:44 +0000 (15:41 +0800)
when Exceptions happen, the print code is too difficult
to understand and maintain, modify to make it clear

jira: FUNCTEST-425

Change-Id: Ie12af989e711df3791167955642f2edf1164b146
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
utils/functest_utils.py

index 807a671..4d5004c 100644 (file)
@@ -214,24 +214,51 @@ def push_results_to_db(project, case_name, logger,
               "build_tag": build_tag, "start_date": test_start,
               "stop_date": test_stop, "details": details}
 
+    error = None
     headers = {'Content-Type': 'application/json'}
     try:
         r = requests.post(url, data=json.dumps(params), headers=headers)
         if logger:
             logger.debug(r)
         r.raise_for_status()
+    except requests.RequestException as exc:
+        if 'r' in locals():
+            error = ("Pushing Result to DB(%s) failed: %s" %
+                     (r.url, r.content))
+        else:
+            error = ("Pushing Result to DB(%s) failed: %s" % (url, exc))
+    except Exception as e:
+        error = ("Error [push_results_to_db("
+                 "DB: '%(db)s', "
+                 "project: '%(project)s', "
+                 "case: '%(case)s', "
+                 "pod: '%(pod)s', "
+                 "version: '%(v)s', "
+                 "scenario: '%(s)s', "
+                 "criteria: '%(c)s', "
+                 "build_tag: '%(t)s', "
+                 "details: '%(d)s')]: "
+                 "%(error)s" %
+                 {
+                     'db': url,
+                     'project': project,
+                     'case': case_name,
+                     'pod': pod_name,
+                     'v': version,
+                     's': scenario,
+                     'c': criteria,
+                     't': build_tag,
+                     'd': details,
+                     'error': e
+                 })
+    finally:
+        if error:
+            if logger:
+                logger.error(error)
+            else:
+                print error
+            return False
         return True
-    except requests.RequestException:
-        if logger:
-            logger.error("Pushing Result to DB(%s) failed: %s" %
-                         (r.url, r.content))
-        return False
-    except Exception, e:
-        print("Error [push_results_to_db('%s', '%s', '%s', '%s',"
-              "'%s', '%s', '%s', '%s', '%s')]:" %
-              (url, project, case_name, pod_name, version,
-               scenario, criteria, build_tag, details)), e
-        return False
 
 
 def get_resolvconf_ns():