Mesa (main): ci/lava: Add explicit fatal-error handler

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jun 11 12:47:32 UTC 2021


Module: Mesa
Branch: main
Commit: 82631c7182355de280a6b19deaf8a319de7cc4d1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=82631c7182355de280a6b19deaf8a319de7cc4d1

Author: Daniel Stone <daniels at collabora.com>
Date:   Thu Jun 10 23:45:07 2021 +0100

ci/lava: Add explicit fatal-error handler

Truth is relative in 2021, and Python's duck-typing means truthiness
isn't what you think it is. Use an explicit fatal-error handler to make
sure we crash out hard on failure, rather than hoping sys.exit() behaves
like you think it does, because it doesn't.

Signed-off-by: Daniel Stone <daniels at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11309>

---

 .gitlab-ci/lava/lava_job_submitter.py | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/.gitlab-ci/lava/lava_job_submitter.py b/.gitlab-ci/lava/lava_job_submitter.py
index b10d032a496..81c0b8f1f92 100755
--- a/.gitlab-ci/lava/lava_job_submitter.py
+++ b/.gitlab-ci/lava/lava_job_submitter.py
@@ -39,13 +39,12 @@ from datetime import datetime
 from lavacli.utils import loader
 
 
-def log_msg(msg):
-    return "{}: {}".format(datetime.now(), msg)
-
-
 def print_log(msg):
-    print(log_msg(msg))
+    print("{}: {}".format(datetime.now(), msg))
 
+def fatal_err(msg):
+    print_log(msg)
+    sys.exit(1)
 
 def generate_lava_yaml(args):
     env = jinja2.Environment(loader = jinja2.FileSystemLoader(os.path.dirname(args.template)), trim_blocks=True, lstrip_blocks=True)
@@ -101,13 +100,13 @@ def _call_proxy(fn, *args):
         except xmlrpc.client.ProtocolError as err:
             if n == retries:
                 traceback.print_exc()
-                sys.exit(log_msg("A protocol error occurred (Err {} {})".format(err.errcode, err.errmsg)))
+                fatal_err("A protocol error occurred (Err {} {})".format(err.errcode, err.errmsg))
             else:
                 time.sleep(15)
                 pass
         except xmlrpc.client.Fault as err:
             traceback.print_exc()
-            sys.exit(log_msg("FATAL: Fault: {} (code: {})".format(err.faultString, err.faultCode)))
+            fatal_err("FATAL: Fault: {} (code: {})".format(err.faultString, err.faultCode))
 
 
 def get_job_results(proxy, job_id, test_suite, test_case):
@@ -128,11 +127,11 @@ def get_job_results(proxy, job_id, test_suite, test_case):
     results_yaml = _call_proxy(proxy.results.get_testcase_results_yaml, job_id, test_suite, test_case)
     results = yaml.load(results_yaml, Loader=loader(False))
     if not results:
-        sys.exit(log_msg("LAVA: no result for test_suite '{}', test_case '{}'".format(test_suite, test_case)))
+        fatal_err("LAVA: no result for test_suite '{}', test_case '{}'".format(test_suite, test_case))
 
     print_log("LAVA: result for test_suite '{}', test_case '{}': {}".format(test_suite, test_case, results[0]['result']))
     if results[0]['result'] != 'pass':
-        sys.exit(log_msg("FAIL"))
+        fatal_err("FAIL")
 
     return True
 
@@ -174,7 +173,7 @@ def main(args):
     if args.validate_only:
         ret = validate_job(proxy, yaml_file)
         if not ret:
-            sys.exit(log_msg("Error in LAVA job definition"))
+            fatal_err("Error in LAVA job definition")
         print("LAVA job definition validated successfully")
         return
 



More information about the mesa-commit mailing list