aboutsummaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oeqa/oetest.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py
index 22d76b35e1..a3f297acf6 100644
--- a/meta/lib/oeqa/oetest.py
+++ b/meta/lib/oeqa/oetest.py
@@ -11,6 +11,7 @@ import os, re, mmap
import unittest
import inspect
import subprocess
+import datetime
import bb
from oeqa.utils.decorators import LogResults
@@ -117,6 +118,42 @@ class oeRuntimeTest(oeTest):
self.target = oeRuntimeTest.tc.target
super(oeRuntimeTest, self).__init__(methodName)
+ def tearDown(self):
+ # If a test fails or there is an exception
+ if (self._resultForDoCleanups.failures or
+ self._resultForDoCleanups.errors):
+ commands = ["top -bn1", "ps", "free", "df", "_ping", "dmesg", "netstat -a", "ifconfig -a", "_logs"]
+ dump_dir = "/tmp/oe-saved-tests"
+ dump_dir = os.path.join(dump_dir,
+ datetime.datetime.now().strftime('%Y%m%d%H%M'))
+ os.makedirs(dump_dir)
+ bb.warn("Test failed, getting data from target "
+ "and saving it in %s" % dump_dir)
+ output = self.run_bulk_commands(commands)
+ for key,msg in output.iteritems():
+ filename = key.split()[0]
+ with open(os.path.join(dump_dir, filename), 'w') as f:
+ f.write(msg)
+
+ def run_bulk_commands(self, commands):
+ all_output = {}
+ for command in commands:
+ # This will ping the host from target
+ if command == "_ping":
+ comm = "ping -c3 %s" % self.target.server_ip
+ # This will get all the logs from /var/log/
+ elif command == "_logs":
+ comm = 'find /var/log/ -type f 2>/dev/null '
+ comm = '%s-exec echo "%s" \\; ' % (comm, '='*20)
+ comm = '%s-exec echo {} \\; ' % comm
+ comm = '%s-exec echo "%s" \\; ' % (comm, '='*20)
+ comm = '%s-exec cat {} \\; -exec echo "" \\;' % comm
+ else:
+ comm = command
+ (status, output) = self.target.run_serial(comm)
+ all_output[command] = output
+ return all_output
+
#TODO: use package_manager.py to install packages on any type of image
def install_packages(self, packagelist):
for package in packagelist: