]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: Use logger.exception to dump full traceback
authorBenjamin Berg <benjamin.berg@intel.com>
Wed, 18 Jun 2025 12:22:04 +0000 (14:22 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 21 Jun 2025 08:54:46 +0000 (11:54 +0300)
The log sometimes does not contain relevant information. Switch to use
logger.exception which dumps the full exception information. Note that
the logging happens with level ERROR, so it will be dumped to the
stdout/stderr by default.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
tests/hwsim/run-tests.py

index ea00316ee989bf7d39e63e57ec3b60838f6007cd..eafec247970d1c30f68833200810d72b604e85f5 100755 (executable)
@@ -49,8 +49,7 @@ def reset_devs(dev, apdev):
         try:
             d.reset()
         except Exception as e:
-            logger.info("Failed to reset device " + d.ifname)
-            print(str(e))
+            logger.exception("Failed to reset device " + d.ifname)
             ok = False
 
     wpas = None
@@ -75,8 +74,7 @@ def reset_devs(dev, apdev):
                 hapd.remove(iface)
         hapd.remove('as-erp')
     except Exception as e:
-        logger.info("Failed to remove hostapd interface")
-        print(str(e))
+        logger.exception("Failed to remove hostapd interface")
         ok = False
     return ok
 
@@ -94,8 +92,8 @@ def add_log_file(conn, test, run, type, path):
         conn.execute(sql, params)
         conn.commit()
     except Exception as e:
-        print("sqlite: " + str(e))
-        print("sql: %r" % (params, ))
+        logger.exception("sqlite:")
+        logger.error("sql: %r" % (params, ))
 
 def report(conn, prefill, build, commit, run, test, result, duration, logdir,
            sql_commit=True):
@@ -113,8 +111,8 @@ def report(conn, prefill, build, commit, run, test, result, duration, logdir,
             if sql_commit:
                 conn.commit()
         except Exception as e:
-            print("sqlite: " + str(e))
-            print("sql: %r" % (params, ))
+            logger.exception("sqlite:")
+            logger.error("sql: %r" % (params, ))
 
         if result == "FAIL":
             for log in ["log", "log0", "log1", "log2", "log3", "log5",
@@ -213,8 +211,7 @@ def rename_log(logdir, basename, testname, dev):
             dev.relog()
             subprocess.call(['chown', '-f', getpass.getuser(), srcname])
     except Exception as e:
-        logger.info("Failed to rename log files")
-        logger.info(e)
+        logger.exception("Failed to rename log files")
 
 def is_long_duration_test(t):
     return hasattr(t, "long_duration_test") and t.long_duration_test
@@ -377,8 +374,8 @@ def main():
                 try:
                     conn.execute(sql, params)
                 except Exception as e:
-                    print("sqlite: " + str(e))
-                    print("sql: %r" % (params,))
+                    logger.exception("sqlite:")
+                    logger.error("sql: %r" % (params,))
         if conn:
             conn.commit()
             conn.close()
@@ -568,8 +565,7 @@ def main():
                         raise Exception("Global PING failed for {}".format(d.ifname))
                     d.request("NOTE TEST-START " + name)
                 except Exception as e:
-                    logger.info("Failed to issue TEST-START before " + name + " for " + d.ifname)
-                    logger.info(e)
+                    logger.exception("Failed to issue TEST-START before " + name + " for " + d.ifname)
                     print("FAIL " + name + " - could not start test")
                     if conn:
                         conn.close()
@@ -622,17 +618,8 @@ def main():
                 logger.info("Skip test case: %s" % e)
                 skip_reason = e
                 result = "SKIP"
-            except NameError as e:
-                import traceback
-                logger.info(e)
-                traceback.print_exc()
-                result = "FAIL"
             except Exception as e:
-                import traceback
-                logger.info(e)
-                traceback.print_exc()
-                if args.loglevel == logging.WARNING:
-                    print("Exception: " + str(e))
+                logger.exception(f"Exception during test execution: {str(e)}")
                 result = "FAIL"
 
             # Work around some objects having __del__, we really should
@@ -649,8 +636,7 @@ def main():
                     d.dump_monitor()
                     d.request("NOTE TEST-STOP " + name)
                 except Exception as e:
-                    logger.info("Failed to issue TEST-STOP after {} for {}".format(name, d.ifname))
-                    logger.info(e)
+                    logger.exception("Failed to issue TEST-STOP after {} for {}".format(name, d.ifname))
                     result = "FAIL"
             if args.no_reset:
                 print("Leaving devices in current state")
@@ -674,8 +660,7 @@ def main():
             try:
                 hapd = HostapdGlobal()
             except Exception as e:
-                print("Failed to connect to hostapd interface")
-                print(str(e))
+                logger.exception("Failed to connect to hostapd interface")
                 reset_ok = False
                 result = "FAIL"
                 hapd = None