1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

oetest.py: Added method tearDown for oeRuntimeTest

The tearDown method is triggered when a tests ends
it doesn't matter if fails or succeeds. Inside this
method added an evalution to check if fails and then
run some commands in the target to get the data for
later debugging.

[YOCTO #8118]

(From OE-Core rev: 8bbfef69828d9b053e2a33dfa9d8318d9572cf6b)

Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Mariano Lopez
2015-08-12 10:58:53 +00:00
committed by Richard Purdie
parent 51d8e8fb37
commit 9c72c1a5aa
+37
View File
@@ -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: