diff options
author | Mariano Lopez <mariano.lopez@linux.intel.com> | 2015-08-24 19:04:02 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-08-30 12:34:40 +0100 |
commit | ad10af6be343b5425fde43055263b0744c161cb3 (patch) | |
tree | 0b1dd2981e31d5704e8fb2d3abefa5124bf4dba0 /meta/lib/oeqa/utils | |
parent | 6ca7f5c0d0f024ae5d21368188e3428534cab2a4 (diff) | |
download | openembedded-core-ad10af6be343b5425fde43055263b0744c161cb3.tar.gz openembedded-core-ad10af6be343b5425fde43055263b0744c161cb3.tar.bz2 openembedded-core-ad10af6be343b5425fde43055263b0744c161cb3.zip |
dump: Created new classes for dump host and target
It makes sense to separate the dump commands from the
oeRuntimeTest class, this way it can be used in all
the test context.
These are the changes included in this patch:
- Created classes: BaseDumper, HostDumper, TargetDumper
- Create an instance of HostDumper in imagetest.bbclass
and add it to TestContext class, this way any class
that have access to the TestContext would be able
to dump logs from the host
- Create an instance of TargetDumper in QemuTarget
class after get the runner, this way it is
accessible during the tests.
[YOCTO #8118]
Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Diffstat (limited to 'meta/lib/oeqa/utils')
-rw-r--r-- | meta/lib/oeqa/utils/dump.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/meta/lib/oeqa/utils/dump.py b/meta/lib/oeqa/utils/dump.py new file mode 100644 index 0000000000..a0fa699a27 --- /dev/null +++ b/meta/lib/oeqa/utils/dump.py @@ -0,0 +1,77 @@ +import os +import sys +import errno +import datetime +import itertools +from commands import runCmd + +def get_host_dumper(d): + return HostDumper(d) + + +class BaseDumper(object): + + def __init__(self, d): + self.parent_dir = d.getVar("TESTIMAGE_DUMP_DIR", True) + + def create_dir(self, dir_suffix): + dump_subdir = ("%s_%s" % ( + datetime.datetime.now().strftime('%Y%m%d%H%M'), + dir_suffix)) + dump_dir = os.path.join(self.parent_dir, dump_subdir) + try: + os.makedirs(dump_dir) + except OSError as err: + if err.errno != errno.EEXIST: + raise err + self.dump_dir = dump_dir + + def write_dump(self, command, output): + if isinstance(self, HostDumper): + prefix = "host" + elif isinstance(self, TargetDumper): + prefix = "target" + else: + prefix = "unknown" + for i in itertools.count(): + filename = "%s_%02d_%s" % (prefix, i, command) + fullname = os.path.join(self.dump_dir, filename) + if not os.path.exists(fullname): + break + with open(fullname, 'w') as dump_file: + dump_file.write(output) + + +class HostDumper(BaseDumper): + + def __init__(self, d): + super(HostDumper, self).__init__(d) + self.host_cmds = d.getVar("testimage_dump_host", True) + + def dump_host(self, dump_dir=""): + if dump_dir: + self.dump_dir = dump_dir + for cmd in self.host_cmds.split('\n'): + cmd = cmd.lstrip() + if not cmd or cmd[0] == '#': + continue + result = runCmd(cmd, ignore_status=True) + self.write_dump(cmd.split()[0], result.output) + + +class TargetDumper(BaseDumper): + + def __init__(self, d, qemurunner): + super(TargetDumper, self).__init__(d) + self.target_cmds = d.getVar("testimage_dump_target", True) + self.runner = qemurunner + + def dump_target(self, dump_dir=""): + if dump_dir: + self.dump_dir = dump_dir + for cmd in self.target_cmds.split('\n'): + cmd = cmd.lstrip() + if not cmd or cmd[0] == '#': + continue + (status, output) = self.runner.run_serial(cmd) + self.write_dump(cmd.split()[0], output) |