From: Kevin Wolf <kwolf@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com,
den@openvz.org, jsnow@redhat.com
Subject: Re: [PATCH v7 09/11] iotests: add testrunner.py
Date: Fri, 22 Jan 2021 15:11:32 +0100 [thread overview]
Message-ID: <20210122141132.GG15866@merkur.fritz.box> (raw)
In-Reply-To: <20210116134424.82867-10-vsementsov@virtuozzo.com>
Am 16.01.2021 um 14:44 hat Vladimir Sementsov-Ogievskiy geschrieben:
> Add TestRunner class, which will run tests in a new python iotests
> running framework.
>
> There are some differences with current ./check behavior, most
> significant are:
> - Consider all tests self-executable, just run them, don't run python
> by hand.
> - Elapsed time is cached in json file
> - Elapsed time precision increased a bit
> - use python difflib instead of "diff -w", to ignore spaces at line
> ends strip lines by hand. Do not ignore other spaces.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
> tests/qemu-iotests/testrunner.py | 344 +++++++++++++++++++++++++++++++
> 1 file changed, 344 insertions(+)
> create mode 100644 tests/qemu-iotests/testrunner.py
> +TestResult = collections.namedtuple(
> + 'TestResult',
> + ['status', 'description', 'elapsed', 'diff', 'casenotrun'],
> + defaults=('', '', '', ''))
defaults was only introduced in Python 3.7, it seems.
Why not use a normal class? I don't think we need the elements to be
iterable or indexable?
> +
> +class TestRunner(AbstractContextManager['TestRunner']):
> + def __init__(self, env: TestEnv, makecheck: bool = False) -> None:
> + self.env = env
> + self.test_run_env = self.env.get_env()
> + if 'MALLOC_PERTURB_' not in os.environ and \
> + 'MALLOC_PERTURB_' not in self.test_run_env:
'MALLOC_PERTURB_' is not in TestEnv.env_variables, so it will never be
in self.test_run_env here.
> + x = random.randrange(1, 255)
> + self.test_run_env['MALLOC_PERTURB_'] = str(x)
> +
> + self.makecheck = makecheck
> +
> + self.last_elapsed = LastElapsedTime('.last-elapsed-cache', env)
> +
> + def __enter__(self) -> 'TestRunner':
> + # pylint: disable=attribute-defined-outside-init
You can avoid this by declaring the attribute in __init__ without
initialising it yet:
self._stack: contextlib.ExitStack
> + self._stack = contextlib.ExitStack()
> + self._stack.enter_context(self.env)
> + self._stack.enter_context(self.last_elapsed)
> + self._stack.enter_context(savetty())
> + return self
Kevin
next prev parent reply other threads:[~2021-01-22 14:13 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-16 13:44 [PATCH v7 00/11] Rework iotests/check Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 01/11] iotests/277: use dot slash for nbd-fault-injector.py running Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 02/11] iotests/303: use dot slash for qcow2.py running Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 03/11] iotests: fix some whitespaces in test output files Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 04/11] iotests: make tests executable Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 05/11] iotests/294: add shebang line Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 06/11] iotests: define group in each iotest Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 07/11] iotests: add findtests.py Vladimir Sementsov-Ogievskiy
2021-01-21 16:18 ` Eric Blake
2021-01-21 16:21 ` Eric Blake
2021-01-21 16:57 ` Vladimir Sementsov-Ogievskiy
2021-01-22 11:48 ` Kevin Wolf
2021-01-22 11:57 ` Vladimir Sementsov-Ogievskiy
2021-01-22 12:45 ` Kevin Wolf
2021-01-22 13:16 ` Vladimir Sementsov-Ogievskiy
2021-01-22 13:34 ` Kevin Wolf
2021-01-22 13:52 ` Vladimir Sementsov-Ogievskiy
2021-01-22 11:49 ` Kevin Wolf
2021-01-22 11:59 ` Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 08/11] iotests: add testenv.py Vladimir Sementsov-Ogievskiy
2021-01-21 16:48 ` Eric Blake
2021-01-21 17:03 ` Vladimir Sementsov-Ogievskiy
2021-01-22 14:34 ` Kevin Wolf
2021-01-16 13:44 ` [PATCH v7 09/11] iotests: add testrunner.py Vladimir Sementsov-Ogievskiy
2021-01-21 17:02 ` Eric Blake
2021-01-21 17:17 ` Vladimir Sementsov-Ogievskiy
2021-01-22 14:11 ` Kevin Wolf [this message]
2021-01-22 14:22 ` Vladimir Sementsov-Ogievskiy
2021-01-22 14:51 ` Kevin Wolf
2021-01-22 15:01 ` Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 10/11] iotests: rewrite check into python Vladimir Sementsov-Ogievskiy
2021-01-21 17:22 ` Eric Blake
2021-01-22 13:53 ` Vladimir Sementsov-Ogievskiy
2021-01-22 16:08 ` Kevin Wolf
2021-01-23 15:08 ` Vladimir Sementsov-Ogievskiy
2021-01-25 12:02 ` Kevin Wolf
2021-01-25 12:31 ` Vladimir Sementsov-Ogievskiy
2021-01-16 13:44 ` [PATCH v7 11/11] iotests: rename and move 169 and 199 tests Vladimir Sementsov-Ogievskiy
2021-01-20 20:52 ` [PATCH v7 00/11] Rework iotests/check Eric Blake
2021-01-22 11:27 ` Kevin Wolf
2021-01-22 11:32 ` Vladimir Sementsov-Ogievskiy
2021-01-22 16:08 ` Eric Blake
2021-01-22 16:18 ` Kevin Wolf
2021-01-21 15:08 ` Paolo Bonzini
2021-01-22 16:16 ` Kevin Wolf
2021-01-23 15:14 ` Vladimir Sementsov-Ogievskiy
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=20210122141132.GG15866@merkur.fritz.box \
--to=kwolf@redhat.com \
--cc=den@openvz.org \
--cc=jsnow@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=vsementsov@virtuozzo.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).