test suite reviews and discussions
 help / color / mirror / Atom feed
From: Marvin Liu <yong.liu@intel.com>
To: dts@dpdk.org
Cc: Marvin Liu <yong.liu@intel.com>
Subject: [dts] [PATCH 2/2] framework dts: report error in execution process
Date: Thu, 29 Dec 2016 16:09:47 +0800	[thread overview]
Message-ID: <1482998987-21640-2-git-send-email-yong.liu@intel.com> (raw)
In-Reply-To: <1482998987-21640-1-git-send-email-yong.liu@intel.com>

Add error report in execution process, now framework report
build/setup/execution/generic errors. When those types of error
happened, system exit value will be changed as pre-defined value in
settings module.

Signed-off-by: Marvin Liu <yong.liu@intel.com>

diff --git a/framework/dts.py b/framework/dts.py
index e9879e5..369599d 100644
--- a/framework/dts.py
+++ b/framework/dts.py
@@ -51,7 +51,6 @@ from test_case import TestCase
 from test_result import Result
 from stats_reporter import StatsReporter
 from excel_reporter import ExcelReporter
-import utils
 from exception import TimeoutException, ConfigParseException, VerifyFailure
 from logger import getLogger
 import logger
@@ -316,6 +315,14 @@ def dts_run_prerequisties(duts, tester, pkgName, patch, dts_commands, serializer
         dts_run_commands(tester, dts_commands)
         tester.prerequisites()
         dts_run_commands(tester, dts_commands)
+    except Exception as ex:
+        log_handler.error(" PREREQ EXCEPTION " + traceback.format_exc())
+        log_handler.info('CACHE: Discarding cache.')
+        serializer.discard_cache()
+        settings.report_error("TESTER_SETUP_ERR")
+        return False
+
+    try:
         for dutobj in duts:
             dutobj.set_package(pkgName, patch)
             dutobj.prerequisites()
@@ -327,6 +334,7 @@ def dts_run_prerequisties(duts, tester, pkgName, patch, dts_commands, serializer
         result.add_failed_dut(duts[0], str(ex))
         log_handler.info('CACHE: Discarding cache.')
         serializer.discard_cache()
+        settings.report_error("DUT_SETUP_ERR")
         return False
 
 
@@ -348,9 +356,11 @@ def dts_run_target(duts, tester, targets, test_suites):
                     dutobj.set_target(target)
         except AssertionError as ex:
             log_handler.error(" TARGET ERROR: " + str(ex))
+            settings.report_error("DPDK_BUILD_ERR")
             result.add_failed_target(result.dut, target, str(ex))
             continue
         except Exception as ex:
+            settings.report_error("GENERIC_ERR")
             log_handler.error(" !!! DEBUG IT: " + traceback.format_exc())
             result.add_failed_target(result.dut, target, str(ex))
             continue
@@ -395,6 +405,7 @@ def dts_run_suite(duts, tester, test_suites, target):
                 log_handler.info("\nTEST SUITE ENDED: " + test_classname)
                 dts_log_execution(duts, tester, log_handler)
         except VerifyFailure:
+            settings.report_error("SUITE_EXECUTE_ERR")
             log_handler.error(" !!! DEBUG IT: " + traceback.format_exc())
         except KeyboardInterrupt:
             # stop/save result/skip execution
@@ -403,6 +414,7 @@ def dts_run_suite(duts, tester, test_suites, target):
             save_all_results()
             break
         except Exception as e:
+            settings.report_error("GENERIC_ERR")
             log_handler.error(str(e))
         finally:
             suite_obj.execute_tear_downall()
@@ -510,7 +522,7 @@ def run_all(config_file, pkgName, git, patch, skip_setup,
         duts, tester = dts_crbs_init(crbInsts, skip_setup, read_cache, project, base_dir, serializer, virttype)
 
         # register exit action
-        atexit.register(close_all_sessions, duts, tester)
+        atexit.register(quit_execution, duts, tester)
 
         check_case_inst = check_case_skip(duts[0])
         support_case_inst = check_case_support(duts[0])
@@ -547,9 +559,10 @@ def save_all_results():
     stats_report.save(result)
 
 
-def close_all_sessions(duts, tester):
+def quit_execution(duts, tester):
     """
-    Close session to DUT and tester.
+    Close session to DUT and tester before quit.
+    Return exit status when failure occurred.
     """
     # close all nics
     for dutobj in duts:
@@ -562,3 +575,6 @@ def close_all_sessions(duts, tester):
     if tester is not None:
         tester.close()
     log_handler.info("DTS ended")
+
+    # return value
+    settings.exit_error()
-- 
1.9.3

  reply	other threads:[~2016-12-29  8:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-29  8:09 [dts] [PATCH 1/2] framework settings: add support for global error status Marvin Liu
2016-12-29  8:09 ` Marvin Liu [this message]
2017-01-04  3:31 ` Liu, Yong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1482998987-21640-2-git-send-email-yong.liu@intel.com \
    --to=yong.liu@intel.com \
    --cc=dts@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).