From: Wainer dos Santos Moschetta <wainersm@redhat.com>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
qemu-devel@nongnu.org, "Willian Rampazzo" <wrampazz@redhat.com>
Cc: robhenry@microsoft.com, mahmoudabdalghany@outlook.com,
aaron@os.amperecomputing.com, cota@braap.org,
Cleber Rosa <crosa@redhat.com>,
kuhn.chenqun@huawei.com
Subject: Re: [PATCH v2 15/21] tests/acceptance: add a new set of tests to exercise plugins
Date: Thu, 11 Feb 2021 15:59:22 -0300 [thread overview]
Message-ID: <76b10b5c-6244-bbd1-d87b-a0d71672f778@redhat.com> (raw)
In-Reply-To: <dab2bc6c-b467-ca6d-c531-f209b3277f4f@amsat.org>
On 2/11/21 7:31 AM, Philippe Mathieu-Daudé wrote:
> On 2/10/21 11:10 PM, Alex Bennée wrote:
>> This is just a simple test to count the instructions executed by a
>> kernel. However a later test will detect a failure condition when
>> icount is enabled.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Message-Id: <20210209182749.31323-7-alex.bennee@linaro.org>
>> ---
>> tests/acceptance/tcg_plugins.py | 103 ++++++++++++++++++++++++++++++++
>> 1 file changed, 103 insertions(+)
>> create mode 100644 tests/acceptance/tcg_plugins.py
> Can you add this file to "TCG Plugins" in MAINTAINERS please?
>
>> diff --git a/tests/acceptance/tcg_plugins.py b/tests/acceptance/tcg_plugins.py
>> new file mode 100644
>> index 0000000000..b512979769
>> --- /dev/null
>> +++ b/tests/acceptance/tcg_plugins.py
>> @@ -0,0 +1,103 @@
>> +# TCG Plugins tests
>> +#
>> +# These are a little more involved than the basic tests run by check-tcg.
>> +#
>> +# Copyright (c) 2021 Linaro
>> +#
>> +# Author:
>> +# Alex Bennée <alex.bennee@linaro.org>
>> +#
>> +# SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +import logging
>> +import time
>> +import tempfile
>> +import mmap
>> +import re
>> +
>> +from boot_linux_console import LinuxKernelTest
>> +
>> +
>> +class PluginKernelBase(LinuxKernelTest):
>> + """
>> + Boots a Linux kernel with a TCG plugin enabled.
>> + """
>> +
>> + timeout = 120
>> + KERNEL_COMMON_COMMAND_LINE = 'printk.time=1 panic=-1 '
>> +
>> + def run_vm(self, kernel_path, kernel_command_line,
>> + plugin, plugin_log, console_pattern, args):
>> +
>> + logger = logging.getLogger('plugin')
>> + start_time = time.time()
>> + vm = self.get_vm()
>> + vm.set_console()
>> + vm.add_args('-kernel', kernel_path,
>> + '-append', kernel_command_line,
>> + '-plugin', plugin,
>> + '-d', 'plugin',
>> + '-D', plugin_log,
>> + '-net', 'none',
>> + '-no-reboot')
>> + if args:
>> + vm.add_args(*args)
>> +
>> + try:
>> + vm.launch()
>> + except:
>> + # fails if plugins not enabled
>> + self.cancel("TCG Plugins not enabled")
> The test could fail for other reasons you want to catch...
>
> We don't have yet the possibility to query the binary if it
> has the plugin feature builtin. Can you add a TODO comment
> so we fix that once we got it?
>
>> +
>> + self.wait_for_console_pattern(console_pattern, vm)
>> + elapsed = time.time() - start_time
>> + logger.info('elapsed time %.2f sec' % elapsed)
>> + # ensure logs are flushed
>> + vm.shutdown()
>> + return elapsed
>> +
>> +
>> +class PluginKernelNormal(PluginKernelBase):
>> +
>> + def _grab_aarch64_kernel(self):
>> + kernel_url = ('http://security.debian.org/'
>> + 'debian-security/pool/updates/main/l/linux-signed-arm64/'
>> + 'linux-image-4.19.0-12-arm64_4.19.152-1_arm64.deb')
>> + kernel_sha1 = '2036c2792f80ac9c4ccaae742b2e0a28385b6010'
>> + kernel_deb = self.fetch_asset(kernel_url, asset_hash=kernel_sha1)
>> + kernel_path = self.extract_from_deb(kernel_deb,
>> + "/boot/vmlinuz-4.19.0-12-arm64")
>> + return kernel_path
>> +
>> + def test_aarch64_virt_insn(self):
>> + """
>> + :avocado: tags=accel:tcg
>> + :avocado: tags=arch:aarch64
>> + :avocado: tags=machine:virt
>> + :avocado: tags=cpu:cortex-a57
>> + """
>> + kernel_path = self._grab_aarch64_kernel()
>> + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
>> + 'console=ttyAMA0')
>> + console_pattern = 'Kernel panic - not syncing: VFS:'
>> +
>> + plugin_log = tempfile.NamedTemporaryFile(mode="r+t", prefix="plugin",
>> + suffix=".log")
>> +
>> + self.run_vm(kernel_path, kernel_command_line,
>> + "tests/plugin/libinsn.so", plugin_log.name,
>> + console_pattern,
>> + args=('-cpu', 'cortex-a53'))
> I had the understanding that by using 'tags=cpu' QEMU would be called
> with "-cpu tags['cpu']". Cleber can you confirm please?
Currently only the 'machine' tag is automatically converted to QEMU
arguments (in tests/acceptance/avocado_qemu/__init__.py::get_vm()).
Having the same behavior for other tags like 'cpu' and 'accel' should be
helpful IMO.
- Wainer
>
>> +
>> + logger = logging.getLogger()
>> +
>> + with plugin_log as lf, \
>> + mmap.mmap(lf.fileno(), 0, access=mmap.ACCESS_READ) as s:
>> +
>> + m = re.search(br"insns: (?P<count>\d+)", s)
>> + if "count" in m.groupdict():
>> + logger.debug("reported %d instructions",
>> + int(m.group("count")))
>> + else:
>> + logger.debug("Failed to find instruction count")
>> + self.fail
>>
> With MAINTAINERS & TODO:
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
> Thanks,
>
> Phil.
>
next prev parent reply other threads:[~2021-02-11 19:17 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-10 22:10 [PATCH v2 00/21] plugins/next pre-PR (hwprofile, regression fixes, icount count fix) Alex Bennée
2021-02-10 22:10 ` [PATCH v2 01/21] hw/virtio/pci: include vdev name in registered PCI sections Alex Bennée
2021-02-10 22:10 ` [PATCH v2 02/21] plugins: add API to return a name for a IO device Alex Bennée
2021-02-10 22:10 ` [PATCH v2 03/21] plugins: new hwprofile plugin Alex Bennée
2021-02-10 22:10 ` [PATCH v2 04/21] contrib: Don't use '#' flag of printf format Alex Bennée
2021-02-10 22:10 ` [PATCH v2 05/21] contrib: Fix some code style problems, ERROR: "foo * bar" should be "foo *bar" Alex Bennée
2021-02-10 22:10 ` [PATCH v2 06/21] contrib: Add spaces around operator Alex Bennée
2021-02-10 22:10 ` [PATCH v2 07/21] contrib: space required after that ',' Alex Bennée
2021-02-10 22:10 ` [PATCH v2 08/21] contrib: Open brace '{' following struct go on the same line Alex Bennée
2021-02-10 22:10 ` [PATCH v2 09/21] accel/tcg/plugin-gen: fix the call signature for inline callbacks Alex Bennée
2021-02-10 22:10 ` [PATCH v2 10/21] exec: Move TranslationBlock typedef to qemu/typedefs.h Alex Bennée
2021-02-11 10:14 ` Philippe Mathieu-Daudé
2021-02-11 10:24 ` Alex Bennée
2021-02-10 22:10 ` [PATCH v2 11/21] accel/tcg: Create io_recompile_replay_branch hook Alex Bennée
2021-02-11 10:12 ` Philippe Mathieu-Daudé
2021-02-10 22:10 ` [PATCH v2 12/21] target/mips: Create mips_io_recompile_replay_branch Alex Bennée
2021-02-11 10:10 ` Philippe Mathieu-Daudé
2021-02-10 22:10 ` [PATCH v2 13/21] target/sh4: Create superh_io_recompile_replay_branch Alex Bennée
2021-02-11 10:13 ` Philippe Mathieu-Daudé
2021-02-10 22:10 ` [PATCH v2 14/21] tests/plugin: expand insn test to detect duplicate instructions Alex Bennée
2021-02-10 22:10 ` [PATCH v2 15/21] tests/acceptance: add a new set of tests to exercise plugins Alex Bennée
2021-02-11 10:31 ` Philippe Mathieu-Daudé
2021-02-11 18:59 ` Wainer dos Santos Moschetta [this message]
2021-02-11 19:51 ` Wainer dos Santos Moschetta
2021-02-10 22:10 ` [PATCH v2 16/21] accel/tcg: actually cache our partial icount TB Alex Bennée
2021-02-11 10:21 ` Philippe Mathieu-Daudé
2021-02-11 18:48 ` Richard Henderson
2021-02-12 15:40 ` Philippe Mathieu-Daudé
2021-02-12 17:06 ` Alex Bennée
2021-02-11 18:48 ` Richard Henderson
2021-02-10 22:10 ` [PATCH v2 17/21] accel/tcg: cache single instruction TB on pending replay exception Alex Bennée
2021-02-11 19:12 ` Richard Henderson
2021-02-11 20:00 ` Alex Bennée
2021-02-10 22:10 ` [PATCH v2 18/21] accel/tcg: re-factor non-RAM execution code Alex Bennée
2021-02-11 19:19 ` Richard Henderson
2021-02-10 22:10 ` [PATCH v2 19/21] accel/tcg: remove CF_NOCACHE and special cases Alex Bennée
2021-02-10 22:10 ` [PATCH v2 20/21] accel/tcg: allow plugin instrumentation to be disable via cflags Alex Bennée
2021-02-12 0:53 ` Aaron Lindsay via
2021-02-12 11:22 ` Alex Bennée
2021-02-12 14:31 ` Aaron Lindsay via
2021-02-12 14:59 ` Alex Bennée
2021-02-12 14:43 ` Alex Bennée
2021-02-12 15:41 ` Aaron Lindsay via
2021-02-12 16:04 ` Alex Bennée
2021-02-12 16:50 ` Aaron Lindsay via
2021-02-12 17:19 ` Alex Bennée
2021-02-16 10:34 ` Alex Bennée
2021-02-17 16:32 ` Aaron Lindsay via
2021-02-12 16:00 ` Alex Bennée
2021-02-12 17:04 ` Aaron Lindsay via
2021-02-10 22:10 ` [PATCH v2 21/21] tests/acceptance: add a new tests to detect counting errors Alex Bennée
2021-02-11 10:24 ` Philippe Mathieu-Daudé
2021-02-11 19:56 ` Wainer dos Santos Moschetta
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=76b10b5c-6244-bbd1-d87b-a0d71672f778@redhat.com \
--to=wainersm@redhat.com \
--cc=aaron@os.amperecomputing.com \
--cc=alex.bennee@linaro.org \
--cc=cota@braap.org \
--cc=crosa@redhat.com \
--cc=f4bug@amsat.org \
--cc=kuhn.chenqun@huawei.com \
--cc=mahmoudabdalghany@outlook.com \
--cc=qemu-devel@nongnu.org \
--cc=robhenry@microsoft.com \
--cc=wrampazz@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).