All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alexandre Belloni" <alexandre.belloni@bootlin.com>
To: Saul Wold <Saul.Wold@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH 2/3] oeqa/dump.py: Add support for QMP command arguments
Date: Wed, 30 Jun 2021 21:52:48 +0200	[thread overview]
Message-ID: <YNzLkLTOrICDIM7q@piout.net> (raw)
In-Reply-To: <20210629145703.979269-2-saul.wold@windriver.com>

Hello Saul,

On 29/06/2021 07:57:02-0700, Saul Wold wrote:
> Need to ensure that the dump_dir is created correctly and available
> When command arguemnts are passed construct a filename if needed and
> convert the arguements to a json object to pass to QMP.
> 
> Signed-off-by: Saul Wold <saul.wold@windriver.com>
> ---
>  meta/lib/oeqa/targetcontrol.py |  2 ++
>  meta/lib/oeqa/utils/dump.py    | 23 ++++++++++++++++++-----
>  2 files changed, 20 insertions(+), 5 deletions(-)
> 
> diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
> index 005ebaa7f39..5b925e4fa4f 100644
> --- a/meta/lib/oeqa/targetcontrol.py
> +++ b/meta/lib/oeqa/targetcontrol.py
> @@ -152,6 +152,8 @@ class QemuTarget(BaseTarget):
>  
>          self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner)
>          self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner)
> +        if (self.monitor_dumper):
> +            self.host_dumper.create_dir("qmp")
>  

This seems to fail:
2021-06-30 01:10:20,391 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/home/pokybuild/yocto-worker/qemux86/build/meta/lib/oeqa/selftest/cases/gcc.py", line 151, in test_libitm
    self.run_check_emulated("libitm")
  File "/home/pokybuild/yocto-worker/qemux86/build/meta/lib/oeqa/selftest/cases/gcc.py", line 72, in run_check_emulated
    with runqemu("core-image-minimal", runqemuparams = "nographic") as qemu:
  File "/usr/lib64/python3.6/contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "/home/pokybuild/yocto-worker/qemux86/build/meta/lib/oeqa/utils/commands.py", line 340, in runqemu
    qemu = oeqa.targetcontrol.QemuTarget(recipedata, targetlogger, image_fstype)
  File "/home/pokybuild/yocto-worker/qemux86/build/meta/lib/oeqa/targetcontrol.py", line 156, in __init__
    self.host_dumper.create_dir("qmp")
AttributeError: 'QemuTarget' object has no attribute 'host_dumper'

https://autobuilder.yoctoproject.org/typhoon/#/builders/59/builds/3602/steps/18/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/2260/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/2237/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/2239/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/87/builds/2274/steps/14/logs/stdio


>      def deploy(self):
>          bb.utils.mkdirhier(self.testdir)
> diff --git a/meta/lib/oeqa/utils/dump.py b/meta/lib/oeqa/utils/dump.py
> index 843e19fe8a6..bb067f48462 100644
> --- a/meta/lib/oeqa/utils/dump.py
> +++ b/meta/lib/oeqa/utils/dump.py
> @@ -18,6 +18,7 @@ class BaseDumper(object):
>          # Some testing doesn't inherit testimage, so it is needed
>          # to set some defaults.
>          self.parent_dir = parent_dir
> +        self.dump_dir = parent_dir
>          dft_cmds = """  top -bn1
>                          iostat -x -z -N -d -p ALL 20 2
>                          ps -ef
> @@ -47,7 +48,7 @@ class BaseDumper(object):
>                  raise err
>          self.dump_dir = dump_dir
>  
> -    def _write_dump(self, command, output):
> +    def _construct_filename(self, command):
>          if isinstance(self, HostDumper):
>              prefix = "host"
>          elif isinstance(self, TargetDumper):
> @@ -61,6 +62,10 @@ class BaseDumper(object):
>              fullname = os.path.join(self.dump_dir, filename)
>              if not os.path.exists(fullname):
>                  break
> +        return fullname
> +
> +    def _write_dump(self, command, output):
> +        fullname = self._construct_filename(command)
>          if isinstance(self, MonitorDumper):
>              with open(fullname, 'w') as json_file:
>                  json.dump(output, json_file, indent=4)
> @@ -117,8 +122,16 @@ class MonitorDumper(BaseDumper):
>          if dump_dir:
>              self.dump_dir = dump_dir
>          for cmd in self.cmds:
> +            cmd_name = cmd.split()[0]
>              try:
> -                output = self.runner.run_monitor(cmd)
> -                self._write_dump(cmd, output)
> -            except:
> -                print("Failed to dump QMP CMD: %s" % (cmd))
> +                if len(cmd.split()) > 1:
> +                    cmd_args = cmd.split()[1]
> +                    if "%s" in cmd_args:
> +                        filename = self._construct_filename(cmd_name)
> +                    cmd_data = json.loads(cmd_args % (filename))
> +                    output = self.runner.run_monitor(cmd_name, cmd_data)
> +                else:
> +                    output = self.runner.run_monitor(cmd_name)
> +                self._write_dump(cmd_name, output)
> +            except Exception as e:
> +                print("Failed to dump QMP CMD: %s with\nExecption: %s" % (cmd_name, e))
> -- 
> 2.25.1
> 

> 
> 
> 


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2021-06-30 19:52 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-29 14:57 [PATCH 1/3] oeqa/qemurunner: add support qmp cmd args Saul Wold
2021-06-29 14:57 ` [PATCH 2/3] oeqa/dump.py: Add support for QMP command arguments Saul Wold
2021-06-30 19:52   ` Alexandre Belloni [this message]
2021-06-29 14:57 ` [PATCH 3/3] testimage.bbclass: Add dump-guest-memory cmd Saul Wold

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YNzLkLTOrICDIM7q@piout.net \
    --to=alexandre.belloni@bootlin.com \
    --cc=Saul.Wold@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.