diff mbox

[v2] hwsim tests: check kernel messages for warnings/bugs

Message ID 1383555636-17201-1-git-send-email-johannes@sipsolutions.net
State Accepted
Headers show

Commit Message

Johannes Berg Nov. 4, 2013, 9 a.m. UTC
From: Johannes Berg <johannes.berg@intel.com>

When a test passes but the kernel printed warnings, consider
the test to have failed.

Signed-hostap: Johannes Berg <johannes.berg@intel.com>
---
 tests/hwsim/check_kernel.py | 22 ++++++++++++++++++++++
 tests/hwsim/run-tests.py    | 16 +++++++++++++---
 2 files changed, 35 insertions(+), 3 deletions(-)
 create mode 100644 tests/hwsim/check_kernel.py

Comments

Jouni Malinen Nov. 5, 2013, 10:59 a.m. UTC | #1
On Mon, Nov 04, 2013 at 10:00:36AM +0100, Johannes Berg wrote:
> When a test passes but the kernel printed warnings, consider
> the test to have failed.

Thanks, applied.
diff mbox

Patch

diff --git a/tests/hwsim/check_kernel.py b/tests/hwsim/check_kernel.py
new file mode 100644
index 0000000..30f6718
--- /dev/null
+++ b/tests/hwsim/check_kernel.py
@@ -0,0 +1,22 @@ 
+# kernel message checker module
+#
+# Copyright (c) 2013, Intel Corporation
+#
+# Author: Johannes Berg <johannes@sipsolutions.net>
+#
+# This software may be distributed under the terms of the BSD license.
+# See README for more details.
+#
+"""
+Tests for kernel messages to find if there were any issues in them.
+"""
+
+import re
+
+issue = re.compile('(\[[0-9 .]*\] )?(WARNING:|BUG:).*')
+
+def check_kernel(logfile):
+    for line in open(logfile, 'r'):
+        if issue.match(line):
+            return False
+    return True
diff --git a/tests/hwsim/run-tests.py b/tests/hwsim/run-tests.py
index 08706f6..e921d74 100755
--- a/tests/hwsim/run-tests.py
+++ b/tests/hwsim/run-tests.py
@@ -21,6 +21,7 @@  sys.path.append('../../wpaspy')
 
 from wpasupplicant import WpaSupplicant
 from hostapd import HostapdGlobal
+from check_kernel import check_kernel
 
 def reset_devs(dev, apdev):
     hapd = HostapdGlobal()
@@ -286,15 +287,12 @@  def main():
                 else:
                     res = t(dev)
                 if res == "skip":
-                    skipped.append(name)
                     result = "SKIP"
                 else:
-                    passed.append(name)
                     result = "PASS"
             except Exception, e:
                 logger.info(e)
                 result = "FAIL"
-                failed.append(name)
             for d in dev:
                 try:
                     d.request("NOTE TEST-STOP " + name)
@@ -314,6 +312,18 @@  def main():
 
         end = datetime.now()
         diff = end - start
+
+        if result == 'PASS' and args.dmesg:
+            if not check_kernel(os.path.join(args.logdir, name + '.dmesg')):
+                result = 'FAIL'
+
+        if result == 'PASS':
+            passed.append(name)
+        elif result == 'SKIP':
+            skipped.append(name)
+        else:
+            failed.append(name)
+
         report(conn, args.prefill, args.build, args.commit, run, name, result, diff.total_seconds())
         result = "{} {} {} {}".format(result, name, diff.total_seconds(), end)
         logger.info(result)