Browse Source

tests: Generate a tarball of test results if a test fails

This makes it easier to collect failure data from test servers for
further analysis.

Signed-hostap: Jouni Malinen <j@w1.fi>
Jouni Malinen 12 years ago
parent
commit
f59a10d405
2 changed files with 12 additions and 1 deletions
  1. 3 1
      tests/hwsim/run-all.sh
  2. 9 0
      tests/hwsim/run-tests.py

+ 3 - 1
tests/hwsim/run-all.sh

@@ -3,8 +3,10 @@
 errors=0
 umask 0002
 ./start.sh
-./run-tests.py || errors=1
+DATE=`ls -1tr logs | tail -1 | cut -f1 -d-`
+./run-tests.py -e logs/$DATE-failed || errors=1
 ./stop-wifi.sh
 if [ $errors -gt 0 ]; then
+    tar czf /tmp/hwsim-tests-$DATE-FAILED.tar.gz logs/$DATE*
     exit 1
 fi

+ 9 - 0
tests/hwsim/run-tests.py

@@ -25,6 +25,7 @@ def reset_devs(dev, apdev):
 
 def main():
     test_file = None
+    error_file = None
     idx = 1
     if len(sys.argv) > 1 and sys.argv[1] == '-d':
         logging.basicConfig(level=logging.DEBUG)
@@ -35,6 +36,10 @@ def main():
     else:
         logging.basicConfig(level=logging.INFO)
 
+    if len(sys.argv) > idx + 1 and sys.argv[idx] == '-e':
+        error_file = sys.argv[idx + 1]
+        idx = idx + 2
+
     if len(sys.argv) > idx + 1 and sys.argv[idx] == '-f':
         test_file = sys.argv[idx + 1]
         idx = idx + 2
@@ -107,6 +112,10 @@ def main():
     if len(failed):
         print "passed " + str(len(passed)) + " test case(s)"
         print "failed tests: " + str(failed)
+        if error_file:
+            f = open(error_file, 'w')
+            f.write(str(failed) + '\n')
+            f.close()
         sys.exit(1)
     print "passed all " + str(len(passed)) + " test case(s)"